Intel® oneAPI Math Kernel Library Developer Reference - Fortran

mkl_set_dynamic

Enables Intel® oneAPI Math Kernel Library to dynamically change the number of OpenMP* threads.

Syntax

call mkl_set_dynamic( flag )

Fortran Include Files/Modules

Input Parameters

Name

Type

Description

flag

INTEGER

flag = 0 - Requests disabling dynamic adjustment of the number of threads.

flag 0 - Requests enabling dynamic adjustment of the number of threads.

Description

This function indicates whether Intel® oneAPI Math Kernel Library can dynamically change the number of OpenMP threads or should avoid doing this. The setting applies to all Intel® oneAPI Math Kernel Library functions on all execution threads. This function takes precedence over theMKL_DYNAMIC environment variable.

Dynamic adjustment of the number of threads is enabled by default. Specifically, Intel® oneAPI Math Kernel Library may use fewer threads in parallel regions than the number returned by themkl_get_max_threadsfunction. Disabling dynamic adjustment of the number of threads does not ensure that Intel® oneAPI Math Kernel Library actually uses the specified number of threads, although the library attempts to use that number.

Tip

If you call Intel® oneAPI Math Kernel Library from within an OpenMP parallel region and want to create internal parallel regions, either disable dynamic adjustment of the number of threads or set the thread-local number of threads (seemkl_set_num_threads_local for how to do it).

Example

use mkl_service
…
call mkl_set_num_threads( 8 )
!$omp parallel
  call my_compute_with_mkl	! Intel MKL uses 1 thread, being called from OpenMP parallel region
  call mkl_set_dynamic(0)	! disable adjustment of the number of threads
  call my_compute_with_mkl	! Intel MKL uses 8 threads
!$omp end parallel