Choosing the best memory layout for each hardware architecture is increasingly important as more and more programs become memory bound. For portable codes that run across heterogeneous hardware architectures, the choice of the memory layout for data structures is ideally decoupled from the rest of a program. The low-level abstraction of memory access (LLAMA) is a C++ library that provides a zero-runtime-overhead abstraction layer, underneath which memory mappings can be freely exchanged to customize data layouts, memory access and access instrumentation, focusing on multidimensional arrays of nested, structured data. After its scientific debut, several improvements and extensions have been added to LLAMA. This includes compile-time array extents for zero-memory-overhead views, support for computations during memory access, new mappings for bit-packing, switching types, byte-splitting, memory access instrumentation, and explicit SIMD support. This contribution provides an overview of recent developments in the LLAMA library.
翻译:随着越来越多的程序受限于内存性能,针对不同硬件架构选择最佳内存布局变得日益重要。对于需跨异构硬件平台运行的可移植代码,数据结构的内存布局选择理想情况下应与程序其余部分解耦。低层级内存访问抽象(LLAMA)是一种C++库,提供零运行时开销的抽象层,可在其下层自由交换内存映射以定制数据布局、内存访问及访问检测,重点针对嵌套结构化数据的多维数组。自其科学首秀以来,LLAMA已获得多项改进与扩展,包括:零内存开销视图的编译期数组维度扩展、内存访问时计算支持、位压缩映射、类型切换、字节拆分、内存访问检测及显式SIMD支持。本文概述了LLAMA库的最新发展动态。