From 6d7b889d76da70d973e6b559db228e61d6b41ca5 Mon Sep 17 00:00:00 2001 From: Andrew Myers Date: Wed, 5 Feb 2025 10:10:02 -0800 Subject: [PATCH] fix recursion-related nvlink warning in RandomGamma --- Src/Base/AMReX_Random.H | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Src/Base/AMReX_Random.H b/Src/Base/AMReX_Random.H index a8bda8b036d..f378cb77bf8 100644 --- a/Src/Base/AMReX_Random.H +++ b/Src/Base/AMReX_Random.H @@ -132,6 +132,7 @@ namespace amrex */ Real RandomGamma (Real alpha, Real beta); + template AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE Real RandomGamma (Real alpha, Real beta, RandomEngine const& random_engine) { @@ -141,8 +142,12 @@ namespace amrex AMREX_IF_ON_DEVICE(( if (alpha < 1) { - Real u = amrex::Random(random_engine); - return RandomGamma(1.0_rt + alpha, beta, random_engine) * std::pow(u, 1.0_rt / alpha); + if constexpr (depth == 0) + { + // note that alpha is assumed to be > 0, so this function will recurse at most once. + Real u = amrex::Random(random_engine); + return RandomGamma<1>(1.0_rt + alpha, beta, random_engine) * std::pow(u, 1.0_rt / alpha); + } } {