There are some useful resources via openmp.org.
After 10 years of learning to use OpenMP, the best advice I have is to include the equivalent compiler options when compiling:
-fopenmp -fimplicit-none -fstack-arrays.
Explicitly managing SHARED vs PRIVATE arrays between threads is essential when starting out, and -fimplicit-none assists with that.
The way that the stack and heap are used can also effect performance and -fstack-arrays can clarify this management.
Unfortunately many introductory tutorials show multi-threaded use where it will not be used efficiently, as inevitably OpenMP promotes many threads on ever increasing cores, all sharing the same memory resource, where common processors have limited memory transfer bandwidth.