Delen via


MPI_Allgatherv functie

Verzamelt een variabele hoeveelheid gegevens van elk lid van een groep en verzendt de gegevens naar alle leden van de groep. De functie MPI_Allgatherv lijkt op de MPI_Gatherv, behalve dat alle processen het resultaat ontvangen in plaats van alleen de hoofdmap. Het gegevensblok dat vanuit het jth-proces wordt verzonden, wordt door elk proces ontvangen en in het jth blok van de buffer recvbuf geplaatst. Deze blokken hoeven niet allemaal even groot te zijn.

Syntaxis

int MPIAPI MPI_Allgatherv(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
  _In_  int          *recvcounts,
  _In_  int          *displs,
        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 op te geven in alle processen. 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
    Het aantal gegevenselementen dat met dit proces wordt verzonden in de buffer die is opgegeven in de parameter sendbuf . Als een element in sendcount nul is, is het gegevensgedeelte van het bericht van dat proces leeg.

  • sendtype
    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 .

  • recvcounts [in]
    Het aantal gegevenselementen van elk communicatorproces in de ontvangstbuffer.

  • displs [in]
    De locatie, ten opzichte van de parameter recvbuf , van de gegevens van elk communicator-proces.

    In de parametermatrices recvbuf, recvcounts en displs verwijst het element nth van elke matrix naar de gegevens die worden ontvangen van het nth communicator-proces.

  • recvtype
    Het MPI-gegevenstype van elk element in buffer.

  • Comm
    De MPI_Comm communicator-ingang.

Retourwaarde

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

In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .

Fortran

    MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

Opmerkingen

De gebruiksregels voor MPI_Allgatherv komen overeen met de regels voor MPI_Gatherv.

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 een ander proces.

Als de parameter comm verwijst naar een intracommunicator, is het resultaat van een aanroep naar MPI_Allgatherv(...)alsof alle processen aanroepen hebben uitgevoerd naar MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,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 ontvangstbufferparameters in groep B en omgekeerd.

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_Gatherv

MPI_Datatype