1#ifndef AMREX_RANDOM_ENGINE_H_
2#define AMREX_RANDOM_ENGINE_H_
3#include <AMReX_Config.H>
12#if defined(AMREX_USE_HIP)
13#pragma clang diagnostic push
14#pragma clang diagnostic ignored "-W#warnings"
15#include <hiprand/hiprand.hpp>
16#pragma clang diagnostic pop
17#elif defined(AMREX_USE_CUDA)
19#include <curand_kernel.h>
20#elif defined(AMREX_USE_SYCL)
21#include <sycl/sycl.hpp>
22#include <oneapi/mkl/rng.hpp>
23#include <oneapi/mkl/rng/device.hpp>
24namespace mkl = oneapi::mkl;
33 using sycl_rng_engine = mkl::rng::device::philox4x32x10<>;
34 using sycl_rng_descr = mkl::rng::device::engine_descriptor<sycl_rng_engine>;
35 using sycl_rng_acc = mkl::rng::device::engine_accessor<sycl_rng_engine>;
37 extern sycl_rng_descr* rand_engine_descr;
40 sycl_rng_descr* getRandEngineDescriptor () {
44 return rand_engine_descr;
48 sycl_rng_engine* engine;
81 struct RandomEngine {};
#define AMREX_ALWAYS_ASSERT_WITH_MESSAGE(EX, MSG)
Definition AMReX_BLassert.H:49
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Definition AMReX_Amr.cpp:49
randState_t * getRandState()
Definition AMReX_RandomEngine.H:65
curandGenerator_t randGenerator_t
Definition AMReX_RandomEngine.H:59
RandomEngine getInvalidRandomEngine()
Definition AMReX_RandomEngine.H:86
curandState_t randState_t
Definition AMReX_RandomEngine.H:58
amrex::randState_t * gpu_rand_state
Definition AMReX_Random.cpp:23
Definition AMReX_RandomEngine.H:72
randState_t * rand_state
Definition AMReX_RandomEngine.H:73
__host__ __device__ RandomEngine(randState_t *rs)
Definition AMReX_RandomEngine.H:74