34
35
36
37 use spmd_comm_world_mod, only: spmd_comm_world
38 implicit none
39
40
41
42
43#include "spmd.inc"
44
45
46
47 INTEGER SIZ,ISPMD,IT_SPMD(*),MSGTAG,INTSIZE
48 INTEGER, INTENT(INOUT) :: A(*)
49
50
51
52# MPI
53 INTEGER INFO,BUFSIZMAX,ADD,LEN,SIZ_I,
54 . ATID,ATAG,ALEN
55 INTEGER STATUS(),IERROR
56
57 DATA bufsizmax/10000000/
58
59
60
61 add = 1
62 siz_i = siz
63 1 len =
min(siz_i,bufsizmax)
64
65 CALL mpi_recv(a(add),len,mpi_byte,it_spmd(ispmd+1),msgtag,
66 . spmd_comm_world,status,ierror)
67 CALL mpi_send(a,0,mpi_byte,it_spmd(ispmd+1),msgtag,
68 . spmd_comm_world,ierror)
69
70 add = add + len/intsize
71 siz_i = siz_i - len
72 IF (siz_i>0) GO TO 1
73#endif
74 RETURN
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)