Delen via


MPI_Igatherv functie

Verzamelt variabele gegevens van alle leden van een groep tot één lid op een niet-blokkerende manier.

Syntaxis

int MPIAPI MPI_Igatherv(
  _In_opt_  const void         *sendbuf,
  _In_            int          sendcount,
  _In_            MPI_Datatype sendtype,
  _Out_opt_       void         *recvbuf,
  _In_opt_  const int          recvcounts[],
  _In_opt_  const int          displs[],
  _In_            MPI_Datatype recvtype,
  _In_            int          root,
  _In_            MPI_Comm     comm,
  _Out_           MPI_Request  *request
);

Parameters

  • sendbuf [in, optioneel]
    De ingang naar een buffer die de gegevens bevat die naar het hoofdproces moeten worden verzonden.

    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. De gegevens die door het hoofdproces worden verzonden, worden verondersteld op de juiste plaats in de ontvangstbuffer te staan.

  • sendcount [in]
    Het aantal elementen in de verzendbuffer. Als sendcount nul is, is het gegevensgedeelte van het bericht leeg.

  • sendtype [in]
    Het gegevenstype van elk element in de buffer.

  • recvbuf [uit, optioneel]
    De ingang naar een buffer in het hoofdproces die de gegevens bevat die van elk proces worden ontvangen, inclusief gegevens die worden verzonden door het hoofdproces. Deze parameter is alleen van belang in het hoofdproces. De parameter recvbuf wordt genegeerd voor alle niet-hoofdprocessen.

  • aantallen[] [in, optioneel]
    Het aantal elementen dat van elk proces wordt ontvangen. Elk element in de matrix komt overeen met de rang van het verzendproces. Als het aantal nul is, is het gegevensgedeelte van het bericht leeg. Deze parameter is alleen van belang in het hoofdproces.

  • displs[] [in, optioneel]
    De locatie, ten opzichte van de parameter recvbuf , van de gegevens van elk communicatorproces. De gegevens die worden ontvangen van proces j worden in de ontvangstbuffer van de basisproces offset displs[j] elementen van de sendbuf-pointer geplaatst.

    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.

    Deze parameter is alleen van belang in het hoofdproces.

  • recvtype [in]
    Het gegevenstype van elk element in de buffer. Deze parameter is alleen van belang in het hoofdproces.

  • root [in]
    De rang van het ontvangende proces binnen de opgegeven communicator.

  • comm [in]
    De MPI_Comm communicatorgreep.

  • aanvraag [uit]
    De MPI_Request ingang die de communicatiebewerking vertegenwoordigt.

Retourwaarde

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

In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .

Fortran

    MPI_IGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE,
    ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, REQUEST, IERROR

Opmerkingen

Een niet-blokkerende aanroep initieert een collectieve reductiebewerking die moet worden voltooid in een afzonderlijke voltooiingsoproep. Zodra de bewerking is gestart, kan de bewerking onafhankelijk van berekeningen of andere communicatie op deelnemende processen worden uitgevoerd. Op deze manier kunnen niet-blokkerende reductiebewerkingen mogelijke synchronisatie-effecten van reductiebewerkingen beperken door ze op de 'achtergrond' uit te voeren.

Alle voltooiingsoproepen (bijvoorbeeld MPI_Wait) worden ondersteund voor niet-blokkerende reductiebewerkingen.

Vereisten

Product

Microsoft MPI v7

Header

Mpi.h; Mpif.h

Bibliotheek

Msmpi.lib

DLL

Msmpi.dll

Zie ook

Collectieve MPI-functies

MPI_Datatype

MPI_Gatherv

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome