aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Hinder <ian.hinder@aei.mpg.de>2013-10-21 15:14:30 +0200
committerIan Hinder <ian.hinder@aei.mpg.de>2013-10-25 16:17:03 +0200
commitcfaded9a3c86e20bda1e12de34da59e600801347 (patch)
tree3956c742e7d6b395d240571998c6090c6f20c5c7
parent6a7fc6a508a64020bdd3dcd1618bc8a1c115037e (diff)
CarpetInterp2: Add parameter "interp_barrier" to add a barrier before interpolating
Interpolation is a global operation, so adding a barrier should not affect performance, and makes timers much more useful.
-rw-r--r--Carpet/CarpetInterp2/param.ccl5
-rw-r--r--Carpet/CarpetInterp2/src/fasterp.cc8
2 files changed, 13 insertions, 0 deletions
diff --git a/Carpet/CarpetInterp2/param.ccl b/Carpet/CarpetInterp2/param.ccl
index f7b5fffef..5c624daa2 100644
--- a/Carpet/CarpetInterp2/param.ccl
+++ b/Carpet/CarpetInterp2/param.ccl
@@ -7,3 +7,8 @@ BOOLEAN verbose "Produce info output" STEERABLE=always
BOOLEAN veryverbose "Produce debugging output" STEERABLE=always
{
} "no"
+
+BOOLEAN interp_barrier "Wait for all processes before interpolating" STEERABLE=always
+{
+} "no"
+
diff --git a/Carpet/CarpetInterp2/src/fasterp.cc b/Carpet/CarpetInterp2/src/fasterp.cc
index c32721fc9..3d3ac530a 100644
--- a/Carpet/CarpetInterp2/src/fasterp.cc
+++ b/Carpet/CarpetInterp2/src/fasterp.cc
@@ -1619,6 +1619,14 @@ namespace CarpetInterp2 {
assert (values.size() == nvars);
if (nvars == 0) return;
+
+ if (interp_barrier)
+ {
+ static Timers::Timer barrier_timer ("Barrier");
+ barrier_timer.start();
+ CCTK_Barrier(cctkGH);
+ barrier_timer.stop();
+ }
for (size_t v=0; v<values.size(); ++v) {
int const vi = varinds.AT(v);