Skip to content

Commit 756679f

Browse files
Add getInvalidRandomEngine() for CPU (#4528)
#4443 deleted the default constructor of RandomEngine for GPU. However for CPU still the default constructor must be used, forcing \#ifdef to be used in code that uses the constructor. This PR adds a `getInvalidRandomEngine()` function to get a dummy RandomEngine. Note the only use for RandomEngine on CPU is to make GPU code work on CPU.
1 parent 0108935 commit 756679f

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

Src/Base/AMReX_RandomEngine.H

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ namespace amrex
6868

6969
#endif
7070

71+
AMREX_FORCE_INLINE
72+
RandomEngine getInvalidRandomEngine () {
73+
#ifdef AMREX_USE_GPU
74+
return RandomEngine{nullptr};
75+
#else
76+
return RandomEngine{};
77+
#endif
78+
}
79+
7180
}
7281

7382
#endif

Src/Particle/AMReX_WriteBinaryParticleData.H

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,7 @@ fillFlags (Container<int, Allocator>& pflags, const PTile& ptile, F const& f)
6767
for (int k = 0; k < np; ++k) {
6868
const auto p = ptd.getSuperParticle(k);
6969
if constexpr (IsCallable<F,decltype(p),RandomEngine>::value) {
70-
#ifdef AMREX_USE_GPU
71-
flag_ptr[k] = f(p,RandomEngine{nullptr});
72-
#else
73-
flag_ptr[k] = f(p,RandomEngine{});
74-
#endif
70+
flag_ptr[k] = f(p,getInvalidRandomEngine());
7571
} else {
7672
flag_ptr[k] = f(p);
7773
}

0 commit comments

Comments
 (0)