Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
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 (oneMKL) 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 (oneMKL) can dynamically change the number of OpenMP threads or should avoid doing this. The setting applies to all Intel® oneAPI Math Kernel Library (oneMKL) 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 (oneMKL) 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 (oneMKL) actually uses the specified number of threads, although the library attempts to use that number.

TIP:

If you call Intel® oneAPI Math Kernel Library (oneMKL) 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