Freigeben über


MPI_Allgather-Funktion

Sammelt Daten von allen Mitgliedern einer Gruppe und sendet die Daten an alle Mitglieder der Gruppe. Die MPI_Allgather-Funktion ähnelt der funktion MPI_Gather , mit der Ausnahme, dass sie die Daten an alle Prozesse und nicht nur an den Stamm sendet. Die Verwendungsregeln für MPI_Allgather entsprechen den Regeln für MPI_Gather.

Syntax

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
);

Parameter

  • sendbuf [in]
    Der Zeiger auf die Daten, die an alle Prozesse in der Gruppe gesendet werden sollen. Die Anzahl und der Datentyp der Elemente im Puffer werden in den Parametern sendcount und sendtype angegeben. Jedes Element im Puffer entspricht einem Prozess in der Gruppe.

    Wenn der comm-Parameter auf einen Intrakommunikations-Parameter verweist, können Sie eine direkte Option angeben, indem Sie in allen Prozessen MPI_IN_PLACE angeben. Die Parameter sendcount und sendtype werden ignoriert. Jeder Prozess gibt Daten in das entsprechende Empfangspufferelement ein. Der nth-Prozess sendet Daten an das nth-Element des Empfangspuffers.

  • sendcount [in]
    Die Anzahl der Elemente im Puffer, die im sendbuf-Parameter angegeben ist. Wenn sendcount null ist, ist der Datenteil der Nachricht leer.

  • sendtype [in]
    Der MPI-Datentyp der Elemente im Sendepuffer.

  • recvbuf [out]
    Der Zeiger auf einen Puffer, der die Daten enthält, die von jedem Prozess empfangen werden. Die Anzahl und der Datentyp der Elemente im Puffer werden in den Parametern recvcount und recvtype angegeben.

  • recvcount
    Die Anzahl der Elemente im Empfangspuffer. Wenn die Anzahl null ist, ist der Datenteil der Nachricht leer.

  • recvtype
    Der MPI-Datentyp der Elemente im Empfangspuffer.

  • comm
    Das MPI_Comm Communicatorhandle.

Rückgabewert

Gibt MPI_SUCCESS nach Erfolg zurück. Andernfalls ist der Rückgabewert ein Fehlercode.

In Fortran wird der Rückgabewert im IERROR-Parameter gespeichert.

Fortran

    MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Hinweise

Die Typsignatur, die dem sendtype-Parameter in einem Prozess zugeordnet ist, muss gleich der Typsignatur sein, die dem recvtype-Parameter in jedem anderen Prozess zugeordnet ist.

Wenn der comm-Parameter auf einen Intrakommunikations-Parameter verweist, ist das Ergebnis eines Aufrufs von MPI_ALLGATHER(...) so, als ob alle Prozesse ausgeführt n für root = 0 , ..., n-1aufrufenMPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm).

Wenn der comm-Parameter auf einen Intercommunicator verweist, trägt jeder Prozess einer Gruppe, z. B. Gruppe A, die Anzahl der Datenelemente bei, die im sendcount-Parameter angegeben sind. Diese Daten werden verkettet, und das Ergebnis wird bei jedem Prozess in der anderen Gruppe, Gruppe B, gespeichert. Umgekehrt wird die Verkettung der Daten der Prozesse in Gruppe B bei jedem Prozess in Gruppe A gespeichert. Die Sendepufferparameter in Gruppe A müssen mit den Empfangspufferparametern in Gruppe B konsistent sein und umgekehrt.

Die Anzahl der Elemente, die von Prozessen in Gruppe A gesendet werden, muss nicht der Anzahl von Elementen entsprechen, die von Prozessen in Gruppe B gesendet werden. Insbesondere können Sie Daten nur in eine Richtung verschieben, indem Sie sendcount == 0 für die Kommunikation in umgekehrter Richtung angeben.

Anforderungen

Produkt

HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package oder HPC Pack 2008 Client Utilities

Header

Mpi.h; Mpif.h

Bibliothek

Msmpi.lib

DLL

Msmpi.dll

Weitere Informationen

MPI-Kollektive Funktionen

MPI_Datatype

MPI_Allgather