| SYCL | |
|---|---|
| 原作者 | クロノスグループ |
| 開発者 | クロノスグループ |
| 初回リリース | 2014年3月 (2014年3月) |
| 安定版リリース | |
| オペレーティング·システム | クロスプラットフォーム |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 高水準プログラミング言語 |
| Webサイト | www |
SYCL (発音は「シックル」)は、様々なハードウェアアクセラレータにおけるプログラミングの生産性を向上させるための高水準プログラミングモデルです。純粋なC++17をベースにした、シングルソースの組み込み向けドメイン固有言語(eDSL)です。クロノスグループによって開発され、2014年3月に発表された標準規格です。
名前の由来
SYCL(発音は「シックル」)は元々System-wide Compute Languageの略称であったが、[ 2 ] 2020年以降、SYCL開発者はSYCLは名前であり、もはや頭字語ではなくOpenCLへの参照は含まれていないことを明確にしている。[ 3 ]
目的
SYCL は、 OpenCLにヒントを得た基本概念、移植性、効率性に基づいて構築されたロイヤリティフリーのクロスプラットフォーム抽象化レイヤーです。これにより、完全に標準的なC++を使用して、異種プロセッサ用のコードを「シングルソース」スタイルで記述できるようになります。SYCL を使用すると、C++ テンプレート関数にホスト コードとデバイス コードの両方を含めることができるシングルソース開発が可能になり、ハードウェア アクセラレータを使用する複雑なアルゴリズムを構築し、それをソース コード全体でさまざまなタイプのデータに再利用できるようになります。
SYCL標準はOpenCLワーキンググループの高レベルプログラミングモデルサブグループとして始まり、もともとOpenCLおよびSPIRで使用するために開発されましたが、SYCLは2019年9月20日以降OpenCLワーキンググループから独立したKhronos Groupワークグループであり、SYCL 2020以降、SYCLは他のシステムをターゲットにできる、より一般的な異種フレームワークとして一般化されています。 これは、既存のネイティブライブラリを使用して最大のパフォーマンスを達成するなど、ターゲットAPIとの完全な相互運用性を実現しながら、任意のアクセラレーションAPIをターゲットにする汎用バックエンドの概念によって可能になりました。 たとえば、AdaptiveCPP実装は、AMDのクロスベンダーHIPを介してROCmとCUDAをターゲットにしています。
バージョン
SYCLは2014年3月にGDCで暫定バージョン1.2として発表され、 [ 4 ]その後、SYCL 1.2最終バージョンは2015年5月のIWOCL 2015で発表されました。 [ 5 ]
これまでのSYCL 1.2.1シリーズの最新バージョンは、2020年4月27日に公開されたSYCL 1.2.1リビジョン7です(最初のバージョンは2017年12月6日に公開されました[ 6 ])。
SYCL 2.2暫定版は、 2016年5月のIWOCL 2016で発表されました[ 7 ]。C ++14とOpenCL 2.2を対象としていました。しかし、SYCL委員会はこのバージョンを最終版とせず、人工知能エンジンを含む現在のハードウェアアクセラレータの多様化に対応するため、より柔軟なSYCL仕様へと移行することを決定し、SYCL 2020が策定されました。
最新バージョンは、2022年11月13日に公開されたSYCL 2020リビジョン6です。これは、2021年2月9日に公開されたリビジョン2の最初のリリースからの進化であり、[ 8 ] 2020年6月30日に公開されたSYCL 2020暫定仕様リビジョン1に対するユーザーと実装者からのフィードバックを考慮に入れています。 [ 9 ] C++17とOpenCL 3.0のサポートがこのリリースの主なターゲットです。統合共有メモリ(USM)は、OpenCLとCUDAをサポートするGPUの主要な機能の1つです。
IWOCL 2021ではロードマップが発表されました。SYCLの主な実装は、DPC++、ComputeCpp、AdaptiveCPP、triSYCL、neoSYCLです。今後の開発目標は、将来のSYCL 202xにおけるC++20のサポートです。[ 10 ]
実装
| 名前 | SYCLフロントエンド機能 | デバイス/APIバックエンド | メモ / ステータス |
|---|---|---|---|
| データ並列 C++ (DPC++) | SYCL 2020 (C++17とC++20の一部) [ 11 ] | LLVMとoneAPI [ 12 ] | Intelのオープンソース プロジェクト。 |
| コンピューティングCpp | SYCL 1.2.1準拠[ 13 ] | 具体的なバックエンドの詳細は不明ですが、フレームワークにはプラットフォームサポートガイドがあります。[ 14 ] | Codeplay社のフレームワーク(コミュニティ版あり)。現在はDPC++に置き換えられ、非推奨となっている。[ 15 ] |
| AdaptiveCpp (旧 hipSYCL および Open SYCL) | 1.2.1のサポートは不完全(Images、OpenCL相互運用性がない)で、SYCL 2020は部分的にサポートされています。 [ 16 ] C++標準の並列処理(std::execution)とCUDA/HIPプログラミングモデルの方言であるPCUDAもサポートしています。 | AMD(ROCm)、Nvidia(CUDA)、Intel(SPIR-V経由のレベルゼロ)、CPU(LLVM + OpenMP)[ 17 ] | ジャストインタイムランタイムを使用して完全に汎用的なバイナリを生成できます。[ 18 ] |
| トリSYCL | 不完全。C++20 を搭載。 | OpenMPとOpenCLをベースにしており、実験的にAMD FPGAとCGRAをサポートしています。[ 19 ] | 開発は遅いです。主にテストの場であり、DPC++ をベースにしたバージョンです。 |
| ネオSYCL | SYCL 1.2.1はほぼ完成(画像サポートなどのOpenCL固有の機能が欠けている)[ 20 ] | SX-オーロラ翼[ 21 ] | |
| SYCL-GTX | C++11のサポート[ 22 ]、まだ完全ではない | OpenCL 1.2+ [ 23 ] | 実際の開発は行われていない[ 24 ]。 |
| シルカン | ? | ヴルカンデバイス[ 25 ] | 実験段階。SPIR-V を使用する Vulkan のため、カーネル内で構造化された制御フローが必要です。 |
| インテオン・ポリガイスト | ? | ? [ 26 ] | LLVM「Polygeist」のフォーク。MLIRフロントエンド。Inteon社が支援。[ 27 ] |
拡張機能
SYCL 安全性が重要
2023年3月、クロノスグループはSYCL SCワーキンググループの設立を発表しました[ 28 ]。その目的は、安全性が極めて重要なシステム向けの高水準ヘテロジニアスコンピューティングフレームワークを構築することです。これらのシステムは、航空電子工学、自動車、産業、医療など、様々な分野にわたります。
SYCL Safety Criticalフレームワークは、信頼性と安全性を確保するために、複数の業界標準に準拠します。これらの標準には、クリティカルシステムにおけるC++の使用に関するガイドラインを提供するMISRA C++ 202X [ 29 ] 、 航空システムおよび機器認証におけるソフトウェアの考慮事項に関する標準であるRTCA DO-178C / EASA ED-12C [ 30 ]、道路車両の機能安全に関するISO 26262/21448 [ 31 ]、電気/電子/プログラマブル電子安全関連システムの機能安全をカバーするIEC 61508 、医療機器ソフトウェアのライフサイクル要件に関連するIEC 62304 [ 28 ]が含まれます。
ソフトウェア
SYCL を活用する注目すべきソフトウェア分野には、次のようなものがあります (例付き)。
- バイオインフォマティクス
- 人工知能
- llama.cpp : Llamaなどの様々な大規模言語モデル上で推論を実行するオープンソースソフトウェアライブラリ。[ 35 ]
- 自動車産業
- 宇宙論
- CRK-HACC:SYCLに移植された宇宙論的n体シミュレーションコード。SYCLを用いて、宇宙における大規模構造形成とダイナミクスに関する計算を高速化します。[ 37 ]
リソース
KhronosはSYCLリソースのリストを管理しています。[ 38 ] Codeplay Softwareもウェブサイトsycl.techでチュートリアルやSYCLエコシステムに関するその他の情報やニュースを提供しています。
ライセンス
仕様を構築するためのソースファイル(Makefileやいくつかのスクリプトなど)、SYCLヘッダー、SYCLコードサンプルはApache 2.0ライセンスの下にあります。[ 39 ]
他のツールとの比較
オープンスタンダードのSYCLとOpenCLは、 Nvidiaの独自スタックCUDAや、AMDがサポートするオープンソーススタックROCmのHIPのプログラミングモデルに似ています。[ 40 ]
Khronos Groupの領域では、OpenCLとVulkanは低レベルの非シングルソースAPIであり、ハードウェアリソースと操作をきめ細かく制御できます。OpenCLは様々なハードウェアタイプにわたる並列プログラミングに広く利用されており、Vulkanは主に高性能グラフィックスとコンピューティングタスクに重点を置いています。[ 41 ]
一方、SYCLは、高水準のシングルソースC++組み込みドメイン固有言語(eDSL)です。これにより、開発者はCPU、GPU、その他のアクセラレータを含む異種コンピューティングシステム向けのコードをシングルソースアプローチで記述できます。つまり、ホストコードとデバイスコードの両方を同じC++ソースファイルで記述できます。[ 42 ]
CUDA
比較すると、 CUDAの単一ソースC++組み込みドメイン固有言語版である「CUDAランタイムAPI」は、SYCLに多少似ています。実際、IntelはCUDAからSYCLへのコード自動変換ツールSYCLOMATICをリリースしました。[43] しかし、CUDAには「CUDAドライバーAPI」と呼ばれる、あまり知られていない非単一ソース版も存在します。これはOpenCLに似ており、例えばCUDAランタイムAPI実装自体で使用されています。[ 40 ]
SYCLはC++ AMPの機能を拡張し、バッファとアクセサを用いてホストとデバイス間で明示的にデータを転送する必要がなくなりました。これは、明示的なデータ転送が必要だったCUDA( CUDA 6でUnified Memoryが導入される前)とは対照的です。SYCL 2020以降では、 Unified Shared Memory(USM)を使用してバッファベースのインターフェースを置き換えるのではなく、拡張することも可能になりました。 [ 44 ] CUDAのUnified Memoryに類似した低レベルプログラミングモデルを提供します。 [ 45 ]
SYCLはC++ AMPやCUDAよりも高水準です。すべてのカーネル間の明示的な依存関係グラフを構築する必要がなく、通信と計算のオーバーラップを伴うカーネルの自動非同期スケジューリングを提供します。これらはすべて、アクセサの概念を用いて、コンパイラのサポートを必要とせずに実現されます。[ 46 ]
C++ AMPやCUDAとは異なり、SYCLはC++拡張を一切含まない純粋なC++ eDSLです。これにより、特定のコンパイラを必要とせず、純粋なランタイムに依存する基本的なCPU実装が可能になります。[ 42 ]
DPC++ [ 47 ]と AdaptiveCpp [ 48 ]コンパイラはどちらも、CUDAと同様にNVIDIA GPUへのバックエンドを提供しています。これにより、SYCLコードをNVIDIAハードウェア上でコンパイル・実行できるようになり、開発者はCUDA対応GPU上でSYCLの高レベル抽象化を活用できるようになります。[ 47 ] [ 48 ]
Intelは、 CUDA C++コードベースをSYCL C++に自動変換するフリーウェア「DPC++互換性ツール」(dpct)を提供しています。このツールにはSYCLomaticと呼ばれるオープンソース版があります。[ 49 ]
ROCm HIP
ROCm HIPは、Nvidia GPU、AMD GPU、x86 CPUを対象としています。HIPはCUDAのAPIによく似た低レベルAPIです。[ 50 ]例えば、AMDはCUDAコードをHIPに自動変換できるHIPIFYというツールをリリースしました。[ 51 ]そのため、CUDAとSYCLの比較で述べた多くの点は、HIPとSYCLの比較にも当てはまります。[ 52 ]
ROCm HIPは、様々なベンダー(AMDやNvidia)やアクセラレータの種類(GPUやCPU)をターゲットにできるという点で、SYCLと類似点があります。[ 53 ]しかし、SYCLはより幅広いアクセラレータとベンダーをターゲットにできます。SYCLはバックエンドの概念を通して、単一のアプリケーション内で複数の種類のアクセラレータを同時にサポートします。さらに、SYCLは純粋なC++で書かれていますが、HIPはCUDAと同様にいくつかの言語拡張を使用しています。これらの拡張により、HIPは標準のC++コンパイラではコンパイルできません。[ 52 ]
DPC++ [ 47 ]と AdaptiveCpp [ 48 ]コンパイラはどちらも、HIPと同様にNVIDIAおよびAMD GPU用のバックエンドを提供しています。これにより、SYCLコードをこれらのベンダーのハードウェア上でコンパイル・実行できるようになり、開発者はSYCLの高レベル抽象化を多様なデバイスやプラットフォームで柔軟に活用できるようになります。[ 48 ] [ 47 ]
コッコス
SYCLはKokkosプログラミングモデルと多くの類似点があり、[ 54 ]不透明な多次元配列オブジェクト(SYCLバッファとKokkos配列)、並列実行のための多次元範囲、リダクション(SYCL 2020で追加)の使用が含まれます。[ 55 ] SYCL 2020には、Kokkosコミュニティからのフィードバックに応えて多数の機能が追加されました。
SYCLはヘテロジニアスシステムに重点を置いており、OpenCLとの統合により幅広いデバイスに導入可能です。一方、KokkosはほとんどのHPCプラットフォームを対象としており[ 56 ]、パフォーマンスに関してはよりHPC指向となっています。
2024年現在、KokkosチームはSYCLバックエンドを開発しており[ 57 ] 、これによりKokkosは既にサポートしているプラットフォームに加えてIntelハードウェアもターゲットとすることができるようになります。この開発によりKokkosの適用範囲が広がり、HPCアプリケーション内で異なるハードウェアアーキテクチャを活用する柔軟性が向上します[ 54 ] 。
ラジャ
Raja [ 58 ] [ 59 ]は、HPCアプリケーションのアーキテクチャとプログラミングの移植性を可能にするC++ソフトウェア抽象化ライブラリです。
SYCLと同様に、Rajaは異機種プラットフォーム間で移植可能なコードを提供します。しかし、SYCLとは異なり、RajaはCUDA、HIP、OpenMPなどの他のプログラミングモデルの上に抽象化レイヤーを導入しています。これにより、開発者は一度コードを記述すれば、コアロジックを変更することなく、様々なバックエンドで実行できます。Rajaはローレンス・リバモア国立研究所(LLNL)で保守・開発されていますが、SYCLはコミュニティによって保守・開発されているオープンスタンダードです。[ 41 ]
Kokkosと同様に、RajaはHPCユースケースに特化しており、高性能コンピューティング環境におけるパフォーマンスとスケーラビリティに重点を置いています。一方、SYCLはより幅広いデバイスをサポートしているため、HPCだけでなく、さまざまな種類のアプリケーションに柔軟に対応できます。[ 59 ]
2024年現在、RajaチームはSYCLバックエンドを開発しており[ 60 ]、これによりRajaはIntelハードウェアもターゲットとすることが可能になります。この開発により、Rajaの移植性と柔軟性が向上し、SYCLの機能を活用し、より幅広いハードウェアプラットフォームへの適用範囲を拡大することが可能になります[ 41 ] 。
オープンMP
OpenMPは外部アクセラレータへの計算オフロードを目的としており[ 61 ] 、主にマルチコアアーキテクチャとGPUに焦点を当てています。一方、SYCLはOpenCLとの統合により、様々なタイプのハードウェアアクセラレータをサポートし、より幅広いデバイスを対象としています[ 62 ] 。
OpenMPはプラグマベースのアプローチを採用しており、プログラマーはコードにディレクティブを記述し、コンパイラーが並列実行とメモリ管理の複雑な部分を処理します。この高レベルの抽象化により、開発者はメモリ転送や同期といった複雑な詳細を扱うことなく、アプリケーションを並列化することが容易になります。[ 63 ]
OpenMPとSYCLはどちらもC++をサポートし、標準化されています。OpenMPはOpenMP Architecture Review Board(ARB)によって標準化されており、SYCLはKhronos Groupによって標準化されています。[ 41 ]
OpenMPはGCCやClangなどの様々なコンパイラから広くサポートされています。[ 64 ]
std::par
std::parはC++17標準[ 65 ]の一部であり、C++標準コンテナ上で標準アルゴリズムの並列実行を容易にするように設計されています。開発者が、、、などの並列演算の実行ポリシーを指定できるようにすることで、外部アクセラレータを活用するための標準的な方法を提供しますstd::for_each。std::transformこれstd::reduceにより、コードに大きな変更を加えることなく、マルチコアプロセッサやその他の並列ハードウェアを効率的に利用できるようになります。[ 66 ]
SYCLはのバックエンドとして使用できstd::par、Intel、AMD、NVIDIAのGPUやその他の種類のアクセラレータを含む幅広い外部アクセラレータ上で標準アルゴリズムを実行できます。[ 67 ] SYCLの機能を活用することで、開発者は異機種コンピューティング環境でシームレスに実行される標準C++コードを記述できます。この統合により、異なるハードウェアプラットフォーム間での柔軟性とパフォーマンスの最適化が向上します。[ 67 ]
SYCLをバックエンドとして使用するにはstd::parコンパイラに依存します。つまり、SYCLとC++17で導入された並列実行ポリシーの両方をサポートするコンパイラが必要です。[ 67 ]このようなコンパイラの例としては、DPC++やその他のSYCL準拠コンパイラが挙げられます。これらのコンパイラを使用することで、開発者は使い慣れたC++標準アルゴリズムと実行ポリシーを使用しながら、SYCLのメモリ管理と並列実行における抽象化を活用できます。[ 47 ]
参照
参考文献
- ^ 「Khronos SYCLレジストリ - The Khronos Group Inc」 . registry.khronos.org .
- ^ Keryell, Ronan (2019年11月17日). 「SYCL: 異機種混在コンピューティングのための単一ソースC++標準」(PDF) . Khronos.org . 2023年9月26日閲覧。
- ^ Keryell, Ronan. 「SYCLの意味」 . GitHub . 2021年2月5日閲覧。
- ^ Khronos Group (2014年3月19日). 「Khronos、SYCL 1.2暫定仕様をリリース」 . Khronos . 2017年8月20日閲覧。
- ^ Khronos Group (2015年5月11日). 「Khronos、SYCL 1.2最終仕様を発表」 . Khronos . 2017年8月20日閲覧。
- ^ Khronos Group (2017年12月6日). 「Khronos Group、最終版SYCL 1.2.1をリリース」 . Khronos . 2017年12月12日閲覧。
- ^ Khronos Group (2016年4月18日). 「Khronos、OpenCL C++カーネル言語を含むOpenCL 2.2暫定仕様をリリース」 . Khronos . 2017年9月18日閲覧。
- ^ Khronos Group (2021年2月9日). 「Khronos、SYCL 2020仕様をリリース」 . Khronos . 2021年2月22日閲覧。
- ^ Khronos Group (2020年6月30日). 「Khronos、SYCL 2020暫定仕様のリリースによりSYCLの普及拡大へ」 . Khronos . 2020年12月4日閲覧。
- ^ 「SYCL State of the Union 基調講演 SYCLCon 2021」(PDF)。www.iwocl.org 。
- ^レインダース、ジェームズ。「SYCL、DPC++、XPU、oneAPI」(PDF)。www.iwocl.org。
- ^ 「クロスアーキテクチャーのコンパイル: Intel® oneAPI DPC++/C++ コンパイラー」。
- ^ 「ホーム - ComputeCpp CE - 製品 - Codeplay Developer」。
- ^ 「ガイド - ComputeCpp CE - 製品 - Codeplay Developer」。
- ^ 「ComputeCppの将来」 www.codeplay.com . 2023年12月9日閲覧。
- ^ 「AdaptiveCpp機能のサポート」 . GitHub . 2023年7月4日.
- ^「AdaptiveCpp/doc/compilation.md at develop · AdaptiveCpp/AdaptiveCpp」。GitHub 。
- ^ 「AdaptiveCpp(旧称hipSYCL / Open SYCL)」 . GitHub . 2023年7月4日.
- ^ “triSYCL” . GitHub . 2022年1月6日.
- ^ Ke, Yinan; Agung, Mulya; Takizawa, Hiroyuki (2021). 「NeoSYCL: SX-Aurora TSUBASA 向け SYCL 実装」 .アジア太平洋地域における高性能コンピューティングに関する国際会議. pp. 50– 57. doi : 10.1145/3432261.3432268 . ISBN 9781450388429. S2CID 231597238 .
- ^ Ke, Yinan; Agung, Mulya; Takizawa, Hiroyuki (2021). 「NeoSYCL: SX-Aurora TSUBASA 向け SYCL 実装」 .アジア太平洋地域における高性能コンピューティングに関する国際会議. pp. 50– 57. doi : 10.1145/3432261.3432268 . ISBN 9781450388429. S2CID 231597238 .
- ^ “Sycl-GTX” . GitHub . 2021年4月10日.
- ^ “Sycl-GTX” . GitHub . 2021年4月10日.
- ^ “Sycl-GTX” . GitHub . 2021年4月10日.
- ^ Thoman, Peter; Gogl, Daniel; Fahringer, Thomas. 「Sylkan - SYCL向けVulkanコンピューティングターゲットプラットフォームに向けて」(PDF) .
- ^ 「Polygeist」 . GitHub . 2022年2月25日.
- ^ 「Inteon」 . 2022年2月25日.
- ^ a b「クロノス、セーフティクリティカルなC++ベースの異機種コンピューティング向けSYCL SCオープンスタンダードを策定」クロノス・グループ2023年3月15日 . 2024年7月10日閲覧。
- ^ "MISRA" . 2024年7月11日閲覧。
- ^ 「ED-12C 航空ソフトウェア標準トレーニング - 空中」Eurocae . 2024年7月11日閲覧。
- ^ 「SOTIF – 実践トレーニング」 www.kuglermaag.com . 2024年7月11日閲覧。
- ^ Trevett, Neil. 「State of the Union OpenCL Working Group」(PDF) . www.iwocl.org .
- ^クリスシ、ルイージ;サリミ・ベニ、マジッド。コゼンツァ、ビアジオ。シピオーネ、ニコロ。ガディオーリ、ダビデ。ヴィターリ、エマヌエーレ。パレルモ、ジャンルカ;ベッカリ、アンドレア (2022-05-10)。「SYCL 2020 によるポータブル創薬パイプラインに向けて」。OpenCLに関する国際ワークショップ。 IWOCL'22。米国ニューヨーク州ニューヨーク州: コンピューティング機械協会。 pp. 1–2 . doi : 10.1145/3529538.3529688。ISBN 978-1-4503-9658-5。
- ^ Solis-Vasquez, Leonardo; Mascarenhas, Edward; Koch, Andreas (2023-04-18). 「CUDAからSYCLへの移行経験:分子ドッキングのケーススタディ」 . International Workshop on OpenCL . IWOCL '23. ニューヨーク州ニューヨーク:Association for Computing Machinery. pp. 1– 11. doi : 10.1145/3585341.3585372 . ISBN 979-8-4007-0745-2。
- ^ "Llama.CPP/Docs/Backend/SYCL.md at master · ggerganov/Llama.CPP" . GitHub .
- ^ Rudkin, Illya. 「SYCLとOpenCLは機能安全の課題に対応できるか」(PDF) . 2021年4月9日.
- ^ Rangel, Esteban Miguel; Pennycook, Simon John; Pope, Adrian; Frontiere, Nicholas; Ma, Zhiqiang; Madananth, Varsha (2023-11-12). 「エクサスケール向けCRK-HACCの性能ポータブルなSYCL実装」 . SC '23ワークショップ議事録. SC-W '23. ニューヨーク、ニューヨーク州、米国: Association for Computing Machinery. pp. 1114– 1125. arXiv : 2310.16122 . doi : 10.1145/3624062.3624187 . ISBN 979-8-4007-0785-8。
- ^ 「SYCLリソース」 . khronos.org . Khronosグループ. 2014年1月20日.
- ^ 「SYCLオープンソース仕様」GitHub。2022年1月10日。
- ^ a b Breyer, Marcel; Van Craen, Alexander; Pflüger, Dirk (2022-05-10). 「マルチベンダーハードウェアにおける大規模並列サポートベクターマシン分類のためのSYCL、OpenCL、CUDA、OpenMPの比較」 . International Workshop on OpenCL . IWOCL '22. ニューヨーク州ニューヨーク:Association for Computing Machinery. pp. 1– 12. doi : 10.1145/3529538.3529980 . ISBN 978-1-4503-9658-5。
- ^ a b c d「SYCL - C++シングルソース異種プログラミングによるアクセラレーションオフロード」クロノス・グループ2014年1月20日. 2024年7月12日閲覧。
- ^ a b「SYCL™ 2020仕様(リビジョン8)」 . registry.khronos.org . 2024年7月12日閲覧。
- ^ oneapi-src/SYCLomatic、oneAPI-SRC、2024-07-11、2024-07-11取得
- ^ 「SYCL™ 2020仕様(リビジョン9)、4.8. 統合共有メモリ(USM)」 。 2024年10月30日閲覧。
- ^ Chen, Jolly; Dessole, Monica; Varbanescu, Ana Lucia (2024-01-24)、「CUDA から SYCL への移行から学んだ教訓: ROOT RDataFrame を使用した HEP のケーススタディ」、arXiv : 2401.13310
- ^ 「バッファアクセサモード」 Intel 2024年7月11日閲覧。
- ^ a b c d e「DPC++ ドキュメント — oneAPI DPC++ コンパイラー ドキュメント」 . intel.github.io . 2024年7月11日閲覧。
- ^ a b c d "AdaptiveCpp/doc/sycl-ecosystem.md at develop · AdaptiveCpp/AdaptiveCpp" . GitHub . 2024年7月11日閲覧。
- ^ 「CUDA* から DPC++ コードへの移行: インテル® DPC++ 互換性ツール」。インテル。
- ^ ROCm/HIP、AMD ROCm™ソフトウェア、2024年7月11日、 2024年7月11日取得
- ^ "HIPIFY/README.md at amd-staging · ROCm/HIPIFY" . GitHub . 2024年7月11日閲覧。
- ^ a b Jin, Zheming; Vetter, Jeffrey S. (2022年11月). 「GPUにおけるHIPとSYCLの非一様縮約の評価」. 2022 IEEE/ACM 第8回ビッグサイエンティフィックデータのためのデータ分析と縮約に関する国際ワークショップ (DRBSD) . IEEE. pp. 37– 43. doi : 10.1109/DRBSD56682.2022.00010 . ISBN 978-1-6654-6337-9. OSTI 1996715 .
- ^ Reguly, Istvan Z. (2023-11-12). 「帯域幅制限のあるアプリケーションにおけるCPUとGPU間のSYCLの性能移植性の評価」 . SC '23ワークショップ議事録、国際高性能コンピューティング、ネットワーク、ストレージ、および分析会議. SC-W '23. ニューヨーク、ニューヨーク州、米国: Association for Computing Machinery. pp. 1038– 1047. arXiv : 2309.10075 . doi : 10.1145/3624062.3624180 . ISBN 979-8-4007-0785-8。
- ^ a b Hammond, Jeff R.; Kinsner, Michael; Brodman, James (2019). 「C++アプリケーションのための異種並列プログラミングモデルとしてのKokkosとSYCLの比較分析」 . Proceedings of the International Workshop on OpenCL . pp. 1– 2. doi : 10.1145/3318170.3318193 . ISBN 9781450362306. S2CID 195777149 .
- ^ Dufek, Amanda S.; Gayatri, Rahulkumar; Mehta, Neil; Doerfler, Douglas; Cook, Brandon; Ghadar, Yasaman; DeTar, Carleton (2021年11月). 「NVIDIA、AMD、Intel GPUにおけるMilc-DslashベンチマークのパフォーマンスポータブルフレームワークとしてKokkosとSYCLを使用するケーススタディ」. 2021 International Workshop on Performance, Portability and Productivity in HPC (P3HPC) . IEEE. pp. 57– 67. doi : 10.1109/P3HPC54578.2021.00009 . ISBN 978-1-6654-2439-4。
- ^ Trott, Christian R.; Lebrun-Grandié, Damien; Arndt, Daniel; Ciesko, Jan; Dang, Vinh; Ellingwood, Nathan; Gayatri, Rahulkumar; Harvey, Evan; Hollman, Daisy S. (2022)、「Kokkos 3: Programming Model Extensions for the Exascale Era」、IEEE Transactions on Parallel and Distributed Systems、33 (4): 805、Bibcode : 2022ITPDS..33..805T、doi : 10.1109/TPDS.2021.3097283 、2024年7月10日取得
- ^ Arndt, Daniel; Lebrun-Grandie, Damien; Trott, Christian (2024-04-08). 「KokkosのSYCLバックエンド実装の経験」 .第12回OpenCLおよびSYCL国際ワークショップ議事録. IWOCL '24. ニューヨーク州ニューヨーク:Association for Computing Machinery. pp. 1– 11. doi : 10.1145/3648115.3648118 . ISBN 979-8-4007-1790-1. OSTI 2336667 .
- ^ LLNL/RAJA、ローレンス・リバモア国立研究所、2024年7月8日、 2024年7月10日閲覧
- ^ a b Beckingsale, David A.; Scogland, Thomas RW; Burmark, Jason; Hornung, Rich; Jones, Holger; Killian, William; Kunen, Adam J.; Pearce, Olga; Robinson, Peter; Ryujin, Brian S. (2019年11月). 「RAJA: 大規模科学アプリケーションのためのポータブルパフォーマンス」. 2019 IEEE/ACM 国際ワークショップ on Performance, Portability and Productivity in HPC (P3HPC) . IEEE. pp. 71– 81. doi : 10.1109/P3HPC49587.2019.00012 . ISBN 978-1-7281-6003-0. OSTI 1488819 .
- ^ Homerding, Brian; Vargas, Arturo; Scogland, Tom; Chen, Robert; Davis, Mike; Hornung, Rich (2024-04-08). 「SYCLを用いたIntel GPUでのRAJAの有効化」 .第12回OpenCLおよびSYCL国際ワークショップ議事録. IWOCL '24. ニューヨーク州ニューヨーク:Association for Computing Machinery. pp. 1– 10. doi : 10.1145/3648115.3648131 . ISBN 979-8-4007-1790-1。
- ^ tim.lewis. 「ホーム」 . OpenMP . 2024年7月10日閲覧。
- ^ 「OpenCL - 異機種混在システムの並列プログラミングのためのオープンスタンダード」 . The Khronos Group . 2013年7月21日. 2024年7月12日閲覧。
- ^ Friedman, Richard. 「リファレンスガイド」 . OpenMP . 2024年7月12日閲覧。
- ^ 「OpenMP コンパイラとツール」。
- ^ "std::execution::seq, std::execution::par, std::execution::par_unseq, std::execution::unseq - cppreference.com" . en.cppreference.com . 2024年7月10日閲覧。
- ^ 「stdparを使用したGPUによる標準C++の高速化」 NVIDIA技術ブログ。2020年8月4日。 2024年7月10日閲覧。
- ^ a b c Alpay, Aksel; Heuveline, Vincent (2024-04-08). 「AdaptiveCpp Stdpar: C++ 標準並列処理を SYCL コンパイラに統合」 .第 12 回 OpenCL および SYCL 国際ワークショップ議事録. IWOCL '24. ニューヨーク州ニューヨーク: Association for Computing Machinery. pp. 1– 12. doi : 10.1145/3648115.3648117 . ISBN 979-8-4007-1790-1。
外部リンク
- Khronos SYCLウェブページ
- KhronosレジストリのSYCL仕様
- SYCL の C++17 ParallelSTL
- SYCL技術リソース
- Codeplay ComputeCpp SYCL実装
- Clang/LLVMアップストリームを目標にIntelが開始したSYCLの実装
- AdaptiveCpp(旧称:hipSYCL / Open SYCL)
- triSYCL オープンソース SYCL 実装
- 「SYCL 2020、新名称、新機能、そして高い志を持って始動」HPCWire記事(2021年2月9日)
- James Reinders、Ben Ashbaugh、James Brodman、Michael Kinsner、John Pennycook、Xinmin Tian:「データ並列C++:C++とSYCLを使用した異種システムのプログラミングのためのDPC++の習得」、Apress(2021)、OpenAccess。