LLAMA

LLAMA is a cross-platform C++17/C++20 header-only template library for the abstraction of data layout and memory access. It separates the view of the algorithm on the memory and the real data layout in the background.

2
mentions
2
contributors
Get started
1735 commits | Last commit 10 months ago

Cite this software

What LLAMA can do for you

The LLAMA (Low-Level Abstraction for Memory Access) project provides a C++17 template-based library aimed at abstracting memory access patterns for high-performance computing. Its main focus is on optimizing memory layouts across diverse hardware architectures such as multi-core CPUs and GPUs. One of LLAMA's key innovations is its memory abstraction capabilities, which allow users to separate the view of the data from its actual memory representation.

This flexibility allows for various data layout optimizations, such as struct-of-arrays (SoA), array-of-structs (AoS), and even more complex nested or multidimensional layouts. By providing tools to control and optimize how data is structured in memory, LLAMA improves performance across different hardware architectures without modifying the algorithm. It also supports the use of padding, striding, and other access patterns, making it highly customizable and portable.

Related projects

alpaka

PIConGPU achieves hardware parallelization through the alpaka library, a C++17 tool for accelerator development. It offers performance portability across accelerators, supports CPUs and CUDA GPUs, and provides backend options for concurrent execution, streamlining parallelization without requiring CUDA or threading code. Its approach mirrors CUDA's grid-blocks-threads model for optimal hardware adaptation.

Participating organisations

Helmholtz-Zentrum Dresden-Rossendorf

Reference papers

Mentions

Contributors

RW
René Widera
Helmholtz-Zentrum Dresden-Rossendorf
AM
Alexander Matthes
Helmholtz-Zentrum Dresden-Rossendorf, TU Dresden

Related software

alpaka

AL

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.

Updated 2 months ago
71 34