33 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,
38 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
39#include "implicit_f.inc"
50#include "tabsiz_c.inc"
54 INTEGER,
INTENT(IN) :: DIM,DIM1,DIM2,LENCOM
55 INTEGER,
INTENT(IN) :: NERCVOIS(SNERCVOIS), NESDVOIS(SNESDVOIS)
56 INTEGER,
INTENT(IN) :: LERCVOIS(SLERCVOIS), LESDVOIS(SLESDVOIS)
57 my_real,
DIMENSION(DIM1,DIM2),
INTENT(INOUT) :: phi
62 INTEGER I, NDIM, IDEB, IDEB2, MSGOFF, IERROR,MSGTYP,IAD_RECV(NSPMD),
63 . STATUS(MPI_STATUS_SIZE), (NSPMD), REQ_R(NSPMD),
64 . loc_proc, n, nn, nbirecv, irindex(nspmd), ii, index,
81 IF(nercvois(i)>0)
THEN
86 s wa(1,ideb2+1),len*dim,real,it_spmd(i),msgtyp,
87 g spmd_comm_world,req_r(nbirecv),ierror)
100 wa(ndim,ideb2+n) = phi(nn,ndim)
104 s wa(1,ideb2+1),len*dim,real,it_spmd(i),msgtyp,
105 g spmd_comm_world,req_s(i),ierror)
112 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
115 DO n = 1, nercvois(i)
116 nn = lercvois(ideb+n)
118 phi(nn,ndim) = wa(ndim,ideb+n)
124 IF(nesdvois(i)>0)
THEN
125 CALL mpi_wait(req_s(i),status,ierror)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
subroutine spmd_exchange_grad(dim, dim1, dim2, phi, nercvois, nesdvois, lercvois, lesdvois, lencom)