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

インテル® DPC++/C++ コンパイラーインテル® oneAPI

この記事は、インテル® デベロッパー・ゾーンに公開されている「OpenMP* Features and Extensions Supported in Intel® oneAPI DPC++/C++ Compiler」の日本語参考訳です。原文は更新される可能性があります、原文と翻訳文の内容が異なる場合原文を優先してください。


インテル® oneAPI DPC++/C++ コンパイラー (dpcpp および icx) は、新しい LLVM ベースのコンパイラーであり、インテル® oneAPI ツールキットに含まれます。この記事では、インテル® oneAPI DPC++/C++ コンパイラーの各リリースでサポートされている OpenMP* 仕様の機能とインテルの OpenMP* 拡張機能について説明します。インテル® oneAPI ツールキットとコンパイラーのバージョンの対応表は、こちらを参照してください。

インテル® Fortran コンパイラー (ifx) で実装されている言語および OpenMP* の機能に関する同様の情報はこちらを参照してください。


OpenMP* 4.5

OpenMP 4.5 のすべての機能はバージョン 2021.1 で実装されました。

OpenMP* 5.0

以下は、各コンパイラー・バージョンの OpenMP* 5.0 機能のサポート状況を示します。

機能 サポートされた
ICX バージョン
説明
unified_shared_memoryrequires ディレクティブ 2021.1
declare variant ディレクティブ 2021.1
target を囲まない teams 2021.1
ループの正規化: != の許可 2021.1
デフォルトの nonmonotonic スケジュール 2021.1
simd 句の nontemporal 節と order(concurrent) 2021.1
loop 構造 2021.1
task/taskloopin_reduction 2021.1
taskgrouptask_reduction 2021.1
allocate ディレクティブ、allocate/allocator 2021.1
use_device_addr 2021.1
入れ子の declare target 構造 2021.1
master taskloop
parallel master
parallel master taskloop
master taskloop simd
parallel master taskloop simd
2021.1
teams loop 2021.1
atomicflushacq_rel、acquire、release 2021.1
atomicrelaxed 節と hint 2021.1
lastprivate 節の conditional 修飾子 2021.1
map 節の close 修飾子 2021.1
defaultmap 拡張 2021.1
omp_get_supported_active_levels 2021.1
omp_set_affinity_format
omp_get_affinity_format
omp_display_affinity
omp_capture_affinity
OMP_DISPLAY_AFFINITY
OMP_AFFINITY_FORMAT
2021.1
omp_get_device_num 2021.1
omp_pause_resource
omp_pause_resource_all
2021.1
OMP_TARGET_OFFLOAD 2021.1
OMPT サポート 2021.1
in、out、および inout 依存関係タイプ 2021.1
OMP_ALLOCATOR 2021.1
OMP_DEBUG 2021.1 ホスト: サポート
デバイス: 未サポート
OMP_TOOL
OMP_TOOL_LIBRARIES
omp_control_tool
2021.1 ホスト: サポート
デバイス: 最小限のサポート
OMP_DISPLAY_ENV 2021.1
declare mapper ディレクティブ 2021.3
targetin_reduction 2022.0
taskwaitdepend 2022.0
OMP_GET_TEAMS_THREAD_LIMIT 2022.2

OMP_GET_MAPPED_PTR、OMP_TARGET_ASSOCIATE_PTR

OMP_TARGET_DISASSOCIATE_PTR

2022.2
depobj 構造 2022.2
mutexinoutset および depobj 依存関係タイプ 2022.2
metadirectives (一部サポート) 2022.2 静的コンテキスト・セレクターのみサポート
depend 節のイテレーター 2023.1
simdscan ディレクティブ 2023.1
taskdetach 2023.2
reduction 節の task 修飾子 2024.1

OpenMP* 5.1

以下は、OpenMP* 5.1 の機能のサポート状況を示します。

機能 サポートされた
ICX バージョン
説明
OMP_NUM_TEAMS
OMP_TEAMS_THREAD_LIMIT
2021.1
dispatch 構造 2021.3
declare variantadjust_args 節と append_args 2021.3
interop 構造 2021.3
omp_get_num_interop_properties
omp_get_interop_int
omp_get_interop_ptr
omp_get_interop_str
omp_get_interop_name
omp_get_interop_type_desc
omp_get_interop_rc_desc
2021.3 omp_interop_t オブジェクトのプロパティーを検査する相互運用性ランタイムルーチン
align 節/修飾子 2021.4
scope 構造 2022.0
taskwait dependnowait 2022.0
tile 構造 2022.1
inoutset 依存関係タイプ 2022.2
masked 構造 2022.2 masked は非推奨の master の代替
targethas_device_addr 2022.2
allocate 節の align 修飾子 2022.2
OMP_SET_NUM_TEAMS
OMP_GET_MAX_TEAMS
OMP_SET_TEAMS_THREAD_LIMIT
2022.2
OMP_TARGET_MEMCPY_ASYNC
OMP_TARGET_MEMCPY_RECT_ASYNC
2022.2
omp_all_memory 予約ロケーター 2022.2
defaultmap(present) 2022.2
default(private)default(firstprivate) 2022.3
parallel masked
masked taskloop
masked taskloop simd
parallel masked taskloop
parallel masked taskloop simd
2023.0 masked を含む結合および複合構造
nothing ディレクティブ 2023.1
error ディレクティブ 2023.1
grainsize 節と num_tasks 節の strict 修飾子 2023.1
begin declare variant ディレクティブと end declare variant ディレクティブ 2023.2
targetthread_limit 2023.2
taskaffinity 2024.0

proc_bind 節の primary アフィニティー・ポリシー

2024.1

OpenMP* 5.2

以下は、OpenMP* 5.2 の機能のサポート状況を示します。

機能 サポートされた
ICX バージョン
説明
declare variantadjust_args, append_args 2022.2
allocate ディレクティブの align 2022.2
depobj ディレクティブの引数なしの destroy 節の非推奨化 2023.2
order 節の reproducible 修飾子と unconstrained 修飾子 2023.2
ordereddoacross 2024.0
omp_cur_iteration キーワード 2024.0
depend(source)depend(sink:vec) の非推奨化 2024.0
scopefirstprivate 2024.0
reduction 節からマイナス演算を非推奨化 2024.0
scopeallocate 2024.1
カンマ区切りのない修飾子の map 構造の非推奨化 2024.1
linear 節の step 修飾子 2024.1
linear 節の linear-modifier(list) の非推奨化 2024.1

OpenMP* 6.0 TR11

機能 サポートされた
ICX バージョン
説明
dispatchinterop 2023.0 OMP6.0/TR11 でインテルが提案した機能。OpenMP* オフロードを使用するかどうかに関係なく、ライブラリーとの相互運用性を実現します。
append_args 節の prefer_type(preference-list) 2023.0 OMP6.0/TR11 でインテルが提案した機能。
declare targetlocal 2023.2
groupprivate ディレクティブ 2023.2
omp_target_memset() 2024.2
omp_target_memset_async() 2024.2

拡張

拡張 サポートされた
ICX バージョン
説明
target variant dispatch 構造 2021.1 OMP5.1 の dispatch 構造
統合共有メモリー API: omp_target_alloc_host、omp_target_alloc_shared、omp_target_alloc_device 2021.1 OpenMP* 6.0 仕様の一部として提案されている機能
prefetch ディレクティブと data 2023.0 GPU 向けのパフォーマンス機能
simdompx_assert 2023.0 クラシック・コンパイラー (icc) は同様の機能拡張である assert 節をサポート
可変長関数をサポートする dispatchneed_device_ptr 2023.1 OpenMP* 6.0 仕様の一部として提案されている機能

関連情報

OpenMP* 仕様

OpenMP* 仕様は openmp.org (英語) から入手できます。

インテルのドキュメント

インテル® oneAPI DPC++/C++ コンパイラー・デベロッパー・ガイドおよびリファレンス (英語)
インテル® Fortran および C++ コンパイラー・クラシックで実装されている OpenMP* 機能


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

タイトルとURLをコピーしました