OpenMP
OpenMP (Open Multi-Processing) is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems.
To enable omp directives the appropriate option must be used.
OpenMP Flags
| Option GNU/LLVM |
Description |
| -fopenmp |
Enable omp directives |
| -floop-parallelize-all |
Performs shared-memory auto-parallelization. |
OpenMP Envirnment Variables
| Variable |
Default |
Description |
| OMP_NUM_THREADS |
Number of processors (20) |
Max num. threads |
| OMP_SCHEDULE |
{INTEL} STATIC, no chunk size specified, {GNU} DYNAMIC, chunk size =1 |
run-time schedule |
| OMP_DYNAMIC |
FALSE |
dynamic adjustment of number of threads |
| OMP_NESTED |
FALSE |
nested parallelism |
| OMP_MAX_ACTIVE_LEVELS |
unlimited |
maximum number of nested parallel region |
| OMP_STACKSIZE |
{INTEL 4M} {GNU System dependent} |
number of bytes to allocate for each OpenMP thread |
| OMP_THREAD_LIMIT |
NO |
Limits the number of simultaneously executing threads in an OpenMP program |
| GNU |
|
|
| GOMP_CPU_AFFINITY |
system dependent |
Bind threads to specific CPUs |
| OMP_WAIT_POLICY |
threads wait actively for a short time before waiting passively |
How waiting threads are handled |
| GOMP_DEBUG |
|
Enable debugging output |
| GOMP_STACKSIZE |
System dependent |
Set default thread stack size |
| OMP_PROC_BIND |
True |
Whether theads may be moved between CPUs |
For more information visit: GNU libgomp