alpaka-group/alpaka
Abstraction Library for Parallel Kernel Acceleration :llama:
What it solves
Alpaka is a header-only C++20 abstraction library designed to provide performance portability across different hardware accelerators. It allows developers to write a single implementation of a parallel kernel without having to write separate code for different vendor-specific APIs like CUDA, HIP, SYCL, or OpenMP.
How it works
Alpaka uses a domain decomposition strategy similar to the CUDA grid-blocks-threads model. Algorithms are divided into a multi-dimensional grid of uniform work items (kernels) executed in parallel threads. These threads are organized into blocks, where threads within a block can interact via fast shared memory and low-level synchronization. Blocks are executed independently, allowing the library to adapt the execution to the available hardware at runtime.
Who it’s for
It is intended for accelerator developers and scientists who need to run high-performance parallel code across diverse hardware, including CPUs (x86, ARM, RISC-V, Power 8+) and GPUs from NVIDIA, AMD, and Intel.
Highlights
- Multi-Backend Support: Supports CUDA, HIP, SYCL, OpenMP, std::thread, and TBB.
- Performance Portability: A single kernel implementation is required for multiple platforms.
- Runtime Selection: The decision of which accelerator back-end executes a kernel can be made at runtime.
- Header-Only: The library is header-only and requires no building of the library itself.
- Platform Independent: Works across Linux, Windows, and macOS.
Related
- Project
- Project
- Project
- Project
- Project