aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Comm.cc
diff options
context:
space:
mode:
authorknarf <knarf@cct.lsu.edu>2011-06-10 17:10:51 -0500
committerBarry Wardell <barry.wardell@gmail.com>2011-12-14 18:26:29 +0000
commite32933bad3b0ed5366c0a942b7431129c566fcd7 (patch)
tree265af38f1401594600d0f2e9933276a26ceaa5b9 /Carpet/Carpet/src/Comm.cc
parent02b7f7c4dab0d4bbb281c544439362379d77bd25 (diff)
This was found to be necessary on hopper, otherwise memory seemed to be
overwritten while prolongating/syncronizing. It looks liks this might be an MPI implementation issue, but this is not clear. A barrier at this point seems to be a sufficient workaround, and is now used on hopper. For more information about this, ask Frank Loeffler <knarf@cct.lsu.edu> Use the cpp flag CARPET_MPI_BARRIER_PROLONGATE_SYNC to enable this.
Diffstat (limited to 'Carpet/Carpet/src/Comm.cc')
-rw-r--r--Carpet/Carpet/src/Comm.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/Carpet/Carpet/src/Comm.cc b/Carpet/Carpet/src/Comm.cc
index 1a18e62e9..6c7521740 100644
--- a/Carpet/Carpet/src/Comm.cc
+++ b/Carpet/Carpet/src/Comm.cc
@@ -140,6 +140,15 @@ namespace Carpet {
ProlongateGroupBoundaries (cctkGH, goodgroups);
timer.stop();
}
+
+ // This was found to be necessary on hopper, otherwise memory seemed to be
+ // overwritten while prolongating/syncronizing. It looks liks this might be
+ // an MPI implementation issue, but this is not clear. A barrier at this
+ // point seems to be a sufficient workaround, and is now used on hopper.
+ // For more information about this, ask Frank Loeffler <knarf@cct.lsu.edu>
+#ifdef CARPET_MPI_BARRIER_PROLONGATE_SYNC
+ MPI_Barrier(dist::comm());
+#endif
// synchronise ghostzones
if (sync_during_time_integration or local_do_prolongate) {