10 #ifndef TPETRA_DETAILS_RANDOM_HPP
11 #define TPETRA_DETAILS_RANDOM_HPP
13 #include "TpetraCore_config.h"
14 #include "Kokkos_Random.hpp"
19 template<
class ExecutionSpace>
20 class Static_Random_XorShift64_Pool {
24 static void resetPool(
int mpi_rank);
29 static Kokkos::Random_XorShift64_Pool<ExecutionSpace> & getPool();
33 #ifdef KOKKOS_ENABLE_CUDA
35 class Static_Random_XorShift64_Pool<typename Kokkos::CudaSpace::execution_space> {
37 static void resetPool(
int mpi_rank);
39 static Kokkos::Random_XorShift64_Pool<typename Kokkos::CudaSpace::execution_space> & getPool();
41 #endif // KOKKOS_ENABLE_CUDA
44 #ifdef KOKKOS_ENABLE_HIP
46 class Static_Random_XorShift64_Pool<typename Kokkos::HIPSpace::execution_space> {
48 static void resetPool(
int mpi_rank);
50 static Kokkos::Random_XorShift64_Pool<typename Kokkos::HIPSpace::execution_space> & getPool();
52 #endif // KOKKOS_ENABLE_HIP
55 #ifdef KOKKOS_ENABLE_SYCL
57 class Static_Random_XorShift64_Pool<typename Kokkos::Experimental::SYCLDeviceUSMSpace::execution_space> {
59 static void resetPool(
int mpi_rank);
61 static Kokkos::Random_XorShift64_Pool<typename Kokkos::Experimental::SYCLDeviceUSMSpace::execution_space> & getPool();
63 #endif // KOKKOS_ENABLE_SYCL
65 #ifdef KOKKOS_ENABLE_OPENMP
67 class Static_Random_XorShift64_Pool<typename Kokkos::OpenMP> {
69 static void resetPool(
int mpi_rank);
71 static Kokkos::Random_XorShift64_Pool<typename Kokkos::OpenMP> & getPool();
73 #endif // KOKKOS_ENABLE_OPENMP
75 #ifdef KOKKOS_ENABLE_SERIAL
77 class Static_Random_XorShift64_Pool<typename Kokkos::Serial> {
79 static void resetPool(
int mpi_rank);
81 static Kokkos::Random_XorShift64_Pool<typename Kokkos::Serial> & getPool();
83 #endif // KOKKOS_ENABLE_SERIAL
88 #endif // TPETRA_DETAILS_RANDOM_HPP