Developer Guide

Developer Guide for Intel® oneAPI Math Kernel Library Linux*

ID 766690
Date 10/31/2024
Public
Document Table of Contents

Using Predefined Preprocessor Symbols for Intel® oneMKL 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 (oneMKL) major version

__INTEL_MKL_MINOR__

The value of this macro is 0 for backward compatibility.

__INTEL_MKL_UPDATE__

Intel® oneAPI Math Kernel Library (oneMKL) update version

__INTEL_MKL_PATCH__

Intel® oneAPI Math Kernel Library (oneMKL) patch version

INTEL_MKL_VERSION

Intel® oneAPI Math Kernel Library (oneMKL) full version in the following format:

INTEL_MKL_VERSION = (__INTEL_MKL__*100+__INTEL_MKL_UPDATE__)*100+__INTEL_MKL_PATCH__

These symbols enable conditional compilation of code that uses new features introduced in a particular version of the library.

To perform conditional compilation:

  1. Depending on your compiler, include in your code the file where the macros are defined:

    C/C++ compiler:

    mkl_version.h,

    or mkl.h, which includes mkl_version.h

    Intel® Fortran compiler:

    mkl.fi

    Any Fortran compiler with enabled preprocessing:

    mkl_version.h

    Read the documentation for your compiler for the option that enables preprocessing.

  2. [Optionally] Use the following preprocessor directives to check whether the macro is defined:
    • #ifdef, #endif for C/C++
    • !DEC$IF DEFINED, !DEC$ENDIF for Fortran
  3. Use preprocessor directives for conditional inclusion of code:
    • #if, #endif for C/C++
    • !DEC$IF, !DEC$ENDIF for Fortran

Example

This example shows how to compile a code segment conditionally for a specific version of Intel® oneAPI Math Kernel Library (oneMKL). In this case, the version is 2025.0:

Intel® Fortran Compiler:

include "mkl.fi"
!DEC$IF DEFINED INTEL_MKL_VERSION
!DEC$IF INTEL_MKL_VERSION .EQ. 20250000
*   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 ==  20250000
...     Code to be conditionally compiled
#endif
#endif