インテル® oneAPI DPC++/C++ コンパイラーにおける OpenMP* 機能と拡張のサポート
この記事は、インテル® デベロッパー・ゾーンに公開されている「OpenMP* Features and Extensions Supported in Intel® oneAPI DPC++/C++ Compiler」の日本語参考訳です。
最終更新日: 2021 年 2 月 11 日
インテル® oneAPI DPC++/C++ コンパイラー (dpcpp および icx) は、新しい LLVM ベースのコンパイラーであり、インテル® oneAPI ツールキットに含まれます。この記事では、インテル® oneAPI DPC++/C++ コンパイラー 2021.1 でサポートされている OpenMP* 仕様の機能とインテルの OpenMP* 拡張機能について説明します。
インテル® Fortran コンパイラー (IFX) で実装されている言語および OpenMP* の機能に関する同様の情報は、こちら (英語) でご覧いただけます。
OpenMP* 4.5
バージョン 2021.1 には OpenMP* 4.5 のすべての機能が実装されています。
OpenMP* 5.0
以下は、OpenMP* 4.5 以降の OpenMP* 5.0 の機能サポートの状況を示します。
機能 | 2021.1 でのサポート状況 | 説明 |
---|---|---|
unified_shared_memory の requires ディレクティブ | はい | |
target variant dispatch (インテル拡張機能) をサポートする declare variant サブセット | はい | |
target を囲まない teams | はい | |
ループの正規化: != の許可 | はい | |
デフォルトの nonmonotonic スケジュール | はい | |
SIMD 句の nontemporal および order(concurrent) 節 | はい | |
loop 構造 | はい | |
task / taskloop in_reduction | はい | |
taskgroup task_reduction | はい | |
allocate ディレクティブ、allocate / allocator 節 | はい | |
use_device_addr 節 | はい | |
C / C++ の入れ子になった declare target 構造 | はい | |
master taskloop parallel master parallel master taskloop master taskloop simd parallel master taskloop simd |
はい | |
teams loop | はい | |
atomic と flush の acq_rel、acquire、release 節 | はい | |
atomic の relaxed と hint 節 | はい | |
条件付きの lastprivate | はい | |
close マップタイプ修飾子 | はい | |
defaultmap 拡張 | はい | |
omp_get_supported_active_levels | はい | |
omp_set_affinity_format omp_get_affinity_format omp_display_affinity and omp_capture_affinity OMP_DISPLAY_AFFINITY OMP_AFFINITY_FORMAT |
はい | |
omp_get_device_num | はい | |
omp_pause_resource omp_pause_resource_all |
はい | |
OMP_TARGET_OFFLOAD | はい | |
OMPT のサポート | はい | |
scan | いいえ | |
Metadirectives | いいえ | |
in、out、および inout 依存関係タイプ | はい | |
mutexinoutset と depobj 依存関係タイプ | いいえ | |
detach 節 | いいえ | |
declare マッパ― | いいえ | |
taskwait のdepend 節 | いいえ | |
depobj ディレクティブ | いいえ | |
イテレーター | いいえ | |
OMP_ALLOCATOR | はい | |
OMP_DEBUG | はい |
ホスト: サポート |
OMP_TOOL OMP_TOOL_LIBRARIES omp_control_tool |
はい |
ホスト: サポート |
OpenMP* 5.1
以下は、OpenMP* 5.0 以降の OpenMP* 5.1 の機能サポートの状況を示します。
機能 | 2021.1 でのサポート状況 |
---|---|
target の thread_limit 節 | はい |
omp_display_env | はい |
OMP_NUM_TEAMS OMP_TEAMS_THREAD_LIMIT |
はい |
拡張機能
拡張 | 2021.1 でのサポート状況 | 説明 |
---|---|---|
target variant dispatch 構造 | はい | OMP5.1 では dispatch 構造に変更されました。 |
統合共有メモリーランタイム API: omp_target_alloc_host、omp_target_alloc_shared、omp_target_alloc_device | はい | OpenMP* 6.0 仕様の一部として提案されている機能 |
参考資料
OpenMP* 仕様
OpenMP* の仕様は openmp.org (英語) で入手できます。
インテルのドキュメント
インテル® oneAPI DPC++/C++ コンパイラー 2021.1 デベロッパー・ガイドおよびリファレンス (英語)
インテル® Fortran および C++ コンパイラー・クラシックで実装される OpenMP* の機能
製品とパフォーマンス情報
1実際の性能は利用法、構成、その他の要因によって異なります。
詳細は、www.Intel.com/PerformanceIndex (英語) を参照してください。