Re: possible race condition in post-wait-start-complete

Raja Daoud (raja@tbag.rsn.hp.com)
Mon, 19 Aug 1996 15:50:42 CDT

I'm not sure generation counters are enough for the Rma_post() that
doesn't take a destination rank. On a distributed memory system, if a
changing subset of processes in a communicator participate in the RMA
phases (i.e. some do RMA in one phase, others in another phase), then
Rma_post() cannot be a loop of sends of some token (counter) because the
Rma_start() side doesn't know what is the current generation count.

I may be missing something, but it seems to me that as written, the
Rma_post() <--> Rma_start() synchronization has to always be a full
bidirectional exchange (RPC-like), with start asking the target if
the post flag is currently set (locally), and blocking if it's not
yet set (and the target buffering all these requests until the next
post, and then replying to them all).

Q1: is this correct?
Q2: if yes, is this what we want (as opposed to Rma_post(comm, rank)
and making the use do multiple of them, thus keeping track of the
synchronization arrows and keeping post/start single-directional)?

--Raja