Skip to content

Memory Overhaul

Slattery, Stuart requested to merge (removed):memory_overhaul into master

This merge request does the following:

  • Cleans the MemberSlice interface for a more clear and consistent separation of operator() data access and raw pointer data access.
  • Refactors the memory infrastructure of MemberSlice to store field data in an unmanaged Kokkos::View with LayoutStride data. The striding is defined differently for LayoutLeft and LayoutRight
  • The refactored memory via the Kokkos::View allows for immediate access to other memory traits. For example, slices can now be default access memory which uses the __restrict__ keyword to enable potential vectorization, random access const memory (for better CUDA performance), and atomic access memory (which can let the user avoid writing their own atomics in many cases)
  • A new construction model for slices within the AoSoA. A user now specifies the member index and, optionally, the memory access type for the slice. This allows us to defer to that last possible moment what type of memory access traits we would like our slices to have.
  • A complete cleaning of the AoSoA template parameters. Some parameters are now only needed in the slices and therefore we can remove some from the AoSoA.
  • A new set of memory space, memory access type, and layout concepts with encapsulate Cabana variations of similar Kokkos concepts. These are defined in Cabana_Types.hpp
Edited by Slattery, Stuart

Merge request reports