この記事は、インテル® デベロッパー・ゾーンに公開されている「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_memory の requires ディレクティブ | 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/taskloop の in_reduction 節 | 2021.1 | |
taskgroup の task_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 | |
atomic と flush の acq_rel、acquire、release 節 | 2021.1 | |
atomic の relaxed 節と 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 | |
target の in_reduction 節 | 2022.0 | |
taskwait の depend 節 | 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 | |
simd の scan ディレクティブ | 2023.1 | |
task の detach 節 | 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 variant の adjust_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 depend の nowait 節 | 2022.0 | |
tile 構造 | 2022.1 | |
inoutset 依存関係タイプ | 2022.2 | |
masked 構造 | 2022.2 | masked は非推奨の master の代替 |
target の has_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 | |
target の thread_limit 節 | 2023.2 | |
task の affinity 節 | 2024.0 | |
proc_bind 節の primary アフィニティー・ポリシー |
2024.1 |
OpenMP* 5.2
以下は、OpenMP* 5.2 の機能のサポート状況を示します。
機能 | サポートされた ICX バージョン |
説明 |
---|---|---|
declare variant の adjust_args, append_args | 2022.2 | |
allocate ディレクティブの align 節 | 2022.2 | |
depobj ディレクティブの引数なしの destroy 節の非推奨化 | 2023.2 | |
order 節の reproducible 修飾子と unconstrained 修飾子 | 2023.2 | |
ordered の doacross 節 | 2024.0 | |
omp_cur_iteration キーワード | 2024.0 | |
depend(source) と depend(sink:vec) の非推奨化 | 2024.0 | |
scope の firstprivate 節 | 2024.0 | |
reduction 節からマイナス演算を非推奨化 | 2024.0 | |
scope の allocate 節 | 2024.1 | |
カンマ区切りのない修飾子の map 構造の非推奨化 | 2024.1 | |
linear 節の step 修飾子 | 2024.1 | |
linear 節の linear-modifier(list) の非推奨化 | 2024.1 |
OpenMP* 6.0 TR11
機能 | サポートされた ICX バージョン |
説明 |
dispatch の interop 節 | 2023.0 | OMP6.0/TR11 でインテルが提案した機能。OpenMP* オフロードを使用するかどうかに関係なく、ライブラリーとの相互運用性を実現します。 |
append_args 節の prefer_type(preference-list) | 2023.0 | OMP6.0/TR11 でインテルが提案した機能。 |
declare target の local 節 | 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 向けのパフォーマンス機能 |
simd の ompx_assert 節 | 2023.0 | クラシック・コンパイラー (icc) は同様の機能拡張である assert 節をサポート |
可変長関数をサポートする dispatch の need_device_ptr 節 | 2023.1 | OpenMP* 6.0 仕様の一部として提案されている機能 |
関連情報
OpenMP* 仕様
OpenMP* 仕様は openmp.org (英語) から入手できます。
インテルのドキュメント
インテル® oneAPI DPC++/C++ コンパイラー・デベロッパー・ガイドおよびリファレンス (英語)
インテル® Fortran および C++ コンパイラー・クラシックで実装されている OpenMP* 機能
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。