The source project of this merge request has been removed.
Memory Overhaul
This merge request does the following:
- Cleans the
MemberSliceinterface for a more clear and consistent separation ofoperator()data access and raw pointer data access. - Refactors the memory infrastructure of
MemberSliceto store field data in an unmanagedKokkos::ViewwithLayoutStridedata. The striding is defined differently forLayoutLeftandLayoutRight - The refactored memory via the
Kokkos::Viewallows 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
AoSoAtemplate 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