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 |
Option Intel |
Option PGI |
Description |
| -fopenmp |
-openmp |
-mp |
Enable omp directives |
| -floop-parallelize-all |
-parallel |
-Mconcur |
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 |
| INTEL |
|
| KMP_ALL_THREADS |
No enforced limit |
| KMP_BLOCKTIME |
200 milliseconds |
| KMP_LIBRARY |
throughput |
| KMP_STACKSIZE |
4m |
| KMP_AFFINITY |
noverbose,respect,granularity=core |
GNU libgomp
INTEL openmp