Skip to content

cern-nextgen/reflmempp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Experimental data structures with views independent from the memory layout using C++ reflection (P2996 and P3294)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors