Delen via


MPI_Alltoall functie

Verzamelt gegevens van en spreiding van gegevens naar alle leden van een groep. De MPI_Alltoall is een uitbreiding van de functie MPI_Allgather . Elk proces verzendt afzonderlijke gegevens naar elk van de ontvangers. Het jth blok dat wordt verzonden van proces i wordt ontvangen door proces j en wordt in het ith blok van de ontvangstbuffer geplaatst.

Syntaxis

int MPIAPI MPI_Alltoall(
  _In_  void         *sendbuf,
        int          sendcount,
        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 .

    Als de comm parameter verwijst naar een intracommunicator, kunt u een in-place optie opgeven door op te geven MPI_IN_PLACE 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 elementen in de buffer dat is opgegeven in de parameter sendbuf . Als sendcount nul is, is het gegevensgedeelte van het bericht 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 .

  • 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_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE,
                COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Opmerkingen

Alle parameters zijn belangrijk voor alle processen. De comm-parameter moet identiek zijn voor alle processen.

De typehandtekening die is opgegeven door de parameters sendcount en sendtype voor een proces, moeten gelijk zijn aan de typehandtekening die is opgegeven door de parameters recvcount en recvtype . Daarom moet de hoeveelheid verzonden gegevens gelijk zijn aan de hoeveelheid gegevens die wordt ontvangen tussen een paar processen. Afzonderlijke typetoewijzingen tussen afzender en ontvanger zijn nog steeds toegestaan.

Als de parameter comm verwijst naar een intracommunicator, is het resultaat van een aanroep naar MPI_ALLGATHER(...) alsof elk proces een send to elk proces met inbegrip van zichzelf heeft uitgevoerd met behulp van MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)en ontvangen van elk ander proces met behulp van MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, I, …).

Als de comm-parameter verwijst naar een intercommunicator, is het resultaat alsof elk proces in groep A een bericht verzendt naar elk proces in groep B en omgekeerd. De jth send buffer van proces i in groep A moet consistent zijn met de ith receive buffer van proces j 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

MPI_Send

MPI_Recv