42 #ifndef TPETRA_DETAILS_RANDOM_HPP
43 #define TPETRA_DETAILS_RANDOM_HPP
45 #include "TpetraCore_config.h"
46 #include "Kokkos_Random.hpp"
51 template<
class ExecutionSpace>
52 class Static_Random_XorShift64_Pool {
56 static void resetPool(
int mpi_rank);
61 static Kokkos::Random_XorShift64_Pool<ExecutionSpace> & getPool();
65 #ifdef KOKKOS_ENABLE_CUDA
67 class Static_Random_XorShift64_Pool<typename Kokkos::CudaSpace::execution_space> {
69 static void resetPool(
int mpi_rank);
71 static Kokkos::Random_XorShift64_Pool<typename Kokkos::CudaSpace::execution_space> & getPool();
73 #endif // KOKKOS_ENABLE_CUDA
76 #ifdef KOKKOS_ENABLE_HIP
78 class Static_Random_XorShift64_Pool<typename Kokkos::HIPSpace::execution_space> {
80 static void resetPool(
int mpi_rank);
82 static Kokkos::Random_XorShift64_Pool<typename Kokkos::HIPSpace::execution_space> & getPool();
84 #endif // KOKKOS_ENABLE_HIP
87 #ifdef KOKKOS_ENABLE_SYCL
89 class Static_Random_XorShift64_Pool<typename Kokkos::Experimental::SYCLDeviceUSMSpace::execution_space> {
91 static void resetPool(
int mpi_rank);
93 static Kokkos::Random_XorShift64_Pool<typename Kokkos::Experimental::SYCLDeviceUSMSpace::execution_space> & getPool();
95 #endif // KOKKOS_ENABLE_SYCL
97 #ifdef KOKKOS_ENABLE_OPENMP
99 class Static_Random_XorShift64_Pool<typename Kokkos::OpenMP> {
101 static void resetPool(
int mpi_rank);
103 static Kokkos::Random_XorShift64_Pool<typename Kokkos::OpenMP> & getPool();
105 #endif // KOKKOS_ENABLE_OPENMP
107 #ifdef KOKKOS_ENABLE_SERIAL
109 class Static_Random_XorShift64_Pool<typename Kokkos::Serial> {
111 static void resetPool(
int mpi_rank);
113 static Kokkos::Random_XorShift64_Pool<typename Kokkos::Serial> & getPool();
115 #endif // KOKKOS_ENABLE_SERIAL
120 #endif // TPETRA_DETAILS_RANDOM_HPP