マクロ

バージョンマクロ

これらのマクロを使用してインテル® oneAPI DPC++ ライブラリー (インテル® oneDPL) の現在のバージョンを取得します。

マクロ

説明

ONEDPL_VERSION_MAJOR

ライブラリーのメジャーバージョンを示す 10 進数。

ONEDPL_VERSION_MINOR

マイナーバージョンを示す 10 進数。

ONEDPL_VERSION_PATCH

パッチを示す 10 進数。

_PSTL_VERSION

インテル® oneDPL で使用されている LLVM PSTL コードのバージョン。

値は、xxyyz 形式の 10 進数です。ここで、xx はメジャーバージョン番号、yy はマイナーバージョン番号、z はパッチ番号です。

_PSTL_VERSION_MAJOR

_PSTL_VERSION/1000: メジャーバージョン番号。

_PSTL_VERSION_MINOR

(_PSTL_VERSION % 1000) / 10: マイナーバージョン番号。

_PSTL_VERSION_PATCH

_PSTL_VERSION % 10: パッチ番号。

その他のマクロ

これらのマクロを使用してインテル® oneDPL の使用を制御します。これらのマクロは、インテル® oneDPL ヘッダーをインクルードする前にプログラムコードの中で設定できます。

マクロ

説明

PSTL_USE_NONTEMPORAL_STORES

このマクロは、std::copystd::fill などのアルゴリズムが順序関係がないポリシーで実行される場合に、書き込み専用データに対して #pragma vector nontemporal を使用できるようにします。プラグマの詳細は、『インテル® oneAPI DPC++/C++ コンパイラー・デベロッパー・ガイドおよびリファレンス』 (英語) のベクトルの説明を参照してください。マクロが非ゼロ値に評価されると、#pragma vector nontemporal の使用が有効になります。デフォルトでは、このマクロは定義されません。

このマクロを使用すると、gcc や LLVM の C++ 標準ライブラリーの並列アルゴリズム実装でも同じ効果が得られる場合があります。

PSTL_USAGE_WARNINGS

このマクロを使用すると、Parallel STL は特定の実行ポリシーをサポートしていないアルゴリズムに関する警告などのコンパイル時メッセージを出力します。1 に設定すると、実装は使用方法の警告を出力します。マクロが定義されていない場合 (デフォルト)、または 0 に設定されている場合、使用方法の警告は無効になります。

このマクロを使用すると、gcc や LLVM の C++ 標準ライブラリーの並列アルゴリズム実装でも同じ効果が得られる場合があります。

ONEDPL_USE_TBB_BACKEND

このマクロは、並列実行ポリシー (par および par_unseq) でのインテル® oneAPI スレッディング・ビルディング・ブロック (インテル® oneTBB) またはインテル® スレッディング・ビルディング・ブロック (インテル® TBB) の使用を制御します。

マクロが非ゼロ値に評価された場合、またはマクロが定義されておらず (デフォルト)、ほかの並列バックエンドが明示的に選択されていない場合、並列ポリシーを使用するアルゴリズムはインテル® oneTBB またはインテル® TBB ライブラリーを使用して実行されます。マクロを 0 に設定すると、並列実行でインテル® TBB API の使用が無効になります。この設定は、インテル® oneTBB またはインテル® TBB ライブラリーに依存しないコードに推奨されます。

それぞれのマクロを 0 に設定してすべての並列バックエンドを無効にすると、並列ポリシーを使用するアルゴリズムは呼び出し側のスレッドでシーケンシャルに実行されます。

ONEDPL_USE_OPENMP_BACKEND

このマクロは、並列実行ポリシー (par および par_unseq) での OpenMP* の使用を制御します。

マクロが非ゼロ値に評価された場合、インテル® TBB バックエンドが明示的に有効でない限り、並列ポリシーを使用するアルゴリズムは OpenMP* を使用して実行されます (つまり、インテル® TBB バックエンドのほうが OpenMP* バックエンドよりも優先されます)。マクロが定義されておらず (デフォルト)、ほかの並列バックエンドが選択されていない場合、OpenMP* を有効にするコンパイラー・オプション (-fopenmp など) は、並列ポリシーを使用するアルゴリズムでも OpenMP* を使用できるようにします。マクロを 0 に設定すると、並列実行での OpenMP* の使用は無効になります。

それぞれのマクロを 0 に設定してすべての並列バックエンドを無効にすると、並列ポリシーを使用するアルゴリズムは呼び出し側のスレッドでシーケンシャルに実行されます。

ONEDPL_USE_DPCPP_BACKEND

このマクロは、DPC++ ポリシーの使用を有効にしますマクロが定義されていない場合 (デフォルト)、またはマクロが非ゼロ値に評価された場合、DPC++ ポリシーが有効になります。0 に設定した場合、インテル® oneAPI DPC++/C++ コンパイラーとランタイム・ライブラリーに依存しません。DPC++ ポリシーを使用しようとするとコンパイルエラーになります。

ONEDPL_USE_PREDEFINED_POLICIES

このマクロは、定義済みポリシー・オブジェクト (例えば dpcpp_defaultdpcpp_fpga) の使用を有効にします。マクロが定義されていない場合 (デフォルト)、またはマクロが非ゼロ値に評価された場合、定義済みポリシー・オブジェクトが使用されます。0 に設定した場合、定義済みポリシー・オブジェクトおよび引数なしの make 関数 (make_device_policy()make_fpga_policy()) は利用できません。

ONEDPL_ALLOW_DEFERRED_WAITING

このマクロは、DPC++ ポリシーで実行される特定のアルゴリズムの完了待ちを延期できるようにします (デフォルトでは無効)。

ONEDPL_FPGA_DEVICE

このマクロを使用して、FPGA デバイス向けにインテル® oneDPL アルゴリズムを含むコードをビルドします (デフォルトでは無効)。

ONEDPL_FPGA_EMULATOR

このマクロを使用して、FPGA エミュレーション・デバイス向けに Parallel STL アルゴリズムを含むコードをビルドします (デフォルトでは無効)。

FPGA エミュレーション・デバイスで実行するには、ONEDPL_FPGA_DEVICE マクロと ONEDPL_FPGA_EMULATOR マクロを同じアプリケーションで定義します。FPGA ハードウェア・デバイスで実行するには、ONEDPL_FPGA_DEVICE マクロのみを定義します。