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.