LLAMA is a cross-platform C++17/C++20 header-only template library for the abstraction of data layout and memory access. It separtes the view of the algorithm on the memory and the real data layout in the background. This allows for performance portability in applications running on heterogeneous hardware with the very same code.
Our extensive user documentation is available on Read the Docs. It includes:
- Installation instructions
- Motivation and goals
- Overview of concepts and ideas
- Descriptions of LLAMA's constructs
An API documentation is generated by Doxygen from the C++ source. Please read the documentation on Read the Docs first!
LLAMA tries to stay close to recent developments in C++ and so requires fairly up-to-date compilers. The following compilers are supported by LLAMA and tested as part of our CI:
Linux | Windows | MacOS |
---|---|---|
g++ 10 - 13 clang++ 12 - 17 icpx (latest) nvc++ 23.5 nvcc 11.6 - 12.3 |
Visual Studio 2022 (latest on GitHub actions) |
clang++ (latest from brew) |
We create a single-header version of LLAMA on each commit, which you can find on the single-header branch.
This also useful, if you would like to play with LLAMA on Compiler explorer:
#include <https://raw.githubusercontent.com/alpaka-group/llama/single-header/llama.hpp>
We greatly welcome contributions to LLAMA. Rules for contributions can be found in CONTRIBUTING.md.
We published an article on LLAMA in the journal of Software: Practice and Experience. We gave a talk on LLAMA at CERN's Compute Accelerator Forum on 2021-05-12. The video recording (starting at 40:00) and slides are available here on CERN's Indico. Mind that some of the presented LLAMA APIs have been renamed or redesigned in the meantime.
We presented recently added features to LLAMA at the ACAT22 workshop as a poster and a contribution to the proceedings. Additionally, we gave a talk at ACAT22 on LLAMA's instrumentation capabilities during a case study on AdePT, again, with a contribution to the proceedings.
If you use LLAMA for scientific work, please consider citing this project. We upload all releases to Zenodo, where you can export a citation in your preferred format. We provide a DOI for each release of LLAMA. Additionally, consider citing the LLAMA paper.
LLAMA is licensed under the MPL-2.0.