インテル® oneAPI DPC++/C++ コンパイラーにおける OpenMP* 機能と拡張のサポート

同カテゴリーの次の記事

インテル Parallel Universe 43 号日本語版の公開

この記事は、インテル® デベロッパー・ゾーンに公開されている「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_memoryrequires ディレクティブ はい  
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_relacquirerelease はい  
atomic の relaxedhint はい  
条件付きの 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 依存関係タイプ はい  
mutexinoutsetdepobj 依存関係タイプ いいえ  
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 (英語) を参照してください。

関連記事