funktionen MPI_Allgatherv
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 |