インテル® 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  
target variant dispatch (インテル拡張) をサポートする 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  
C/C++ の入れ子の 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_relacquirerelease 2021.1  
atomic の relaxed および hint 2021.1  
条件付きの lastprivate 2021.1  
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  
scan ×  
メタディレクティブ ×  
in、out、および inout 依存関係タイプ 2021.1  
mutexinoutset および depobj 依存関係タイプ ×  
detach ×  
declare マッパ― 2021.3  
taskwait の depend ×  
depobj ディレクティブ ×  
イテレーター ×  
target の in_reduction 2022.0  
taskwait depend のnowait 2022.0  
target の thread_limit 節 2022.2  
default (private | firstprivate) 2022.2 C/C++ の default 節の引数として private と firstprivate をサポート
defaultmap(present) 2022.2 defaultmap の暗黙の動作タイプである present をサポート
OMP_ALLOCATOR 2021.1  
OMP_DEBUG 2021.1

ホスト: サポート

デバイス: 未サポート

OMP_TOOL

OMP_TOOL_LIBRARIES

omp_control_tool

2021.1

ホスト: サポート

デバイス: 最小限のサポート

OMP_DISPLAY_ENV 2021.1  
OMP_GET_TEAMS_THREAD_LIMIT 2022.2  
OMP_GET_MAPPED_PTR、OMP_TARGET_ASSOCIATE_PTR 2022.2  
OMP_TARGET_DISASSOCIATE_PTR    
ツールの OMPT サポート 2022.2  

OpenMP* 5.1

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

機能 利用可能な ICX 説明
align 節/修飾子 2021.4  
dispatch 2021.3  
dispatch をサポートする declare variant サブセット 2021.3  
omp begin/end declare variant 2022.2  
dispatch 構造 2022.2  
interop 2021.3  
scope 2022.0  
target の thread_limit 2021.1  
taskwait depend のnowait 2022.2  
depend (inoutset:…) 2022.2  
tile 構造 2022.1  
masked 構造 2022.2 master の後継、master は非推奨
interop ディレクティブ 2022.2 omp_interop_t オブジェクトの値を解釈するため
omp_get_num_interop_properties
omp_get_interop_property
omp_get_interop_property_name
ルーチンを追加
target の has_device_addr 2022.2  
allocate 節の align 修飾子 2022.2  
OMP_NUM_TEAMS
OMP_TEAMS_THREAD_LIMIT
2021.1  
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  

OpenMP* 5.2

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

機能 利用可能な ICX 説明
declare variant の adjust_args および append_args 2022.2  
allocate ディレクティブの align 節 2022.2  

拡張

拡張 利用可能な ICX 説明
target variant dispatch 構造 2021.1 OMP5.1 で dispatch 構造に変更
統合共有メモリー (USM) ランタイム API: omp_target_alloc_host、omp_target_alloc_shared、omp_target_alloc_device 2021.1 OpenMP* 6.0 仕様の一部として提案されている機能
prefetch ディレクティブ、data 節 2023.0 GPU 向けのパフォーマンス機能

関連情報

OpenMP* 仕様

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

インテルのドキュメント

インテル® oneAPI DPC++/C++ コンパイラー・デベロッパー・ガイドおよびリファレンス (英語)

インテル® Fortran および C++ コンパイラー・クラシックで実装されている OpenMP* 機能


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

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

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