From e822ea57cc9719723e7b3543b9972023e143fc0c Mon Sep 17 00:00:00 2001 From: Sebastian Eibl <sebastian.eibl@fau.de> Date: Tue, 27 Mar 2018 17:23:23 +0200 Subject: [PATCH] added additional assert to check if TimingTrees are "equal" before reduction --- src/core/timing/TimingNode.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/core/timing/TimingNode.h b/src/core/timing/TimingNode.h index 8ec0b3338..2f0597f7a 100644 --- a/src/core/timing/TimingNode.h +++ b/src/core/timing/TimingNode.h @@ -26,6 +26,7 @@ #include "core/debug/Debug.h" #include "core/logging/Logging.h" +#include "core/mpi/Gatherv.h" #include "core/mpi/MPIManager.h" #include "core/mpi/Reduce.h" #include "core/mpi/SetReduction.h" @@ -253,6 +254,20 @@ void reduceInplace( TimingNode<TP>& tn, ReduceType rt = REDUCE_TOTAL, int target break; } + WALBERLA_ASSERT_EQUAL(vals.size(), valsSq.size()); + WALBERLA_ASSERT_EQUAL(vals.size(), min.size()); + WALBERLA_ASSERT_EQUAL(vals.size(), max.size()); + WALBERLA_ASSERT_EQUAL(vals.size(), count.size()); + + WALBERLA_DEBUG_SECTION() + { + //checking if all timing trees contain the same number of elements + std::vector<uint32_t> lens; + lens.push_back(uint32_c(vals.size())); + lens = mpi::allGatherv(lens); + std::for_each(lens.begin(), lens.end(), [&](const uint32_t& v){WALBERLA_UNUSED(v); WALBERLA_ASSERT_EQUAL( v, vals.size(), "Different number of TimingTree nodes detected! All TimingTrees need to have the same timers for reduction!");}); + } + // Target vectors where reduced values are stored std::vector<double> minRed; std::vector<double> maxRed; -- GitLab