Anteckning
Å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 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 |