Re: [Mpi3-rma] Conflicting accesses
On 12/16/2010 12:21 PM, Torsten Hoefler wrote:
Ewww... yeah, I think that should work. Would this also work? It might be cheaper and easier to program than the barrier...
I would suspect that barrier is the easiest for average programmers.
This idiom of update shared followed by barrier is actually pretty common in PGAS code - especially in non-performance critical parts.
Rank 0: (addr 42 starts as 0) MPI_Put(rank=1, addr=0, size=1912) MPI_Flush(rank=1) MPI_Accumulate(rank=1, addr=42, MPI_REPLACE, 1) MPI_Flush(rank=1)
Rank 1: while (temp == 0) {MPI_GetAccumulate(rank=1, addr=42,&temp); MPI_Flush(rank=1);} MPI_Get(rank=1, addr=12)
Yes, that should work but would poll on address 42 (many messages). (You are aware that the accumulate address overlaps with the Put buffer, which is ok here but might be unexpected).
Looks okay to me too (minus the overlap), this is definitely something we need to support. We can also use two-sided messaging to notify to a waiting process: Rank 0: MPI_Put(rank=1, addr=0, size=1912) MPI_Flush(rank=1) MPI_Send(rank=1,tag=NOTIFY_TAG,...) Rank 1: MPI_Recv(rank=MPI_SOURCE_ANY,tag=NOTIFY_TAG,...) MPI_Get(rank=1, addr=12) ~Jim.
participants (1)
-
James Dinan