program gather include 'mpif.h' integer SIZE parameter(SIZE=4) integer numtasks, rank, sendcount, recvcount, source, ierr real*4 sendbuf(SIZE), recvbuf(SIZE,SIZE) C Fortran stores this array in column major order, so the C scatter will actually scatter columns, not rows. call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, numtasks, ierr) Do i=1,size Sendbuf(i)=rank*size+I enddo if (numtasks .eq. SIZE) then source = 1 sendcount = SIZE recvcount = SIZE call MPI_GATHER(sendbuf, sendcount, MPI_REAL, recvbuf, & recvcount, MPI_REAL, source, MPI_COMM_WORLD, ierr) If(rank.eq.1)then print *, 'rank= ',rank,' Results: ',recvbuf endif else print *, 'Must specify',SIZE,' processors. Terminating.' endif call MPI_FINALIZE(ierr) end