インテル® oneAPI DPC++/C++ コンパイラー (dpcpp) でサポートされている SYCL* 2020 仕様の機能と DPC++ 言語拡張

同カテゴリーの次の記事

SYCLomatic: 新しい CUDA* から SYCL* へのコード移行ツール

この記事は、インテル® デベロッパー・ゾーンに公開されている「SYCL* 2020 Specification Features and DPC++ Language Extensions Supported in Intel® oneAPI DPC++/C++ Compiler (dpcpp)」の日本語参考訳です。


DPC++ コンパイラーは、GPU や FPGA などさまざまなコンピューティング・アクセラレーターと CPU 向けのコードを含む、C++ および SYCL* ソースファイルをコンパイルします。この記事では、インテル® oneAPI DPC++/C++ コンパイラーでサポートされる SYCL* 2020 仕様の機能と DPC++ 言語拡張の対応状況と、サポートが追加されたバージョンを説明します。

SYCL* 2020 サポート

以下は、dpcpp コンパイラーにおける SYCL* 2020 仕様 (英語) の機能の対応状況です。

機能 DPC++ コンパイラーの対応状況
アクセサーの簡略化 ×
新しいアクセサー・インターフェイス ×
アクセサーのリバーシブル・コンテナー・コンストラクター ×
アクセサー const T と read_only の動作 ×
読み取りモードで const ref を返すアクセサー・オペレーター [] 2021.1
アドレス空間 – インターフェイス、ジェネリック、修飾 一部サポート
アトミック 一部サポート
ReversibleContainer の C++ 要件と一致するアクセサー ×
デダクション・ガイド 2021.1
デフォルト async_handler ×
デバイスアスペクト 一部サポート
デバイスのオプション機能のエラー処理 ×
デバイス固有のクエリー – info::kernel_device_specific 2021.2
Kernel_bundle 2021.3
std::exception から派生する例外 2021.1
例外階層の削除とエラーコードの追加 2021.4
拡張メカニズム – 機能テストマクロ 2022.1
拡張名前空間 2022.1
グループ・アルゴリズム (work-group) 2021.4
グループ・アルゴリズム (Sub-group) 2021.4
ホストタスク 2022.0
イメージ – sampled_image、unsampled_image ×
不変カーネル 2021.1
インオーダー・キュー 2021.1
カーネル関数タイプ属性 2021.1
数学配列 2021.2
Multi_ptr (新しい non-deprecated 形式) 一部サポート
shared_ptr<T[]> からの新しいバッファー・コンストラクター 2021.3
新しいヘッダーファイル名 2021.3
プロパティーをサポートする新しいプロパティー・トレインとクラス ×
新しい属性スタイル 2021.4
オプションのラムダ名 2021.1
Parallel_for の簡素化 2021.1
デバイス + コンテキストを取得するキュー・コンストラクター 2021.1
キューのショートカット 2021.1
リダクション 一部サポート
必要とする work-group サイズ 2021.1
特殊化定数 2021.4
標準レイアウトの緩和 2021.1
Sub-groups 2021.4
Device_copyable 2021.4
Sycl::bit_cast 2021.4
Sycl::vec_opeator[]、+、-、… 2021.1
統合共有メモリー 2021.4
テンプレート buffer_allocator ×
グループの調整 ×
新しいデバイス・セレクター・インターフェイス ×

DPC++ 拡張

以下は、dpcpp コンパイラーにおける DPC++ 言語拡張の対応状況です。

機能 DPC++ コンパイラーの対応状況 説明
アクセサー・プロパティー 2022.1  
アサート 実験的  
CXX 標準ライブラリー 2021.1  
データ・フロー・パイプ 2021.1 FGPA のみ
キューに投入されたバリア 2021.1  
明示的 SIMD (ESIMD) 実験的  
グループマスク 2022.0  
ローカルメモリーのカーネルスコープ割り当て 2021.3  
不均一サブグループ ×  
メモリー・プロパティーの固定 2021.2  
リダクション – 多次元リダクション変数 ×  
sg.invoke 一部サポート  
フリー関数のクエリー 実験的  
すべての引数を制限 (SYCL_INTEL_kernel_restrict_all) 2021.1  

 

廃止予定の SYCL* 1.2.1 機能

以下は、dpcpp コンパイラーで廃止予定または削除された SYCL* 1.2.1 機能です。

機能 廃止予定 削除
cl:: 名前空間 2022.1 ×
CL/sycl.hpp ヘッダー 2022.1 ×
OpenCL* 相互運用性 API 2021.3 2022.0
SYCL* 1.2.1 イメージ (サンプラーを含む) × ×
C++14 サポート 2022.0 ×
アクセサー関連の非推奨事項 (名前、ターゲット、モード) 2022.1 ×
定数アドレス空間 × ×
属性の伝播 2021.4 2022.0
vector_class、 string_class、 function_class、 mutex_class、 shared_ptr_class、
weak_ptr_class、 hash_class、および exception_ptr_class エイリアス
2021.4 2022.0
parallel_for、nd_range、nd_item、および item のオフセット 2021.4 ×
プログラムクラス、カーネルクラスの一部の API 2021.3 2022.0
nd_item::barrier && mem_fence 2022.0 ×
sycl::exception 2021.4 ×
非定数ラムダ式を使用する parallel_for 2021.1 2021.1
has_extension 2021.4 ×
multi_ptr API × ×
cl::sycl::byte 2021.4 ×
get_count、get_size 2021.4 ×
kernel::get_work_group_info 2022.0 ×
info::device::max_constant_buffer_size と info::device::max_constant_args 2021.4 ×
info::device::extensions と info::platform::extensions 2021.4 ×
非テンプレート buffer_allocator × ×
グループメソッド × ×

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

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

関連記事