From 73c5c0efc20f91700a4c293a2f089e6d8b5bde67 Mon Sep 17 00:00:00 2001 From: "Julian M. Kunkel" Date: Thu, 19 Dec 2019 13:42:34 +0000 Subject: [PATCH] Fix for collective operations by Wolfgang Szoecs #210. It does have performance implications but is only active if needed. --- src/ior.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ior.c b/src/ior.c index 57f385d..5e343d1 100755 --- a/src/ior.c +++ b/src/ior.c @@ -1946,6 +1946,13 @@ static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results, hitStonewall = ((test->deadlineForStonewalling != 0 && (GetTimeStamp() - startForStonewall) > test->deadlineForStonewalling)) || (test->stoneWallingWearOutIterations != 0 && pairCnt == test->stoneWallingWearOutIterations) ; + + if ( test->collective && test->deadlineForStonewalling ) { + // if collective-mode, you'll get a HANG, if some rank 'accidentally' leave this loop + // it absolutely must be an 'all or none': + MPI_CHECK(MPI_Bcast(&hitStonewall, 1, MPI_INT, 0, MPI_COMM_WORLD), "hitStonewall broadcast failed"); + } + } if (test->stoneWallingWearOut){ if (verbose >= VERBOSE_1){