MPI_GATHER

La funzione MPI_GATHER trasmette da tutti i processi appartenenti ad un comunicatore ad un singolo processo denominato ``ricevente''.
La sintassi di questa funzione è la seguente:

MPI_GATHER(nome-in, quanti,tipo-in,
           nome-out,quanti,tipo-out, ricevente, comunicatore, ierr)

dove:

Come esempio riporto un banale codice in cui viene utilizzata la funzione in discussione:
 
      program esempio3
      include 'mpif.h' 
      integer nprocs, mype, ierr, isend, i 
      integer irecv
      dimension irecv(3)

      call MPI_INIT(ierr) 
      call MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, ierr) 
      call MPI_COMM_RANK(MPI_COMM_WORLD, mype, ierr) 

      if(nprocs.gt.3) stop 'N. proc.>3' 
      do i=1,3
        irecv(i) = 0
      enddo
      isend = mype + 1
      call MPI_GATHER(isend,1,MPI_INTEGER,
     +                irecv,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)
      if(mype.eq.0) then
        write(6,*) 'irecv: ', irecv(1), irecv(2), irecv(3)
      endif
      call MPI_FINALIZE(ierr) 
      end

Osservare come l'ordine di riempimento della variabile irecv del processo 0 segue l'ordine numerico dei processi.
Nella sintassi della funzione MPI_ALLGATHER semplicemente sparisce il processo ricevente poichè tutti i processi del comunicatore ricevono il messaggio.