triSYCL 是一個研究項目,旨在試驗 SYCL 標準規範並向 Khronos Group SYCL_committee 和 ISO C++ 委員會提供回饋。
最近,該專案已被用於試驗 AMD AIE CGRA 的高級 C++ 編程,其靈感來自於一些 SYCL 概念,如 ACAP++ 和 AIE++:AMD Versal AIE CGRA 架構的 C++ 擴充中所述。
由於缺乏資源,此 SYCL 實作非常不完整,一般最終用戶不應使用。幸運的是,現在有許多其他 SYCL 實現可用,包括一些強大的實現,如 DPC++ 或 hipSYCL,可用於各種目標。
此實作主要基於OpenMP 或TBB 支援的C++23 功能,用於在CPU 上並行執行,Boost.Compute 用於非單一來源OpenCL 互通層,以及用於裝置編譯器的實驗性LLVM/Clang 版本(來自2017-2018(現已過時)提供完整的單源 SYCL 體驗,通常針對 SPIR 設備。由於在 SYCL 中存在主機回退,因此此 CPU 實作也可以視為該回退的實作。
自2018 年左右以來,Intel 在自己的oneAPI DPC++ SYCL 項目中投入了大量精力,將SYCL 上游到LLVM/Clang,還有另一個關於將oneAPI DPC++ SYCL 實現與triSYCL 合併的項目,網址為https:// github.com/triSYCL /sycl 為 AMD FPGA 提供更好的使用者體驗,而不是使用我們過時的實驗性笨重設備編譯器。但這仍然是非常實驗性的,因為 AMD 工具鏈是基於舊的不相容版本的 LLVM/Clang,而 AMD 產品團隊不支援這些。
triSYCL 已用於對 SYCL 1.2、1.2.1、2.2、2020 甚至 OpenCL 2.2 中的 OpenCL C++ 1.0 核心語言進行實驗並提供回饋。
這是按原樣提供的,沒有任何保證,具有與 LLVM/Clang 相同的許可證。
技術負責人:keryell point FR 的 Ronan。開發工作首先由 AMD 開始,然後主要由 Xilinx 資助,現在又由 AMD 資助,因為 Xilinx 已於 2022 年被 AMD 收購。
如果您具備與該計畫相關的一些技能,則可以在 triSYCL 周圍進行帶薪實習。請聯絡技術負責人以了解此事。 AMD 也在該領域招募...:-)
SYCL 是一種基於C++ 的單源現代DSEL(領域特定嵌入式語言)和Khronos 的開放標準,旨在透過利用受OpenCL、CUDA、C++AMP、OpenMP 啟發的現有概念來促進異質加速器的程式設計...
典型的核心及其啟動看起來像這樣的純現代 C++ 程式碼:
queue {}.submit([&](handler &h) {
auto accA = bufA. get_access < access ::mode:: read >(h);
auto accB = bufB. get_access < access ::mode:: write >(h);
h. parallel_for < class myKernel >(myRange, [=](item i) {
accA[i] = accB[i] + 1 ;
});
});
如需完整範例,請參閱 https://github.com/triSYCL/triSYCL/blob/master/tests/examples/demo_parallel_matrix_add.cpp。
SYCL 是在 Khronos SYCL 委員會內部開發的,因此,有關 SYCL 的更多信息,請訪問 https://www.khronos.org/sycl
請注意,即使 SYCL 背後的概念受到 OpenCL 概念的啟發,SYCL 程式設計模型也是非常通用的非同步任務圖模型,用於針對各種框架和 API 的異構計算,與 OpenCL 本身沒有任何關係,除非使用OpenCL API 互通模式,像其他目標一樣。
對於 SYCL 生態系統,請查看 https://sycl.tech
我們目前的大部分工作都集中在擴充功能上,例如針對 AMD FPGA 和 Versal ACAP AIE CGRA,提供一種在單源 C++ 程式中同時對 CPU、GPU、FPGA 和 CGRA 進行程式設計的方法。
該項目仍在進行中,目前我們僅部分針對第一代設備 AIE/AIE1,而 AMD RyzenAI 的當前型號(例如 Ryzen 9 7940HS)具有 AIE-ML/AIE2 作為 XDNA/NPU/議會聯盟。
第一代程式設計模型 ACAP++ 是基於 C++17/C++20 建構。
請參閱https://github.com/triSYCL/sycl/blob/sycl/unified/master/sycl/test/acap/test_aie_mandelbrot.cpp 及周圍、tests/acap 和其他以acap 開頭的目錄,以了解一些在純C++中運行的程式碼範例使用該專案進行庫 CPU 仿真。
請參閱 doc/acap.rst 以了解有關如何安裝/使用 ACAP++ 環境的更多資訊。
CPU 模擬和 AIE 設備的運行時位於 include/triSYCL/vendor/Xilinx 中,也需要 https://github.com/triSYCL/sycl 提供的特殊編譯器才能在 VCK190 板上運作。
第二代程式設計模型 AIE++ 是基於 C++23/C++26 構造,允許更簡潔的語法。
請參閱 https://github.com/triSYCL/sycl/blob/sycl/unified/master/sycl/test/aie/mandelbrot.cpp 以取得一些範例。
CPU 模擬和 AIE 設備支援的運行時位於 include/aie 中,設備支援的編譯器位於 https://github.com/triSYCL/sycl
其他與 AIE 相關且對 AIE 程式設計感興趣的開源專案:
有關 AMD AIE CGRA 的一些文件:
請參閱 SYCL 以了解一些背景資訊、簡報清單和一些相關項目。
SYCL是一個模板庫,因此不需要真正安裝。
不過,您可以建立一些範例。
請參閱測試。
triSYCL 執行時期和編譯器的架構使用一些進階圖表描述了程式碼庫,也描述如何在某些 AMD FPGA 上編譯和使用過時的裝置編譯器。現在請查看 https://github.com/triSYCL/sycl。
有關 CMake 配置和組織的一些詳細資訊可以在 CMake 中找到。
是的,triSYCL 中使用了一些巨集!查看 triSYCL 中使用的預處理器巨集以發現其中的一些巨集。
請參閱 triSYCL 的環境變數。
請參閱可能的未來。
triSYCL 實作本身的文件可以在 https://trisycl.github.io/triSYCL/Doxygen/triSYCL/html 和 https://trisycl.github.io/triSYCL/Doxygen/triSYCL/triSYCL-implementation-refman 中找到.pdf
ctest
,並且可以在 Windows 10 上使用 Visual Studio 2017。 :-) 更多信息