Dela via


funktionen MPI_Allgather

Samlar in data från alla medlemmar i en grupp och skickar data till alla medlemmar i gruppen. Funktionen MPI_Allgather liknar funktionen MPI_Gather , förutom att den skickar data till alla processer i stället för endast till roten. Användningsreglerna för MPI_Allgather motsvarar reglerna 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
);

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 [in]
    Antalet element i bufferten som anges i parametern sendbuf . Om sendcount är noll är datadelen av meddelandet tom.

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

  • recvbuf [out]
    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 .

  • recvcount
    Antalet element i mottagningsbufferten. Om antalet är noll är datadelen av meddelandet tom.

  • recvtype
    MPI-datatypen för elementen i mottagarbufferten.

  • Comm
    MPI_Comm communicator-handtaget.

Returvärde

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

I Fortran lagras returvärdet i parametern IERROR .

Fortran

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

Kommentarer

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

Om comm-parametern refererar till en intracommunicator är resultatet av ett anrop till MPI_ALLGATHER(...) som om alla processer som körs n anropar för MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm)root = 0 , ..., n-1.

Om kommaparametern 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 data för processerna 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.

Antalet objekt som skickas av processer i grupp A behöver inte vara lika med antalet objekt som skickas av processer i grupp B. I synnerhet kan du flytta data i endast en riktning genom att ange sendcount == 0 för kommunikationen i omvänd riktning.

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

Kollektiva MPI-funktioner

MPI_Datatype

MPI_Allgather