amjad ali wrote:

Please tell me that if have multiple such ISEND-RECV squrntially for sending receiving data then DO we need to declare separate status(MPI_STATUS_SIZE) with for example status1, status2, ....; or a single declaration of it will work for all??

First of all, it really is good form to post receives as early as possible.

Anyhow, when you have multiple requests being completed at once, you need more than one status. So, you declare an array of statuses. Check the man page for MPI_Waitall. E.g.,

INCLUDE 'mpif.h'

INTEGER REQS(M)
INTEGER STATS(MPI_STATUS_SIZE,M)

DO I = 1, M
CALL MPI_IRECV(BUF?, COUNT?, DATATYPE?, SOURCE?, TAG?, COMM?, REQS(I), IER)
END DO

DO I = 1, N
 CALL MPI_SEND(BUF?, COUNT?, DATATYPE?, DEST?, TAG?, COMM?, IER)
END DO

CALL MPI_WAITALL(M, REQS, STATS, IER)

If you don't care about the statuses, don't declare STATS and just use

CALL MPI_WAITALL(M,REQS,MPI_STATUSES_IGNORE,IER)

Reply via email to