From a955d7c85a422334f71191bf1267c6b08bd53050 Mon Sep 17 00:00:00 2001 From: AlexanderSinn Date: Tue, 23 Jan 2024 21:49:07 +0100 Subject: [PATCH] Add TypeList version of IdentityTuple to use it with ParReduce --- Src/Base/AMReX_Reduce.H | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Src/Base/AMReX_Reduce.H b/Src/Base/AMReX_Reduce.H index 85710e7fc01..aa1a4dd0122 100644 --- a/Src/Base/AMReX_Reduce.H +++ b/Src/Base/AMReX_Reduce.H @@ -1289,6 +1289,20 @@ IdentityTuple (GpuTuple, ReduceOps) noexcept return r; } +/** + * \brief Return a GpuTuple containing the identity element for each ReduceOp in TypeList. + * For example 0, +inf and -inf for ReduceOpSum, ReduceOpMin and ReduceOpMax respectively. + */ +template +AMREX_GPU_HOST_DEVICE +constexpr GpuTuple +IdentityTuple (GpuTuple, TypeList) noexcept +{ + GpuTuple r{}; + Reduce::detail::for_each_init<0, decltype(r), Ps...>(r); + return r; +} + } #endif