Le 2015-12-17 12:45, Jeff Squyres (jsquyres) a écrit :
On Dec 17, 2015, at 8:57 AM, Eric Chamberland
<eric.chamberl...@giref.ulaval.ca> wrote:
But I would like to know if the MPI I am using is able to do message
progression or not: So how do an end-user like me can knows that? Does-it rely
on hardware? Is there a #define by OpenMPI that one can uses into his code?
An MPI program *must* call MPI_Test or MPI_Wait to complete a non-blocking
request -- it's not optional.
Just to be clear: we *always* call MPI_Wait. Now the question was about
*when* to do it.
We did 2 different things:
#1- ASAP after the MPI_Isend
#2- As late as possible, in a class destructor for example, which can
occur a while after other MPI_Irecv and MPI_Isend pairs have been issued.
Is it true to tell that if there were message progression, the receiving
side can complete the MPI_Wait linked to the MPI_Irecv call, event if
the sending side have *not yet* called the MPI_Wait linked to the
MPI_Isend ?
For performance portability, it's likely a good idea to have some calls to
MPI_Test*() periodically.
Interesting and easy to do for us...
Thanks,
Eric