alpaka

The alpaka library is a header-only C++17 abstraction framework designed for computing accelerator development. It enables developers to implement algorithms once and execute them across a range of platforms, including x86, ARM, and RISC-V CPUs, as well as accelerators from NVIDIA, AMD, and Intel.

71
mentions
34
contributors

Cite this software

What alpaka can do for you

The alpaka library is a header-only C++17 abstraction library for accelerator development.

It aims to provide performance portability across accelerators through the abstraction (not hiding!) of the underlying levels of parallelism.

It is platform-independent and supports the concurrent and cooperative use of multiple devices such as the host CPU (x86, ARM, RISC-V, and Power 8+) and GPU accelerators from different vendors (NVIDIA, AMD, and Intel).
A multitude of accelerator back-end variants using CUDA, HIP, SYCL, OpenMP 2.0+, std::thread, and also serial execution is provided and can be selected depending on the device.
Only one implementation of the user kernel is required by representing them as function objects with a special interface.
There is no need to write special CUDA, HIP, SYCL, OpenMP, or custom threading code.
Accelerator back-ends can be mixed and synchronized via the compute device queue.
The decision which accelerator back-end executes which kernel can be made at runtime.

With its robust development and testing standards, alpaka ensures a software-ready solution for both industry and research applications, making it a versatile tool for high-performance computing.

Related projects

PIConGPU

PIConGPU is an extremely scalable and platform-portable application for particle-in-cell simulations. While we mainly use it to study laser-plasma interactions, it has also found utility in astrophysical studies and simulations of matter under extreme conditions.

PMacc

PMacc, an acronym for 'Particle Mesh Accelerated', provides fundamental parallel algorithms and data structures critical to the core operations of the PIConGPU. It serves as the foundation upon which all physics methods are built. Currently, the library remains an integral part of the PIConGPU framework.

mallocMC

MallocMC provides a framework for fast memory managers on many-core accelerators. It is based on alpaka to run on many different accelerators and implements the ScatterAlloc algorithm.

LLAMA

In PIConGPU, we utilize LLAMA, a cross-platform C++ library, to abstract data layout and memory access. LLAMA decouples the algorithm's memory view from the actual layout, ensuring performance portability across diverse hardware platforms, simplifying development, and enabling seamless utilization of heterogeneous hardware.

ISAAC

To directly investigate and visualize simulations as they are running, PIConGPU relies on ISAAC. This library offers an efficient solution to visualize data in real-time, leveraging the computational power of accelerators like GPUs without the need to transfer vast amounts of data to the host. With a server, in situ library, and adaptable HTML5 client, ISAAC seamlessly integrates into simulations, allowing users to observe and even interact with computations as they happen, enhancing the efficiency and flexibility of data analysis and simulation optimization.

Logo of alpaka
Keywords
Programming languages
  • C++ 89%
  • CMake 6%
  • Python 3%
  • Shell 3%
License
</>Source code

Participating organisations

Helmholtz-Zentrum Dresden-Rossendorf
European Organization for Nuclear Research

Reference papers

Mentions

Contributors

SE
Simeon Ehrig
Helmholtz-Zentrum Dresden-Rossendorf
BG
Bernhard Manfred Gruber
CASUS, Helmholtz-Zentrum Dresden-Rossendorf, CERN
SM
Stewart Martin-Haugh
STFC Rutherford Appleton Laboratory
AT
Andres Rios Tascon
Princeton University
RW
René Widera
Helmholtz-Zentrum Dresden-Rossendorf
SB
Sergei Bastrakov
Helmholtz-Zentrum Dresden-Rossendorf
KB
Kseniia Bastrakova
Helmholtz-Zentrum Dresden-Rossendorf
MC
Mat Colgrove
NVIDIA
ADP
Antonio Di Pilato
CASUS, Helmholtz-Zentrum Dresden-Rossendorf, CERN
LF
Luca Ferragina
CERN

Related software

PIConGPU

PI

PIConGPU is a relativistic Particle-in-Cell code running on graphic processing units as well as regular multi-core processors. It is Open Source und is freely available for download. It can be used to study plasmas with relativistic dynamics, solving the Maxwell-Vlasov system of equations.

Updated 3 months ago
505 11