Interoperability with OpenMP* API
- Domain description through multi-core terms<mc-shape>
- Domain description through domain size and domain member layout<size>[:<layout>]
- Explicit domain description through bit mask<masklist>
Define domains through multi-core terms.
Each domain consists of the logical processors that share a particular core. The number of domains on a node is equal to the number of cores on the node.
Each domain consists of the logical processors that share a particular socket. The number of domains on a node is equal to the number of sockets on the node. This is the recommended value.
Each domain consists of the logical processors that share a particular NUMA node. The number of domains on a machine is equal to the number of NUMA nodes on the machine.
All logical processors on a node are arranged into a single domain.
Logical processors that share a particular level 1 cache are arranged into a single domain.
Logical processors that share a particular level 2 cache are arranged into a single domain.
Logical processors that share a particular level 3 cache are arranged into a single domain.
The largest domain among
Define a number of logical processors in each domain (domain size)
The domain size is equal to the
OMP_NUM_THREADSenvironment variable value. If the
OMP_NUM_THREADSenvironment variable is not set, each node is treated as a separate domain.
The domain size is defined by the formula
#cpuis the number of logical processors on a node, and
#procis the number of the MPI processes started on a node
The domain size is defined by a positive decimal number
Ordering of domain members. The default value is
Domain members are ordered according to their BIOS numbering (platform-depended numbering)
Domain members are located as close to each other as possible in terms of common resources (cores, caches, sockets, and so on). This is the default value
Domain members are located as far away from each other as possible in terms of common resources (cores, caches, sockets, and so on)
Define domains through the comma separated list of hexadecimal numbers (domain masks)
miis a hexadecimail bit mask defining an individual domain. The following rule is used: the
ithlogical processor is included into the domain if the corresponding
mivalue is set to
1. All remaining processors are put into a separate domain. BIOS numbering is used.
To ensure that your configuration in
<masklist>is parsed correctly, use square brackets to enclose the domains specified by the
<masklist>. For example:
- If you setI_MPI_PIN_DOMAIN=autoand a single process is running on a node (for example, due toI_MPI_PERHOST=1)
Specify the ranking order
The domains are ordered according to the processor's BIOS numbering. This is a platform-dependent numbering.
The domains are ordered so that adjacent domains have minimal sharing of common resources, whenever possible.
The domains are ordered so that adjacent domains share common resources as much as possible. This is the default value.
The domains are ordered consecutively with the possibility not to share common resources.
The processes are mapped proportionally to sockets and the domains are ordered as close as possible on the sockets.
- Two socket nodes with four cores and a shared L2 cache for corresponding core pairs.
- 4 MPI processes you want to run on the node using the settings below.
- there are not enough CPUs to emplace all domains
- different domains share the L1 cache