40#include "implicit_f.inc"
53 INTEGER NODNX_SMS(*), IAD_ELEM(2,*), FR_ELEM(*), SIZE, LENR
60 INTEGER ,I,NOD,LOC_PROC,IERROR, ,
62 . status(mpi_status_size),
63 . iad_send(nspmd+1),iad_recv(nspmd+1),
64 . req_r(nspmd),req_s(nspmd)
66 . rbuf(size*lenr), sbuf(size*lenr), w(
SIZE,lenr)
77 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
79 IF(nodnx_sms(nod)/=0)
THEN
87 s rbuf(l),siz,real,it_spmd(i),msgtyp,
88 g spmd_comm_world,req_r(i),ierror)
96#include "vectorize.inc"
97 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
99 IF(nodnx_sms(nod)/=0)
THEN
101 sbuf(l+k-1) = v(k,nod)
114 IF(iad_send(i+1)-iad_send(i)>0)
THEN
116 siz = iad_send(i+1)-iad_send(i)
119 s sbuf(l),siz,real,it_spmd(i),msgtyp
120 g spmd_comm_world,req_s(i),ierror)
125 DO j=1,iad_elem(1,nspmd+1)-1
127 IF(nodnx_sms(nod)/=0)
THEN
137 IF(iad_recv(i+1)-iad_recv(i)>0)
THEN
138 CALL mpi_wait(req_r(i),status,ierror)
140#include "vectorize.inc"
141 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
143 IF(nodnx_sms(nod)/=0)
THEN
145 v(k,nod) = v(k,nod)+rbuf(l+k-1)
153 DO j=1,iad_elem(1,nspmd+1)-1
155 IF(nodnx_sms(nod)/=0)
THEN
157 v(k,nod) = v(k,nod) + w(k,j)
162 DO i = loc_proc+1,nspmd
164 IF(iad_recv(i+1)-iad_recv(i)>0)
THEN
165 CALL mpi_wait(req_r(i),status,ierror)
167#include "vectorize.inc"
168 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
170 IF(nodnx_sms(nod)/=0)
THEN
172 v(k,nod) = v(k,nod)+rbuf(l+k-1)
182 IF(iad_send(i+1)-iad_send(i)>0)
THEN
183 CALL mpi_wait(req_s(i),status,ierror)