La funzione MPI_REDUCE
agisce con una particolare operazione su dati appartenenti a differenti
processi per consegnarne il risultato finale ad un particolare processo
(a tutti i processi nel caso della funzione MPI_ALLREDUCE).
La sintassi di questa funzione è la seguente:
MPI_REDUCE(nome-in,
nome-out,quanti, tipo,
operazione, ricevente, comunicatore, ierr)
dove:
|
Operazione
|
Tipo di dati
|
| MPI_SUM
(esegue la somma)
MPI_PROD (esegue il prodotto) |
MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION, MPI_COMPLEX |
| MPI_MIN
(trova il minimo)
MPI_MAX (trova il massimo) |
MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION |
| MPI_LAND
(and logico)
MPI_LOR (or logico) MPI_LXOR (xor logico) |
MPI_LOGICAL |
| MPI_BAND
(and binario)
MPI_BOR (or binario) MPI_BOR (and binario) |
MPI_INTEGER |
Consideriamo quindi il seguente esempio:
|
program esempio4
include 'mpif.h' integer nprocs, mype, ierr, i integer isend, irecv dimension isend(2), irecv(2)
call MPI_INIT(ierr)
do i=1,2
call MPI_REDUCE(isend(1),irecv(1),1,MPI_INTEGER,
|