alpaka-group/alpaka

Abstraction Library for Parallel Kernel Acceleration :llama:

解决的问题

Alpaka 是一个头文件-only 的 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。
  • 性能可移植性:单个内核实现即可适用于多个平台。
  • 运行时选择:可在运行时决定由哪个加速器后端执行内核。
  • 头文件-only:库为头文件-only,无需自行构建库文件。
  • 平台无关:可在 Linux、Windows 和 macOS 上运行。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目