[mpich-discuss] MPI_Wait status array and non-blocking sends

Rajeev Thakur thakur at mcs.anl.gov
Tue Aug 2 11:38:04 CDT 2011


Make sure you have declared the status variable as "integer status(MPI_STATUS_SIZE)". If the status is still empty, send us a small test program that demonstrates the error.

Rajeev


On Aug 2, 2011, at 6:07 AM, Helvio Vairinhos wrote:

> Hi,
> 
> I'm new to MPI and I'd like to understand something about non-blocking
> sends/receives and MPI_WAIT that I quite don't understand, if not only
> for curiosity. I use the MPICH2-1.3.2p1 implementation of MPI for
> Cygwin. Consider the following snippet of F90 code, which does basic
> non-blocking send and receive, and waits for the completion of each one
> of them:
> 
>   IF (rank==0) THEN
>      buf=1
>      CALL MPI_ISEND(buf, 1, MPI_INTEGER, 1, 99, MPI_COMM_WORLD, req, ierr)
>      CALL MPI_WAIT(req, status, ierr)
>      WRITE(*,*) "MPI_ISEND status:", status
>   ELSE IF (rank==1) THEN
>      buf=0
>      CALL MPI_IRECV(buf, 1, MPI_INTEGER, 0, 99, MPI_COMM_WORLD, req, ierr)
>      CALL MPI_WAIT(req, status, ierr)
>      WRITE(*,*) "MPI_IRECV status:", status
>      WRITE(*,*) "Incoming message:", buf
>   ENDIF
> 
> The output is:
> 
> $ mpif90 mpitest.F90
> $ mpiexec -n 2 ./a.exe
> MPI_Isend status:           0           0           0          
> 0           0
> MPI_Irecv status:           4           0           0         
> 99           0
> Incoming message:           1
> 
> I don't understand why the MPI_WAIT that waits for the completion of the
> non-blocking send does not return a proper STATUS array (the STATUS
> array is always returned with zero components, regardless of the sending
> mode being basic, synchronous, ready or buffered). I thought that
> information like tag, size and destination rank would still be encoded
> in STATUS at the sending end, after the send is completed. I know that
> STATUS makes more sense in the receiving end, but I just wanted to know
> if this is normal, i.e. if the MPI_WAIT always completes a sending
> routine and returns a zero STATUS array, or if I'm doing something wrong.
> 
> Thanks,
> Helvio
> _______________________________________________
> mpich-discuss mailing list
> mpich-discuss at mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss



More information about the mpich-discuss mailing list