OMP_PLACES
– Specifies on which CPUs the threads should be placed ¶The thread placement can be either specified using an abstract name or by an
explicit list of the places. The abstract names threads
, cores
,
sockets
, ll_caches
and numa_domains
can be optionally
followed by a positive number in parentheses, which denotes the how many places
shall be created. With threads
each place corresponds to a single
hardware thread; cores
to a single core with the corresponding number of
hardware threads; with sockets
the place corresponds to a single
socket; with ll_caches
to a set of cores that shares the last level
cache on the device; and numa_domains
to a set of cores for which their
closest memory on the device is the same memory and at a similar distance from
the cores. The resulting placement can be shown by setting the
OMP_DISPLAY_ENV
environment variable.
Alternatively, the placement can be specified explicitly as comma-separated
list of places. A place is specified by set of nonnegative numbers in curly
braces, denoting the hardware threads. The curly braces can be omitted
when only a single number has been specified. The hardware threads
belonging to a place can either be specified as comma-separated list of
nonnegative thread numbers or using an interval. Multiple places can also be
either specified by a comma-separated list of places or by an interval. To
specify an interval, a colon followed by the count is placed after
the hardware thread number or the place. Optionally, the length can be
followed by a colon and the stride number – otherwise a unit stride is
assumed. Placing an exclamation mark (!
) directly before a curly
brace or numbers inside the curly braces (excluding intervals) will
exclude those hardware threads.
For instance, the following specifies the same places list:
"{0,1,2}, {3,4,6}, {7,8,9}, {10,11,12}"
;
"{0:3}, {3:3}, {7:3}, {10:3}"
; and "{0:2}:4:3"
.
If OMP_PLACES
and GOMP_CPU_AFFINITY
are unset and
OMP_PROC_BIND
is either unset or false
, threads may be moved
between CPUs following no placement policy.
OMP_PROC_BIND
– Whether threads may be moved between CPUs, GOMP_CPU_AFFINITY
– Bind threads to specific CPUs, omp_get_proc_bind
– Whether threads may be moved between CPUs,
OMP_DISPLAY_ENV
– Show OpenMP version and environment variables
OpenMP specification v4.5, Section 4.5