この記事は、インテル® デベロッパー・ゾーンに公開されている「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/ (英語) を参照してください。