Fix for collective operations by Wolfgang Szoecs #210.

It does have performance implications but is only active if needed.
master
Julian M. Kunkel 2019-12-19 13:42:34 +00:00
parent b84c86bf3c
commit 73c5c0efc2
1 changed files with 7 additions and 0 deletions

View File

@ -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){