38#include "implicit_f.inc"
51 INTEGER NODNX_SMS(*), IAD_ELEM(2,*), FR_ELEM(*), SIZE, LENR
58 INTEGER MSGTYP,MSGOFF,I,NOD,LOC_PROC,IERROR,
60 . status(mpi_status_size),
61 . iad_send(nspmd+1),iad_recv(nspmd+1),
62 . req_r(nspmd),req_s(nspmd)
63 DOUBLE PRECISION RBUF(6*SIZE*LENR), SBUF(6*SIZE*LENR)
74 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
76 IF(nodnx_sms(nod)/=0)
THEN
84 s rbuf(l),siz,mpi_double_precision,it_spmd(i),msgtyp,
85 g spmd_comm_world,req_r(i),ierror)
93#include "vectorize.inc"
94 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
96 IF(nodnx_sms(nod)/=0)
THEN
99 sbuf(l+k-1) = v(m,k,nod)
113 IF(iad_send(i+1)-iad_send(i)>0)
THEN
115 siz = iad_send(i+1)-iad_send(i)
118 s sbuf(l),siz,mpi_double_precision,it_spmd(i),msgtyp,
119 g spmd_comm_world,req_s(i),ierror)
126 IF(iad_recv(i+1)-iad_recv(i)>0)
THEN
127 CALL mpi_wait(req_r(i),status,ierror)
129#include "vectorize.inc"
130 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
132 IF(nodnx_sms(nod)/=0)
THEN
135 v(m,k,nod) = v(m,k,nod)+rbuf(l+k-1)
146 IF(iad_send(i+1)-iad_send(i)>0)
THEN
147 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)