[Mpi3-rma] [EXTERNAL] Re: request-based ops

Jim Dinan james.dinan at gmail.com
Thu Jun 20 08:39:33 CDT 2013

I agree with the general statement that the nonblocking call marks the end
of the epoch.  In the case of MPI_Win_test, it's trying to close an
exposure epoch -- not an access epoch -- so communication operations from
the origin process are not being completed by synchronization (although,
the test/wait synchronization could be waiting for a self communication,
that operation is completed by start/complete not post/wait).  I think an
MPI_Win_iwait operation that uses the semantic you described should be
identical to MPI_Win_test.  Unless I'm missing something, which never
happens when discussing RMA.  :)


On Wed, Jun 19, 2013 at 10:34 AM, Barrett, Brian W <bwbarre at sandia.gov>wrote:

> On 6/19/13 8:58 AM, "Jim Dinan" <james.dinan at gmail.com> wrote:
> I think we're in agreement that iflush needs to be defined separately.  I
> was thinking out loud (without really thinking that hard about it) that
> win_test might be usable to achieve iunlock or ifence, but this is
> nonsensical because the arguments are different across these functions.
>  Win_test also only covers win_wait.  To be complete, we should also
> consider MPI_Win_icomplete, and a few others.  Here's a more exhaustive
> list:
> MPI_Win_iflush
> MPI_Win_iflush_all
> MPI_Win_iflush_local
> MPI_Win_iflush_local_all
> MPI_Win_iunlock
> MPI_Win_iunlock_all
> MPI_Win_ifence
> MPI_Win_icomplete
> MPI_Win_iwait (to replace win_test, for completeness?)
> This is a whole other can of worms, but in some cases, the functions that
> start an epoch can block (e.g. a lock operation when load/store is possible
> for the target).  I don't know to what extent we want to look into
> nonblocking variants of those routines. We already have nonblocking fence
> in the list, which initiates an epoch.
> I think MPI_WIN_IWAIT would have very different semantics than
> MPI_WIN_TEST.  Again, I think the only sane way to define non-blocking
> synchronization functions is to say essentially that the non-blocking
> function starts the synchronization (ends the epoch from the programmers
> standpoint) and the successfully completed request ends the synchronization
> (starts the next epoch or allows new epochs to be started, depending on the
> synchronization).  Anything else is nightmarish from either a programmer's
> standpoint (non-blocking can block) or an implementor's standpoint (must
> suddenly track requests much more fine-grained than today, killing
> performance).
> Brian
> --
>   Brian W. Barrett
>   Scalable System Software Group
>   Sandia National Laboratories
> _______________________________________________
> mpi3-rma mailing list
> mpi3-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-rma
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpiwg-rma/attachments/20130620/e0552581/attachment-0001.html>

More information about the mpiwg-rma mailing list