41#include "implicit_f.inc"
53 INTEGER IFV, ITABS(*), ITABG(*)
58 INTEGER II, I, ITAG, MSGOFF, REQ(NSPMD-1), IERR,
59 . STAT(MPI_STATUS_SIZE, NSPMD-1), LEN, IADI(NSPMD-1),
60 . IAD, I1, I2, J1, J2, PMAIN, NNT, J, ITAB(NSPMD-1)
61 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IBUF
64 IF (
fvspmd(ifv)%RANK == 0)
THEN
67 DO i=1,
fvspmd(ifv)%NSPMD - 1
70 CALL mpi_irecv(itab(ii), 1, mpi_integer, i,
71 . itag,
fvspmd(ifv)%MPI_COMM, req(ii), ierr)
91 CALL mpi_irecv(ibuf(iad), len, mpi_integer, i,
92 . itag,
fvspmd(ifv)%MPI_COMM, req(ii), ierr)
104 DO i=1,
fvspmd(ifv)%NSPMD - 1
109 j2=ibuf(iad-1+itab(ii)+j)
114 ELSE IF(
fvspmd(ifv)%RANK > 0)
THEN
117 itag=msgoff+
fvspmd(ifv)%RANK
119 . itag,
fvspmd(ifv)%MPI_COMM, req(1), ierr)
126 ibuf(i)=
fvspmd(ifv)%IBUF_L(1,i)
127 ii=
fvspmd(ifv)%IBUF_L(2,i)
128 ibuf(nnt+i)=itabs(ii)
131 itag=msgoff+nspmd+
fvspmd(ifv)%RANK
132 CALL mpi_isend(ibuf, len, mpi_integer, 0,
133 . itag,
fvspmd(ifv)%MPI_COMM, req(2), ierr)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)