Skip to content

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