Dear E. Loh.
**

>
>
> Another is whether you can overlap communications and computation.  This
> does not require persistent channels, but only nonblocking communications
> (MPI_Isend/MPI_Irecv).  Again, there are no MPI guarantees here, so you may
> have to break your computation up and insert MPI_Test calls.
>
> You may want to get the basic functionality working first and then run
> performance experiments to decide whether these really are areas that
> warrant such optimizations.
>

*         CALL MPI_STARTALL
         -------perform work that could be done with local data
---------------- (A)
         CALL MPI_WAITALL( )
         -------perform work using the received data  --------------- (B)*

In the above I have broken up the computation. In (A) I perform the work
that could be done with local data. When the recevied data is must for
remaining computations I put WAITALL  to ensure that data data from the
neighbouring processes has received. I am fine with MPI_IRECV and ISEND,
i.e.,

*         CALL MPI_IRECV()
**         CALL MPI_ISEND()*
*          -------perform work that could be done with local data
---------------- (A)
         CALL MPI_WAITALL( )
         -------perform work using the received data  --------------- (B)*


But I am doubtful whether I am getting computation-communication overlap to
save time.or I am getting the the same performance as could be obtained by,

*         CALL MPI_IRECV()
**         CALL MPI_ISEND()*
*         CALL MPI_WAITALL( )*
*          -------perform work that could be done with local data
---------------- (A)
         -------perform work using the received data  --------------- (B)*

In this case (equivalent to blocking communication), I observed that only
around 5% more time it takes.

And the SECOND desire is to use Persistent communication for even better
speedup.


best regards,
AA.

Reply via email to