But that is what surprises me. Indeed the scenario I described can be implemented using two-sided communication, but it seems not to be possible when using one sided communication.
 
Additionally the MPI 2.2. standard describes on page 356 the matching rules for post and start, complete and wait and there it says : "MPI_WIN_COMPLETE(win) initiate a nonblocking send with tag tag1 to each process in the group of the preceding start call. No need to wait for the completion of these sends."
The wording 'nonblocking send' startles me somehow !?
 
toon

 
On Thu, Feb 24, 2011 at 2:05 PM, James Dinan <dinan@mcs.anl.gov> wrote:
Hi Toon,

Can you use non-blocking send/recv?  It sounds like this will give you the completion semantics you want.

Best,
 ~Jim.


On 2/24/11 6:07 AM, Toon Knapen wrote:
In that case, I have a small question concerning design:
Suppose task-based parallellism where one node (master) distributes
work/tasks to 2 other nodes (slaves) by means of an MPI_Put. The master
allocates 2 buffers locally in which it will store all necessary data
that is needed by the slave to perform the task. So I do an MPI_Put on
each of my 2 buffers to send each buffer to a specific slave. Now I need
to know when I can reuse one of my buffers to already store the next
task (that I will MPI_Put later on). The only way to know this is call
MPI_Complete. But since this is blocking and if this buffer is not ready
to be reused yet, I can neither verify if the other buffer is already
available to me again (in the same thread).
I would very much appreciate input on how to solve such issue !
thanks in advance,
toon
On Tue, Feb 22, 2011 at 7:21 PM, Barrett, Brian W <bwbarre@sandia.gov
<mailto:bwbarre@sandia.gov>> wrote:

   On Feb 18, 2011, at 8:59 AM, Toon Knapen wrote:

    > (Probably this issue has been discussed at length before but
   unfortunately I did not find any threads (on this site or anywhere
   else) on this topic, if you are able to provide me with links to
   earlier discussions on this topic, please do not hesitate)
    >
    > Is there an alternative to MPI_Win_complete that does not
   'enforce completion of preceding RMS calls at the origin' (as said
   on pag 353 of the mpi-2.2 standard) ?
    >
    > I would like to know if I can reuse the buffer I gave to MPI_Put
   but without blocking on it, if the MPI lib is still using it, I want
   to be able to continue (and use another buffer).


   There is not.   MPI_Win_complete is the only way to finish a
   MPI_Win_start epoch, and is always blocking until local completion
   of all messages started during the epoch.

   Brian

   --
     Brian W. Barrett
     Dept. 1423: Scalable System Software
     Sandia National Laboratories



   _______________________________________________
   users mailing list
   users@open-mpi.org <mailto:users@open-mpi.org>

_______________________________________________
users mailing list
users@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users