56 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
57#include "implicit_f.inc"
67 INTEGER PTLEN,PTLEN_P0,PTV(PTLEN),PTV_P0(0:MAX(1,PTLEN_P0))
72 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,
73 . MSGTYP,I,J,IAD,IDEB, POLD,
74 . LENP(NSPMD),DISP(NSPMD)
80 s ptlen ,1 ,mpi_integer,
81 r lenp ,1 ,mpi_integer,it_spmd(1),
82 g spmd_comm_world,ierror)
93 s ptv ,ptlen ,mpi_integer,
94 r ptv_p0(1) ,lenp ,disp,mpi_integer ,it_spmd(1),
95 g spmd_comm_world,ierror)
104 ptv_p0(ideb+j)=ptv_p0(ideb+j)+pold
127 . SIZE,STAT_NUMEL,STAT_LENELG,LENG,NP,
128 . IADG,NPGLOB,STAT_INDX)
133 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
134#include "implicit_f.inc"
144#include "com01_c.inc"
149 INTEGER SIZE, STAT_NUMEL, , LENG, (*),
150 . IADG(NSPMD,*),NPGLOB(*),STAT_INDX(*)
155 INTEGER MSGOFF,MSGTYP,INFO,IDEB,K,N,NB_TMP,LEN,
156 . NBF_L,NPT(SIZE*STAT_NUMEL)
157 INTEGER STATUS(MPI_STATUS_SIZE),IERROR
162 nbf_l = size*stat_numel
167 CALL mpi_send(np,nbf_l,mpi_integer,it_spmd(1),msgtyp,
168 . spmd_comm_world,ierror)
183 . spmd_comm_world,status,ierror)
186 CALL mpi_recv(npglob(ideb),nb_tmp,mpi_integer,it_spmd(k),
187 . msgtyp,spmd_comm_world,status,ierror)
192 stat_lenelg=ideb/
SIZE
215 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
216#include "implicit_f.inc"
221#include "com01_c.inc"
222#include "com04_c.inc"
230 INTEGER WEIGHT(*),NODGLOB(*),NUM,SRECBUF,NODTAG(*),
236 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
237 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2
243 INTEGER IBUF(NUMNODM)
250 IF (nodtag(i)/=0)
THEN
252 ibuf(siz) = nodglob(i)
253 bufsr(1,siz) = v(1,i)
254 bufsr(2,siz) = v(2,i)
255 bufsr(3,siz) = v(3,i)
264 CALL mpi_send(ibuf,siz,mpi_integer,it_spmd(1),msgtyp,
265 . spmd_comm_world,ierror)
268 CALL mpi_send(bufsr,3*siz,real,it_spmd(1),msgtyp,
269 . spmd_comm_world,ierror)
274 nodtaglob(1:numnodg)=0
276 IF (nodtag(i)/=0)
THEN
292 . spmd_comm_world,status,ierror)
295 CALL mpi_recv(ibuf,siz,mpi_integer,it_spmd(i),msgtyp,
296 . spmd_comm_world,status,ierror)
301 CALL mpi_recv(bufsr,3*siz,real,it_spmd(i),msgtyp,
302 . spmd_comm_world,status,ierror)
308 vgath(1,ng) = bufsr(1,k)
309 vgath(2,ng) = bufsr(2,k)
310 vgath(3,ng) = bufsr(3,k)
324!||--- calls -----------------------------------------------------
333 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
334#include "implicit_f.inc"
339#include "com01_c.inc"
340#include "com04_c.inc"
348 INTEGER WEIGHT(*),NODGLOB(*),NUM,SRECBUF,NODTAG(*),
354 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,
355 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2
361 INTEGER IBUF(NUMNODM)
368 IF (nodtag(i)/=0)
THEN
370 ibuf(siz) = nodglob(i)
380 CALL mpi_send(ibuf,siz,mpi_integer,it_spmd(1),msgtyp,
381 . spmd_comm_world,ierror)
384 CALL mpi_send(bufsr,siz,real,it_spmd(1),msgtyp,
385 . spmd_comm_world,ierror)
390 nodtaglob(1:numnodg)=0
392 IF (nodtag(i)/=0)
THEN
406 . spmd_comm_world,status,ierror)
409 CALL mpi_recv(ibuf,siz,mpi_integer,it_spmd(i),msgtyp,
410 . spmd_comm_world,status,ierror)
415 CALL mpi_recv(bufsr,siz,real,it_spmd(i),msgtyp,
416 . spmd_comm_world,status,ierror)
446 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
447#include "implicit_f.inc"
452#include "com01_c.inc"
453#include "com04_c.inc"
459 INTEGER VI(*),VIGATH(*),NODGLOB(*)
464 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF,MSGOFF2
465 INTEGER SIZ,MSGTYP,I,K,NG,NREC
469 INTEGER IBUFN(NUMNODM),IBUFM(NUMNODM)
477 ibufn(siz) = nodglob(i)
484 CALL mpi_send(ibufn,siz,mpi_integer,it_spmd(1),msgtyp,
485 . spmd_comm_world,ierror)
488 CALL mpi_send(ibufm,siz,mpi_integer,it_spmd(1),msgtyp,
489 . spmd_comm_world,ierror)
505 . spmd_comm_world,status,ierror)
508 CALL mpi_recv(ibufn,siz,mpi_integer,it_spmd(i),msgtyp,
509 . spmd_comm_world,status,ierror)
513 CALL mpi_recv(ibufm,siz,mpi_integer,it_spmd(i),msgtyp,
514 . spmd_comm_world,status,ierror)
519 vigath(ng) = ibufm(k)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_get_count(status, datatype, cnt, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
subroutine mpi_probe(source, tag, comm, status, ierr)
subroutine mpi_gather(sendbuf, cnt, datatype, recvbuf, reccnt, rectype, root, comm, ierr)
subroutine mpi_gatherv(sendbuf, cnt, datatype, recvbuf, reccnt, displs, rectype, root, comm, ierr)
subroutine spmd_dstat_vgath(v, nodglob, weight, vgath, nodtag, nodtaglob)
subroutine spmd_istat_gath(vi, nodglob, vigath)
subroutine spmd_stat_pgather(ptv, ptlen, ptv_p0, ptlen_p0)
subroutine spmd_iget_partn_sta(size, stat_numel, stat_lenelg, leng, np, iadg, npglob, stat_indx)
subroutine spmd_dstat_gath(v, nodglob, weight, vgath, nodtag, nodtaglob)