Techniques to Set the Number of Threads
Use the following techniques to specify the number of OpenMP threads to use in :
Intel® oneAPI Math Kernel Library
- Set one of the OpenMP orenvironment variables:Intel® oneAPI Math Kernel Library
- OMP_NUM_THREADS
- MKL_NUM_THREADS
- MKL_DOMAIN_NUM_THREADS
- Call one of the OpenMP orfunctions:Intel® oneAPI Math Kernel Library
- omp_set_num_threads()
- mkl_set_num_threads()
- mkl_domain_set_num_threads()
- mkl_set_num_threads_local()
A call to the
and may result in slow performance and/or race conditions reported by run-time tools, such as Intel® Inspector.
mkl_set_num_threads
or
mkl_domain_set_num_threads
function changes the number of OpenMP threads available to all in-progress calls (in concurrent threads) and future calls to Intel® oneAPI Math Kernel Library
Intel® oneAPI Math Kernel Library
To avoid such situations, use the mkl_set_num_threads_local function (see the "Support Functions" section in the
Developer Reference for the function description).
Intel® oneAPI Math Kernel Library
When choosing the appropriate technique, take into account the following rules:
- Thethreading controls take precedence over the OpenMP controls because they are inspected first.Intel® oneAPI Math Kernel Library
- A function call takes precedence over any environment settings. The exception, which is a consequence of the previous rule, is that a call to the OpenMP subroutineomp_set_num_threads()does not have precedence over the settings ofenvironment variables such asIntel® oneAPI Math Kernel LibraryMKL_NUM_THREADS. See Using Additional Threading Control for more details.
- You cannot change run-time behavior in the course of the run using the environment variables because they are read only once at the first call to.Intel® oneAPI Math Kernel Library
If you use the Intel TBB threading technology, read the documentation for the
tbb::task_scheduler_init
class at
https://www.threadingbuildingblocks.org/documentation to find out how to specify the number of threads.