Delen via


MPI_Allgather functie

Verzamelt gegevens van alle leden van een groep en verzendt de gegevens naar alle leden van de groep. De functie MPI_Allgather is vergelijkbaar met de functie MPI_Gather , behalve dat de gegevens naar alle processen worden verzonden in plaats van alleen naar de hoofdmap. De gebruiksregels voor MPI_Allgather komen overeen met de regels voor MPI_Gather.

Syntaxis

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

Parameters

  • sendbuf [in]
    De aanwijzer naar de gegevens die naar alle processen in de groep moeten worden verzonden. Het aantal en het gegevenstype van de elementen in de buffer worden opgegeven in de parameters sendcount en sendtype . Elk element in de buffer komt overeen met een proces in de groep.

    Als de comm parameter verwijst naar een intracommunicator, kunt u een in-place optie opgeven door MPI_IN_PLACE in alle processen op te geven. De parameters sendcount en sendtype worden genegeerd. Elk proces voert gegevens in het bijbehorende ontvangstbufferelement in. Het nth-proces verzendt gegevens naar het nth-element van de ontvangstbuffer.

  • sendcount [in]
    Het aantal elementen in de buffer dat is opgegeven in de parameter sendbuf . Als sendcount nul is, is het gegevensgedeelte van het bericht leeg.

  • sendtype [in]
    Het MPI-gegevenstype van de elementen in de verzendbuffer.

  • recvbuf [uit]
    De aanwijzer naar een buffer die de gegevens bevat die van elk proces worden ontvangen. Het aantal en het gegevenstype van de elementen in de buffer worden opgegeven in de parameters recvcount en recvtype .

  • recvcount
    Het aantal elementen in de ontvangstbuffer. Als het aantal nul is, is het gegevensgedeelte van het bericht leeg.

  • recvtype
    Het MPI-gegevenstype van de elementen in de ontvangstbuffer.

  • Comm
    De MPI_Comm communicatorgreep.

Retourwaarde

Retourneert MPI_SUCCESS bij succes. Anders is de retourwaarde een foutcode.

In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .

Fortran

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

Opmerkingen

De typehandtekening die is gekoppeld aan de parameter sendtype in een proces, moet gelijk zijn aan de typehandtekening die is gekoppeld aan de parameter recvtype in elk ander proces.

Als de comm-parameter verwijst naar een intracommunicator, is het resultaat van een aanroep naar MPI_ALLGATHER(...) alsof alle processen worden uitgevoerd n aanroepen naar MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm) voor root = 0 , ..., n-1.

Als de comm-parameter verwijst naar een intercommunicator, draagt elk proces van één groep, bijvoorbeeld groep A, bij aan het aantal gegevensitems dat is opgegeven in de sendcount parameter. Deze gegevens worden samengevoegd en het resultaat wordt opgeslagen bij elk proces in de andere groep, groep B. Omgekeerd wordt de samenvoeging van de gegevens van de processen in groep B opgeslagen bij elk proces in groep A. De parameters voor de verzendbuffer in groep A moeten consistent zijn met de parameters voor de ontvangstbuffer in groep B en vice versa.

Het aantal items, dat wordt verzonden door processen in groep A, hoeft niet gelijk te zijn aan het aantal items dat wordt verzonden door processen in groep B. In het bijzonder kunt u gegevens slechts in één richting verplaatsen door sendcount == 0 op te geven voor de communicatie in de omgekeerde richting.

Vereisten

Product

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

Header

Mpi.h; Mpif.h

Bibliotheek

Msmpi.lib

DLL

Msmpi.dll

Zie ook

Collectieve MPI-functies

MPI_Datatype

MPI_Allgather