Skip to content

Kokkos Portability Layer

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

Adds portability via Kokkos:

  • Adds Kokkos as a dependency
  • Updates Cabana::AoSoA template parameters to use syntax and structure identical to Kokkos::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 the Kokkos::ExecutionSpace
  • Adds a Cabana::parallel_for interface which will dispatch to Kokkos::parallel_for with a variety of Kokkos::RangePolicy and Kokkos::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

Merge request reports