Skip to content

Latest commit

 

History

History
16 lines (11 loc) · 1.56 KB

File metadata and controls

16 lines (11 loc) · 1.56 KB

ReflMem++

A research project that investigates the usage of C++ reflection (P2996) and token injection (P3294) in modifying the memory layout of a data structure, while keeping the same view.

The goal is to have a data structure with a user-friendly interface that is independent of its memory layout. This enables fast prototyping of memory access patterns to optimize memory performance on different architectures.

Currently we have only implemented conversion of an Array-of-Structures (AoS) with a struct S to a Struct-of-Arrays (SoA), but we plan to include other layouts (e.g., AoSoA) and data reordering.

Project Structure

  • clang-p2996: contains different methods tested with Clang's P2996 compiler.
  • edg: contains a conversion method using token sequence injection and can only be compiled with the EDG reflection compiler.
  • manual: contains a manually written examples of what code is generated for each method in clang-p2996 and edg.

Publications & Presentations