funktionen MPI_Scatterv
Sprider data från en medlem över alla medlemmar i en grupp. Funktionen MPI_Scatterv utför inversen av den åtgärd som utförs av funktionen MPI_Gatherv .
Syntax
int MPIAPI MPI_Scatterv(
_In_ void *sendbuf,
_In_ int *sendcounts,
_In_ int *displs,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parametrar
sendbuf [in]
Pekaren till en buffert som innehåller de data som ska skickas av rotprocessen.Parametern sendbuf ignoreras för alla icke-rotprocesser.
Om parametern comm refererar till en intracommunicator kan du ange ett alternativ på plats genom att ange MPI_IN_PLACE i rotprocessen. Parametrarna recvcount och recvtype ignoreras. Den spridda vektorn anses fortfarande innehålla n segment, där n är gruppstorleken; segmentet som motsvarar rotprocessen flyttas inte.
sendcounts [in]
Antalet element som ska skickas till varje process. Om sendcount[i] är noll är datadelen av meddelandet för den processen tom.Parametern sendcount ignoreras för alla icke-rotprocesser.
displs [in]
De dataplatser som ska skickas till varje kommunikationsprocess. Varje plats i matrisen är relativ till motsvarande element i sendbuf-matrisen .I parametermatriserna sendbuf, sendcounts och displs refererar det n:e elementet i varje matris till de data som ska skickas till n:e kommunikatorprocessen.
Den här parametern är bara viktig i rotprocessen.
sendtype
MPI-datatypen för varje element i bufferten.Parametern sendcount ignoreras för alla icke-rotprocesser.
recvbuf [ut]
Pekaren till en buffert som innehåller de data som tas emot i varje process. Antalet och datatypen för elementen i bufferten anges i parametrarna recvcount och recvtype .recvcount
Antalet element i mottagningsbufferten. Om antalet är noll är datadelen av meddelandet tom.recvtype
Datatypen för elementen i mottagningsbufferten.Root
Rangordningen i sändningsprocessen inom den angivna kommunikatören.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_SCATTERV(SENDBUF, SENDCOUNT, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, DISPLS(*), RECVCOUNT(*), RECVTYPE, ROOT, COMM, IERROR
Kommentarer
Funktionen MPI_Scatterv utökar funktionerna i funktionen MPI_Scatter genom att tillåta att ett varierande antal data, som anges i matrisen sendcounts , skickas till varje process.
Specifikationen av antal, typer och förskjutningar bör inte göra att någon plats i roten läse mer än en gång.
Alla funktionsparametrar är viktiga för rotprocessen, endast parametrarna recvbuf, recvcount, recvtype, root och comm är viktiga för de andra processerna. Rot- och kommaparametrarna måste vara identiska i alla processer.
Typsignaturen som anges av sendcount-parametrarna och sendtype-parametrarna för rotprocessen måste vara lika med typsignaturen som anges av recvcount- och recvtype-parametrarna för alla processer. Därför måste mängden data som skickas vara lika med mängden data som tas emot mellan ett par processer. Distinkta typmappningar mellan avsändare och mottagare tillåts fortfarande.
Om comm är en intracommunicator blir resultatet som om roten körde n send-åtgärder MPI_Send(sendbuf + displs[i]*extent(sendtype), sendcounts[i], sendtype, I, …)
; och varje process körde en mottagning, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
Om parametern comm refererar till en intercommunicator omfattar anropet alla processer i intercommunicator, men med en grupp, grupp A, som definierar rotprocessen. Alla processer i den andra gruppen, grupp B, anger samma värde i rotparametern, d.v.s. rotprocessens rangordning i grupp A. Rotprocessen anger värdet MPI_ROOT i rotparametern. Alla andra processer i grupp A anger värdet MPI_PROC_NULL i rotparametern . Data sänds från rotprocessen till alla processer i grupp B. Buffertparametrarna för processerna i grupp B måste vara konsekventa med buffertparametern för rotprocessen.
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 |