• Min Si's avatar
    Bug-fix: correct the behavior of flush in exclusively locked epoch. · 22924f35
    Min Si authored
    
    
    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: default avatarXin Zhao <xinzhao3@illinois.edu>
    Signed-off-by: default avatarAntonio J. Pena <apenya@mcs.anl.gov>
    22924f35
ch3u_rma_sync.c 229 KB