alpaka-group/alpaka
Abstraction Library for Parallel Kernel Acceleration :llama:
解決的問題
Alpaka 是一個僅含標頭檔的 C++20 抽象化函式庫,旨在為不同硬體加速器提供效能可移植性。它讓開發者能撰寫單一的平行內核實作,而無需為 CUDA、HIP、SYCL 或 OpenMP 等不同廠商的 API 分別撰寫程式碼。
工作原理
Alpaka 使用類似於 CUDA 網格-區塊-執行緒模型的領域分解策略。演算法被分割成多維度的均勻工作項目(內核),在平行執行緒中執行。這些執行緒被組織成區塊,區塊內的執行緒可透過快速共用記憶體與低階同步進行互動。區塊之間獨立執行,使函式庫能在執行時根據可用硬體適應執行方式。
適用對象
適合需要在多樣硬體(包括 x86、ARM、RISC-V、Power 8+ 的 CPU,以及 NVIDIA、AMD、Intel 的 GPU)上執行高效能平行程式碼的加速器開發者與科學家。
主要特色
- 多後端支援:支援 CUDA、HIP、SYCL、OpenMP、std::thread 與 TBB。
- 效能可移植性:單一內核實作即可適用於多個平台。
- 執行時選擇:可在執行時決定由哪個加速器後端執行內核。
- 僅含標頭檔:函式庫為僅含標頭檔設計,無需自行建置函式庫。
- 平台無關:可在 Linux、Windows 與 macOS 上運作。
相關
- 專案
- 專案
- 專案
- 專案
- 專案