Using Predefined Preprocessor Symbols for Intel® MKL Version-Dependent Compilation
Preprocessor symbols (macros) substitute values in a program before it is compiled. The substitution is performed in the preprocessing phase.
The following preprocessor symbols are available:
Predefined Preprocessor Symbol
| Description
|
---|---|
__INTEL_MKL__ | Intel® oneAPI Math Kernel Library |
__INTEL_MKL_MINOR__ | Intel® oneAPI Math Kernel Library |
__INTEL_MKL_UPDATE__ | Intel® oneAPI Math Kernel Library |
INTEL_MKL_VERSION | Intel® oneAPI Math Kernel Library INTEL_MKL_VERSION = (__INTEL_MKL__ *100+__INTEL_MKL_MINOR__ )*100+__INTEL_MKL_UPDATE__ |
These symbols enable conditional compilation of code that uses new features introduced in a particular version of the library.
To perform conditional compilation:
- Depending on your compiler, include in your code the file where the macros are defined:
- C/C++ compiler:
- mkl_version.h,ormkl.h, which includesmkl_version.h
- Intel®Fortran compiler:
- mkl.fi
- Any Fortran compiler with enabled preprocessing:
- mkl_version.hRead the documentation for your compiler for the option that enables preprocessing.
- [Optionally] Use the following preprocessor directives to check whether the macro is defined:
- #ifdef, #endiffor C/C++
- !DEC$IF DEFINED, !DEC$ENDIFfor Fortran
- Use preprocessor directives for conditional inclusion of code:
- #if, #endiffor C/C++
- !DEC$IF, !DEC$ENDIFfor Fortran
Example
This example shows how to compile a code segment conditionally for a specific version of
. In this case, the version is 11.2 Update 4:
Intel® oneAPI Math Kernel Library
Intel®
Fortran Compiler:include "mkl.fi"
!DEC$IF DEFINED INTEL_MKL_VERSION
!DEC$IF INTEL_MKL_VERSION .EQ. 110204
* Code to be conditionally compiled
!DEC$ENDIF
!DEC$ENDIF
C/C++ Compiler
. Fortran Compiler with Enabled Preprocessing
:#include "mkl.h"
#ifdef INTEL_MKL_VERSION
#if INTEL_MKL_VERSION == 110204
... Code to be conditionally compiled
#endif
#endif