技術ポータル「iSUS」をリニューアルいたしました!お探しの記事を快適に検索いただくための絞り込み機能 (トピック検索) の使い方はこちら。

インテル® 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_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/ (英語) を参照してください。

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