Kokkos Core implements a programming model in C++ for writing performance portable applications targeting all major HPC platforms. For that purpose it provides abstractions for both parallel execution of code and data management. Kokkos is designed to target complex node architectures with N-level memory hierarchies and multiple types of execution resources. It currently can use OpenMP, Pthreads and CUDA as backend programming models.
We should look into Kokkos for performance portability across different backends.
The Kokkos C++ Performance Portability Programming EcoSystem is a collection of C++ libraries developed by Sandia National Laboratories, available on GitHub under a 3-clause BSD license, including a set of tutorials, profiling tools, and kernels for linear algebra and graph operations.
From the Kokkos Core README: