The source project of this merge request has been removed.
Kokkos Portability Layer
Adds portability via Kokkos:
-
Adds Kokkos
as a dependency -
Updates Cabana::AoSoA
template parameters to use syntax and structure identical toKokkos::View
-
Adds a Cabana::InnerArraySize
template 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_for
interface which will dispatch toKokkos::parallel_for
with a variety ofKokkos::RangePolicy
andKokkos::MDRangePolicy
options 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::PerformanceTraits
which 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