Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

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
  • Include file: mkl.fi
  • Module (compiled): mkl_service.mod
  • Module (source): mkl_service.f90
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