Fix for collective operations by Wolfgang Szoecs #210.
It does have performance implications but is only active if needed.master
parent
b84c86bf3c
commit
73c5c0efc2
|
@ -1946,6 +1946,13 @@ static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results,
|
||||||
hitStonewall = ((test->deadlineForStonewalling != 0
|
hitStonewall = ((test->deadlineForStonewalling != 0
|
||||||
&& (GetTimeStamp() - startForStonewall)
|
&& (GetTimeStamp() - startForStonewall)
|
||||||
> test->deadlineForStonewalling)) || (test->stoneWallingWearOutIterations != 0 && pairCnt == test->stoneWallingWearOutIterations) ;
|
> 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 (test->stoneWallingWearOut){
|
||||||
if (verbose >= VERBOSE_1){
|
if (verbose >= VERBOSE_1){
|
||||||
|
|
Loading…
Reference in New Issue