SUBROUTINE COLLECT_LOC ( A, B ) !$$$ SUBPROGRAM DOCUMENTATION BLOCK ! . . . ! SUBPROGRAM: COLLECT GATHERS FROM ALL MPI TASKS ! PRGRMMR: TUCCILLO ORG: IBM ! ! ABSTRACT: ! GATHER "A" FROM ALL MPI TASKS ONTO TASK 0 ! . ! ! PROGRAM HISTORY LOG: ! 00-01-06 TUCCILLO - ORIGINAL ! ! USAGE: CALL COLLECT(A) ! INPUT ARGUMENT LIST: ! A - ARRAY BEING GATHERED ! ! OUTPUT ARGUMENT LIST: ! A - GATHERED ARRAY - ONLY VALID ON TASK 0 ! ! OUTPUT FILES: ! STDOUT - RUN TIME STANDARD OUT. ! ! SUBPROGRAMS CALLED: ! MPI_GATHERV ! UTILITIES: ! NONE ! LIBRARY: ! COMMON - CTLBLK.comm ! ! ATTRIBUTES: ! LANGUAGE: FORTRAN ! MACHINE : IBM RS/6000 SP !$$$ use CTLBLK_mod, only: num_procs, jsta, icnt, idsp, mpi_comm_comp, im,& jsta_2l, jend_2u, jm, me !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! include 'mpif.h' real, dimension(im,jsta_2l:jend_2u), intent(in) :: a real, dimension(im,jm), intent(out) :: b integer ierr ! if ( num_procs .le. 1 ) then b = a else call mpi_gatherv(a(1,jsta),icnt(me),MPI_REAL, & & b,icnt,idsp,MPI_REAL,0,MPI_COMM_COMP, ierr ) end if end