32 . FR_SMS ,LIST_RMS ,LIST_SMS,IFLAG,
33 . IAD_SEND,IAD_RECV,REQ_R,REQ_S,RBUF,SBUF)
38#include "implicit_f.inc"
52 . FR_RMS(NSPMD+1), FR_SMS(NSPMD+1),LIST_RMS(*), LIST_SMS(*),
53 . iad_send(nspmd+1),iad_recv(nspmd+1),
54 . req_r(nspmd),req_s(nspmd)
56 . v(
SIZE,*), vfi(
SIZE,*)
58 . rbuf(size*(fr_rms(nspmd+1)+fr_sms(nspmd+1))),
59 . sbuf(size*(fr_rms(nspmd+1)+fr_sms(nspmd+1)))
64 INTEGER MSGTYP,,NOD,LOC_PROC,IERROR,MSGOFF,
65 . SIZ,J,L,NB_NOD,K,M,,
66 . status(mpi_status_size)
78 siz = fr_rms(i+1) - fr_rms(i)
80 siz = siz + fr_sms(i+1) - fr_sms(i)
87 s rbuf(l),siz,real,it_spmd(i),msgtyp,
88 g spmd_comm_world,req_r(i),ierror)
100#include "vectorize.inc"
101 DO j=fr_sms(i),fr_sms(i+1)-1
105 sbuf(l+k-1) = v(k,nod)
116#include "vectorize.inc"
117 DO j=fr_rms(i),fr_rms(i+1)-1
121 sbuf(l+k-1) = v(k,nod)
137 IF(iad_send(i+1)-iad_send(i)>0)
THEN
139 siz = iad_send(i+1)-iad_send(i)
142 s sbuf(l),siz,real,it_spmd(i),msgtyp,
143 g spmd_comm_world,req_s(i),ierror)
153 IF(iad_recv(i+1)-iad_recv(i)>0)
THEN
154 CALL mpi_wait(req_r(i),status,ierror)
156#include "vectorize.inc"
157 DO j=fr_rms(i),fr_rms(i+1)-1
158 IF(list_rms(j)/=0)
THEN
160 vfi(k,kk) = rbuf(l+k-1)
167#include "vectorize.inc"
168 DO j=fr_sms(i),fr_sms(i+1)-1
169 IF(list_sms(m)/=0)
THEN
171 vfi(k,kk) = rbuf(l+k-1)
183 IF(iad_send(i+1)-iad_send(i)>0)
THEN
184 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_vfi_sms(v, size, vfi, fr_rms, fr_sms, list_rms, list_sms, iflag, iad_send, iad_recv, req_r, req_s, rbuf, sbuf)