Condividi tramite


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

Vedi anche

Funzioni collettive MPI

MPI_Datatype

MPI_Op

MPI_Allreduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome