Dela via


funktionen MPI_Allgatherv

Samlar in en variabel mängd data från varje medlem i en grupp och skickar data till alla medlemmar i gruppen. Funktionen MPI_Allgatherv är som MPI_Gatherv, förutom att alla processer får resultatet i stället för bara roten. Datablocket som skickas från j:e processen tas emot av varje process och placeras i j:e blocket i buffertens recvbuf. Alla dessa block måste inte ha samma storlek.

Syntax

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

Parametrar

  • sendbuf [in]
    Pekaren till de data som ska skickas till alla processer i gruppen. Antalet och datatypen för elementen i bufferten anges i parametrarna sendcount och sendtype . Varje element i bufferten motsvarar en process i gruppen.

    Om comm-parametern refererar till en intracommunicator kan du ange ett alternativ på plats genom att ange MPI_IN_PLACE i alla processer. Parametrarna sendcount och sendtype ignoreras. Varje process anger data i motsvarande mottagningsbuffertelement. Den n:e processen skickar data till det n:e elementet i mottagningsbufferten.

  • sendcount
    Antalet dataelement som den här processen skickar i bufferten som anges i sendbuf-parametern . Om ett element i sendcount är noll är datadelen av meddelandet från den processen tom.

  • sendtype
    MPI-datatypen för elementen i sändningsbufferten.

  • recvbuf [ut]
    Pekaren till en buffert som innehåller de data som tas emot från varje process. Antalet och datatypen för elementen i bufferten anges i parametrarna recvcount och recvtype .

  • recvcounts [in]
    Antalet dataelement från varje kommunikationsprocess i mottagningsbufferten.

  • displs [in]
    Platsen, i förhållande till parametern recvbuf , för data från varje kommunikationsprocess.

    I matriserna recvbuf, recvcounts och displs refererar det n:e elementet i varje matris till de data som tas emot från den n:e kommunikatorprocessen.

  • recvtype
    MPI-datatypen för varje element i bufferten.

  • Comm
    Den MPI_Comm kommunikationshandtaget.

Returvärde

Returnerar MPI_SUCCESS vid lyckat resultat. Annars är returvärdet en felkod.

I Fortran lagras returvärdet i parametern 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

Kommentarer

Användningsreglerna för MPI_Allgatherv motsvarar reglerna för MPI_Gatherv.

Typsignaturen som är associerad med sendtype-parametern i en process måste vara lika med den typsignatur som är associerad med recvtype-parametern i någon annan process.

Om parametern comm refererar till en intracommunicator är resultatet av ett anrop till MPI_Allgatherv(...)som om alla processer körde anrop till MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)för root = 0 , ..., n-1.

Om comm-parametern refererar till en intercommunicator bidrar varje process i en grupp, till exempel grupp A, med antalet dataobjekt som anges i parametern sendcount . Dessa data sammanfogas och resultatet lagras vid varje process i den andra gruppen, grupp B. Omvänt lagras sammanfogningen av processernas data i grupp B vid varje process i grupp A. Parametrarna för att skicka buffert i grupp A måste vara konsekventa med parametrarna för mottagningsbufferten i grupp B och vice versa.

Krav

Produkt

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

Huvud

Mpi.h; Mpif.h

Bibliotek

Msmpi.lib

DLL

Msmpi.dll

Se även

MPI Collective Functions

MPI_Gatherv

MPI_Datatype