Bug-fix: correct the behavior of flush in exclusively locked epoch.
FLUSH should guarantee the completion of operations on both origin and target side. However, for exclusive lock, there is an optimization in MPICH which allows FLUSH to return without waiting for the acknowledgement of remote completion from the target side. It relys on the fact that there will be no other processes accessing the window during the exclusive lock epoch. However, such optimization is not correct when two processes allocating windows on overlapping SHM region. Suppose P0 and P1 (on the same node) allocate RMA window using the same SHM region, and P2 (on a different node) locks both windows. P2 first issues a PUT and FLUSH to P0, then issues a GET to P1 on the same memory location with PUT, since FLUSH does not guarantee the remote completion of PUT, GET operation may not get the updated value. This patch disables the optimization for FLUSH and forces FLUSH to always wait for the remote completion of operations. Signed-off-by:Xin Zhao <xinzhao3@illinois.edu> Signed-off-by:
Antonio J. Pena <apenya@mcs.anl.gov>
Please register or sign in to comment