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 上運作。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案