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