LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Brian W. Barrett (brbarret_at_[hidden])
Date: 2001-12-08 11:23:42


On Sat, 8 Dec 2001, Bora Ucar wrote:

> If you have time could you please explain why it is required that
> we need to call MPI_Wait after MPI_Isend? Irecv case is needed from the
> programmers perspective, but as a programmer I do not need to wait for the
> completion of MPI_Isend. It is the programmers responsibility to ensure
> the re-usage of his/her programs buffers as in the some other send modes.
> I really want to know the MPI developers' rationale behind this.

The main rational is that MPI makes no guarantee that a non-blocking send
will make progress "in the backgroup" - an implementation can only make
progress during calls to MPI_Test and MPI_Wait and still be a full
conformant MPI implementation. So, a programmer must make calls to
MPI_Test and MPI_Wait in order to make progress on the MPI_Isend.

>From an implementer's standpoint, it is very difficult to make progress
"in the background" unless you have some type of threading or IPC
mechanism. I would venture to guess (although I was not at the MPI forum
meetings - I was still in high school ;-) that there were probably systems
in existance at the time where it would have been nearly impossible to
make realy progress "in the background".

I would recommend reading Snir, et al. "MPI - The Complete Reference" for
more information on MPI design. It is based off the MPI standards and
contains many insights into design descions such as this one.

Hope this helps,

Brian

-- 
  Brian Barrett
  LAM/MPI developer and all around nice guy
  Have a LAM/MPI day: http://www.lam-mpi.org/
_______________________________________________
This list is archived at http://www.lam-mpi.org/MailArchives/lam/