The source project of this merge request has been removed.
Memory Overhaul
This merge request does the following:
- Cleans the
MemberSlice
interface for a more clear and consistent separation ofoperator()
data access and raw pointer data access. - Refactors the memory infrastructure of
MemberSlice
to store field data in an unmanagedKokkos::View
withLayoutStride
data. The striding is defined differently forLayoutLeft
andLayoutRight
- 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