Condividi tramite


funzione MPI_Ireduce

Esegue un'operazione di riduzione globale (ad esempio somma, massimo o logico e) in tutti i membri di un gruppo in modo non bloccando.

Sintassi

int MPIAPI MPI_Ireduce(
  _In_      void         *sendbuf,
  _Out_opt_ void         *recvbuf,
  _In_      int          count,
  _In_      MPI_Datatype datatype,
  _In_      MPI_Op       op,
  _In_      int          root,
  _In_      MPI_Comm     comm,
  _Out_     MPI_Request  *request
);

Parametri

  • sendbuf [in]
    Puntatore a un buffer contenente i dati di questa classificazione da usare nella riduzione. Il buffer è costituito da conteggio elementi successivi del MPI_Datatype indicato dall'handle tipo di dati . La lunghezza del messaggio viene specificata in termini di numero di elementi, non in numero di byte.

  • recvbuf [out, facoltativo]
    Puntatore a un buffer per ricevere il risultato dell'operazione di riduzione. Questo parametro è significativo solo nel processo radice.

  • conteggio [in]
    Numero di elementi da inviare da questo processo.

  • tipo di dati [in]
    Handle MPI_Datatype che rappresenta il tipo di dati di ogni elemento in sendbuf.

  • op [in]
    Handle MPI_Op che indica l'operazione di riduzione globale da eseguire. L'handle può indicare un'operazione predefinita o definita dall'applicazione. Per un elenco delle operazioni predefinite, vedere l'argomento MPI_Op.

  • radice [in]
    Classificazione del processo di ricezione all'interno del MPI_Commcomm.

  • comm [in]
    Handle del comunicatore MPI_Comm.

  • richiesta [out]
    Handle MPI_Request che rappresenta l'operazione di comunicazione.

Valore restituito

Restituisce MPI_SUCCESS in caso di esito positivo. In caso contrario, il valore restituito è un codice di errore.

In Fortran il valore restituito viene archiviato nel parametro IERROR.

Fortran

    MPI_IREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR) 
        <type> SENDBUF(*), RECVBUF(*) 
        INTEGER COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR

Osservazioni

Una chiamata non bloccante avvia un'operazione di riduzione collettiva che deve essere completata in una chiamata di completamento separata. Dopo l'avvio, l'operazione può progredire indipendentemente da qualsiasi calcolo o altra comunicazione nei processi partecipanti. In questo modo, le operazioni di riduzione non bloccanti possono ridurre i possibili effetti di sincronizzazione delle operazioni di riduzione eseguendole in "background".

Tutte le chiamate di completamento (ad esempio, MPI_Wait) sono supportate per le operazioni di riduzione non bloccabili.

Fabbisogno

Prodotto

Microsoft MPI v6

Intestazione

Mpi.h; Mpif.h

Biblioteca

Msmpi.lib

DLL

Msmpi.dll

Vedere anche

funzioni collettive MPI

MPI_Datatype

MPI_Op

MPI_Reduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome