The source project of this merge request has been removed.
Kokkos Portability Layer
Adds portability via Kokkos:
-
Adds Kokkosas a dependency -
Updates Cabana::AoSoAtemplate parameters to use syntax and structure identical toKokkos::View -
Adds a Cabana::InnerArraySizetemplate parameter which allows users to manually set the inner array size or will be set to default option based on theKokkos::ExecutionSpace -
Adds a Cabana::parallel_forinterface which will dispatch toKokkos::parallel_forwith a variety ofKokkos::RangePolicyandKokkos::MDRangePolicyoptions based on the execution space and the struct/array sizes. -
Adds a portable testing infrastructure which currently support Serial, OpenMP, and CudaUVM executions and allocations. -
Adds Cabana::PerformanceTraitswhich can be used to define reasonably performant settings for different execution spaces. These can always be overridden by the user.
Future work that will not be performed in this MR includes:
- Utilizing the Kokkos memory tracking infrastructure instead of
std::shared_ptr - Add a deep copy capability to
Cabana::AoSoA(see #6 (closed)) - Add CudaSpace testing support after addition of deep copy.
Edited by Slattery, Stuart