Condividi tramite


funzione MPI_Allgather

Raccoglie i dati da tutti i membri di un gruppo e invia i dati a tutti i membri del gruppo. La funzione MPI_Allgather è simile alla funzione MPI_Gather , ad eccezione del fatto che invia i dati a tutti i processi anziché solo alla radice. Le regole di utilizzo per MPI_Allgather corrispondono alle regole per MPI_Gather.

Sintassi

int MPIAPI MPI_Allgather(
  _In_  void         *sendbuf,
  _In_  int          sendcount,
  _In_  MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

Parametri

  • sendbuf [in]
    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 sendcount e sendtype . Ogni elemento nel buffer corrisponde a un processo nel gruppo.

    Se il parametro comm fa riferimento a un intracommunicator, è possibile specificare un'opzione sul posto specificando MPI_IN_PLACE in tutti i processi. I parametri sendcount e sendtype vengono ignorati. Ogni processo immette i dati nell'elemento del buffer di ricezione corrispondente. L'nprocesso invia i dati all'nelemento del buffer di ricezione.

  • sendcount [in]
    Numero di elementi nel buffer specificato nel parametro sendbuf . Se sendcount è zero, la parte dei dati del messaggio è vuota.

  • sendtype [in]
    Tipo di dati MPI degli elementi nel buffer di invio.

  • recvbuf [out]
    Puntatore a un buffer contenente i dati ricevuti da ogni processo. Il numero e il tipo di dati degli elementi nel buffer vengono specificati nei parametri recvcount e recvtype .

  • recvcount
    Numero di elementi nel buffer di ricezione. Se il conteggio è zero, la parte dei dati del messaggio è vuota.

  • recvtype
    Tipo di dati MPI degli elementi nel buffer di ricezione.

  • Comm
    Handle del comunicatore MPI_Comm .

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_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Commenti

La firma del tipo associata al parametro sendtype in un processo deve essere uguale alla firma del tipo associata al parametro recvtype in qualsiasi altro processo.

Se il parametro comm fa riferimento a un intracomnicator, il risultato di una chiamata a MPI_ALLGATHER(...) è come se tutti i processi eseseguono n chiamate a MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm) per root = 0 , ..., n-1.

Se il parametro comm fa riferimento a un intercomnicator, ogni processo di un gruppo, ad esempio gruppo A, contribuisce al numero di elementi di dati specificati nel parametro sendcount . Questi dati vengono concatenati e il risultato viene archiviato in ogni processo dell'altro gruppo, gruppo B. Viceversa, la concatenazione dei dati dei processi nel gruppo B viene archiviata in ogni processo nel gruppo A. I parametri del buffer di invio nel gruppo A devono essere coerenti con i parametri del buffer di ricezione nel gruppo B e viceversa.

Il numero di elementi inviati dai processi nel gruppo A non deve essere uguale al numero di elementi inviati dai processi nel gruppo B. In particolare, è possibile spostare i dati in una sola direzione specificando sendcount == 0 per la comunicazione nella direzione inversa.

Requisiti

Prodotto

Pacchetto ridistribuibile DI HPC Pack 2012 MS-MPI, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package o utilità client HPC Pack 2008

Intestazione

Mpi.h; Mpif.h

Libreria

Msmpi.lib

DLL

Msmpi.dll

Vedi anche

Funzioni collettive MPI

MPI_Datatype

MPI_Allgather