Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Samlar in variabeldata från alla medlemmar i en grupp till en medlem på ett icke-blockerande sätt.
Syntax
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
);
Parametrar
sendbuf [in, valfritt]
Handtaget till en buffert som innehåller de data som ska skickas till rotprocessen.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. De data som skickas av rotprocessen antas vara på rätt plats i mottagningsbufferten.
sendcount [in]
Antalet element i sändningsbufferten. Om sendcount är noll är datadelen av meddelandet tom.sendtype [in]
Datatypen för varje element i bufferten.recvbuf [ut, valfritt]
Handtaget till en buffert i rotprocessen som innehåller de data som tas emot från varje process, inklusive data som skickas av rotprocessen. Den här parametern är bara viktig i rotprocessen. Parametern recvbuf ignoreras för alla icke-rotprocesser.recvcounts[] [in, valfritt]
Antalet element som tas emot från varje process. Varje element i matrisen motsvarar rangordningen för sändningsprocessen. Om antalet är noll är datadelen av meddelandet tom. Den här parametern är bara viktig i rotprocessen.displs[] [in, valfritt]
Platsen, i förhållande till parametern recvbuf , för data från varje kommunikatorprocess. De data som tas emot från process j placeras i mottagarbufferten för rotprocessförskjutningens displs[j] element från sendbuf-pekaren .I parametermatriserna recvbuf, recvcounts och displs refererar det n:e elementet i varje matris till de data som tas emot från nthcommunicator-processen.
Den här parametern är bara viktig i rotprocessen.
recvtype [in]
Datatypen för varje element i bufferten. Den här parametern är bara viktig i rotprocessen.root [in]
Rangordningen för den mottagande processen inom den angivna kommunikatören.comm [in]
MPI_Comm communicator-handtaget.begäran [ut]
Den MPI_Request hantera som representerar kommunikationsåtgärden.
Returvärde
Returnerar MPI_SUCCESS vid lyckat resultat. Annars är returvärdet en felkod.
I Fortran lagras returvärdet i parametern 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
Kommentarer
Ett icke-blockerande anrop initierar en kollektiv minskningsåtgärd som måste slutföras i ett separat slutförandeanrop. När åtgärden har initierats kan den fortsätta oberoende av beräkningen eller annan kommunikation i deltagande processer. På så sätt kan icke-blockerande minskningsåtgärder minimera möjliga synkroniseringseffekter av minskningsåtgärder genom att köra dem i "bakgrunden".
Alla slutförandeanrop (t.ex. MPI_Wait) stöds för icke-blockerande minskningsåtgärder.
Krav
Produkt |
Microsoft MPI v7 |
Huvud |
Mpi.h; Mpif.h |
Bibliotek |
Msmpi.lib |
DLL |
Msmpi.dll |