funzione MPI_Iallreduce
Combina i valori di tutti i processi e distribuisce il risultato a tutti i processi in modo non bloccanti.
Sintassi
int MPIAPI MPI_Iallreduce(
_In_opt_ const void *sendbuf,
_Out_opt_ void *recvbuf,
_In_ int count,
_In_ MPI_Datatype datatype,
_In_ MPI_Op op,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
Parametri
sendbuf [in, facoltativo]
Puntatore ai dati da inviare a tutti i processi del gruppo. Il numero e il tipo di dati degli elementi nel buffer vengono specificati nei parametri count e datatype .Se il parametro comm fa riferimento a un intracommunicator, è possibile specificare un'opzione sul posto specificando MPI_IN_PLACE in tutti i processi. In questo caso, i dati di input vengono acquisiti in ogni processo dal buffer di ricezione, in cui verrà sostituito dai dati di output.
recvbuf [out, facoltativo]
Puntatore a un buffer per ricevere il risultato dell'operazione di riduzione.conteggio [in]
Numero di elementi da inviare da questo processo.datatype [in]
Tipo di dati di ogni elemento nel buffer. Questo parametro deve essere compatibile con l'operazione come specificato nel parametro op .op [in]
Operazione di riduzione globale da eseguire. L'handle può indicare un'operazione predefinita o definita dall'applicazione. Per un elenco di operazioni predefinite, vedere MPI_Op.comm [in]
Handle del comunicatore MPI_Comm.richiesta [out]
Handle MPI_Request che rappresenta l'operazione di comunicazione.
Valore restituito
Restituisce MPI_SUCCESS sull'esito positivo. In caso contrario, il valore restituito è un codice di errore.
In Fortran il valore restituito viene archiviato nel parametro IERROR .
Fortran
MPI_IALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, REQUEST, IERROR
Commenti
Una chiamata senza blocco avvia un'operazione di riduzione collettiva che deve essere completata in una chiamata di completamento separata. Dopo l'avvio, l'operazione può procedere indipendentemente da qualsiasi calcolo o da altre comunicazioni nei processi partecipanti. In questo modo, le operazioni di riduzione senza blocco possono attenuare possibili effetti di sincronizzazione delle operazioni di riduzione eseguendole in "background".
Tutte le chiamate di completamento (ad esempio, MPI_Wait) sono supportate per operazioni di riduzione non bloccabili.
Requisiti
Prodotto |
Microsoft MPI v7 |
Intestazione |
Mpi.h; Mpif.h |
Libreria |
Msmpi.lib |
DLL |
Msmpi.dll |