oneMKL バージョン依存コンパイルで定義済みのプリプロセッサー・シンボルを使用

プリプロセッサー・シンボル (マクロ) は、コンパイルする前にプログラムの値を置換します。この処理は、前処理フェーズで行います。

次に、利用可能なプリプロセッサー・シンボルを示します。

定義済みプリプロセッサー・シンボル

説明

__INTEL_MKL__

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) のメジャーバージョン

__INTEL_MKL_MINOR__

下位互換のため、このマクロの値は 0 です。

__INTEL_MKL_UPDATE__

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) のアップデート・バージョン

__INTEL_MKL_PATCH__

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) のパッチバージョン

INTEL_MKL_VERSION

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) のフルバージョンは次の形式です。

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

これらのシンボルを使用することで、ライブラリーの特定のバージョンで追加された新しい機能を使用するコードの条件付きコンパイルが有効になります。

条件付きコンパイルを実行するには、次の操作を行います。

  1. コンパイラーに応じて、マクロが定義されているファイルをコードにインクルードします。

    C/C++ コンパイラー:

    mkl_version.h

    または mkl.h (mkl_version.h をインクルードする)

    インテル® Fortran コンパイラー:

    mkl.fi

    プリプロセッサーが有効な Fortran コンパイラー:

    mkl_version.h

    プリプロセッサーを有効にするオプションは、コンパイラーのドキュメントを参照してください。

  2. [オプション] 次のプリプロセッサー・ディレクティブを使用してマクロが定義されているかどうかを確認します。
    • C/C++ の場合、#ifdef、#endif
    • Fortran の場合、!DEC$IF DEFINED、!DEC$ENDIF
  3. 次のプリプロセッサー・ディレクティブを使用してコードを条件付きでインクルードします。
    • C/C++ の場合、#if、#endif
    • Fortran の場合、!DEC$IF、!DEC$ENDIF

この例は、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) の固有のバージョンに対して条件付きでコードセグメントをコンパイルする方法を示しています。ここで対象とするバージョンは 2025.0 です。

インテル® Fortran コンパイラー:

include "mkl.fi"
!DEC$IF DEFINED INTEL_MKL_VERSION
!DEC$IF INTEL_MKL_VERSION .EQ. 20250000
*   条件付きでコンパイルするコード 
!DEC$ENDIF
!DEC$ENDIF

C/C++ コンパイラー/プリプロセッサーが有効な Fortran コンパイラー:

#include "mkl.h"
#ifdef INTEL_MKL_VERSION
#if INTEL_MKL_VERSION ==  20250000
...     条件付きでコンパイルするコード
#endif
#endif