From cc335e6826d65d609400d0d512f65eeb0dff80c7 Mon Sep 17 00:00:00 2001 From: Andy Nonaka Date: Fri, 23 May 2025 08:54:21 -0700 Subject: [PATCH] fix random number signature --- Source/Initialization/PlasmaInjector.cpp | 4 ++++ Source/Particles/ParticleBoundaryBuffer.cpp | 6 +++++- Source/Particles/WarpXParticleContainer.cpp | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Source/Initialization/PlasmaInjector.cpp b/Source/Initialization/PlasmaInjector.cpp index 0282636c7..193a2bd21 100644 --- a/Source/Initialization/PlasmaInjector.cpp +++ b/Source/Initialization/PlasmaInjector.cpp @@ -691,7 +691,11 @@ amrex::XDim3 PlasmaInjector::getMomentum (amrex::Real x, amrex::Real y, amrex::Real z) const noexcept { +#ifdef AMREX_USE_GPU + return h_inj_mom->getMomentum(x, y, z, amrex::RandomEngine{nullptr}); // gamma*beta +#else return h_inj_mom->getMomentum(x, y, z, amrex::RandomEngine{}); // gamma*beta +#endif } bool PlasmaInjector::insideBounds (amrex::Real x, amrex::Real y, amrex::Real z) const noexcept diff --git a/Source/Particles/ParticleBoundaryBuffer.cpp b/Source/Particles/ParticleBoundaryBuffer.cpp index 53a16996c..9ccbbe4ef 100644 --- a/Source/Particles/ParticleBoundaryBuffer.cpp +++ b/Source/Particles/ParticleBoundaryBuffer.cpp @@ -251,7 +251,11 @@ void ParticleBoundaryBuffer::gatherParticles (MultiParticleContainer& mypc, amrex::ReduceData reduce_data(reduce_op); { WARPX_PROFILE("ParticleBoundaryBuffer::gatherParticles::count_out_of_bounds"); - amrex::RandomEngine rng{}; +#ifdef AMREX_USE_GPU + const amrex::RandomEngine rng{nullptr}; +#else + const amrex::RandomEngine rng{}; +#endif reduce_op.eval(np, reduce_data, [=] AMREX_GPU_HOST_DEVICE (int ip) { return predicate(ptile_data, ip, rng) ? 1 : 0; }); } diff --git a/Source/Particles/WarpXParticleContainer.cpp b/Source/Particles/WarpXParticleContainer.cpp index b6e33180a..ef6e98b86 100644 --- a/Source/Particles/WarpXParticleContainer.cpp +++ b/Source/Particles/WarpXParticleContainer.cpp @@ -280,8 +280,13 @@ WarpXParticleContainer::AddNParticles (int /*lev*/, } // Default initialize the other real and integer runtime attributes +#ifdef AMREX_USE_GPU + DefaultInitializeRuntimeAttributes(pinned_tile, nattr_real - 1, nattr_int, + amrex::RandomEngine{nullptr}); +#else DefaultInitializeRuntimeAttributes(pinned_tile, nattr_real - 1, nattr_int, amrex::RandomEngine{}); +#endif auto old_np = particle_tile.numParticles(); auto new_np = old_np + pinned_tile.numParticles();