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

インテル® oneAPI

この記事は、インテル® デベロッパー・ゾーンに公開されている「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
アドレス空間 – インターフェイス、ジェネリック、修飾 2023.0
アトミック 2023.0
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 2023.0
グループの調整 2023.0
新しいデバイス・セレクター・インターフェイス 2023.0
デフォルトで構築されるプラットフォーム、デバイス、イベント 2023.0
any_device_has と all_devices_have の追加 ×

DPC++ 拡張

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

機能 DPC++ コンパイラーの対応状況 説明
C-CXX-StandardLibrary 2021.1  
sycl_ext_intel_bf16_conversion 実験的  
sycl_ext_intel_buffer_location 2021.1  
sycl_ext_intel_dataflow_pipes 2021.1 FGPA のみ
sycl_ext_intel_device_info 2021.1  
sycl_ext_intel_esimd 2022.2  
sycl_ext_intel_fpga_device_selector 2021.1  
sycl_ext_intel_fpga_lsu 2021.1  
sycl_ext_intel_fpga_reg 2021.1  
sycl_ext_intel_kernel_args_restrict 2021.1  
sycl_ext_intel_mem_channel_property 2021.1  
sycl_ext_intel_online_compiler 実験的  
sycl_ext_intel_usm_address_spaces 2021.1  
sycl_ext_oneapi_accessor_properties 2022.1  
sycl_ext_oneapi_assert 実験的  
sycl_ext_oneapi_backend_level_zero 2021.1  
sycl_ext_oneapi_complex_algorithms 2022.1  
sycl_ext_oneapi_default_context 実験的  
sycl_ext_oneapi_device_global ×  
sycl_ext_oneapi_device_if ×  
sycl_ext_oneapi_discard_queue_events 2022.1  
sycl_ext_oneapi_dot_accumulate 2021.1  
sycl_ext_oneapi_enqueue_barrier 2021.1  
sycl_ext_oneapi_extended_atomics 2021.1  
sycl_ext_oneapi_filter_selector 2021.1  
sycl_ext_oneapi_free_function_queries 実験的  
sycl_ext_oneapi_group_algorithms 2021.1  
sycl_ext_oneapi_group_load_store 実験的  
sycl_ext_oneapi_group_sort 実験的  
sycl_ext_oneapi_invoke_simd 2022.2  
sycl_ext_oneapi_kernel_properties ×  
sycl_ext_oneapi_local_memory 2021.3  
sycl_ext_oneapi_local_static_mem_used ×  
sycl_ext_oneapi_matrix 実験的  
sycl_ext_oneapi_max_work_group_query 実験的  
sycl_ext_oneapi_properties 実験的  
sycl_ext_oneapi_spec_constants 2021.1  
sycl_ext_oneapi_srgb 2021.2  
sycl_ext_oneapi_sub_group 一部サポート  
sycl_ext_oneapi_sub_group_mask 2022.0  
sycl_ext_oneapi_uniform ×  
sycl_ext_oneapi_use_pinned_host_memory_property 2021.2  
不均一サブグループ ×  
リダクション – 多次元リダクション変数 ×  
サブグループ・メモリー ×  
マスクなし ×  
グラフ API (×)  
画像 API (×)  

 

廃止予定の 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
mem_fence 2022.0
nd_item::barrier × ×
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 2023.0
グループメソッド × ×
SYCL1.2.1 アトミック × ×
一部の device::info クエリー × ×
get_native 2022.0
get_id()、get_linear_id()、get_global_range() 2022.0

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

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

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