MPI_Scatter functie
Spreiding van gegevens van één lid over alle leden van een groep. De functie MPI_Scatter voert de inverse uit van de bewerking die wordt uitgevoerd door de functie MPI_Gather .
Syntaxis
int MPIAPI MPI_Scatter(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parameters
sendbuf [in]
De ingang naar een buffer die de gegevens bevat die door het hoofdproces moeten worden verzonden.De parameter sendbuf wordt genegeerd voor alle niet-hoofdprocessen.
Als de comm-parameter verwijst naar een intracommunicator, kunt u een in-place optie opgeven door MPI_IN_PLACE op te geven in het hoofdproces. De parameters recvcount en recvtype worden genegeerd. De verspreide vector wordt nog steeds geacht n segmenten te bevatten, waarbij n de groepsgrootte is; het segment dat overeenkomt met het hoofdproces, wordt niet verplaatst.
sendcount
Het aantal elementen in de verzendbuffer. Als sendcount nul is, is het gegevensgedeelte van het bericht leeg.De parameter sendcount wordt genegeerd voor alle niet-hoofdprocessen.
sendtype
Het gegevenstype van elk element in de buffer.De parameter sendcount wordt genegeerd voor alle niet-hoofdprocessen.
recvbuf [uit]
De ingang naar een buffer die de gegevens bevat die voor elk proces worden ontvangen. Het aantal en het gegevenstype van de elementen in de buffer worden opgegeven in de parameters recvcount en recvtype .recvcount
Het aantal elementen in de ontvangstbuffer. Als het aantal nul is, is het gegevensgedeelte van het bericht leeg.recvtype
Het gegevenstype van de elementen in de ontvangstbuffer.Root
De rang van het verzendproces binnen de opgegeven communicator.Comm
De MPI_Comm communicatorgreep.
Retourwaarde
Retourneert MPI_SUCCESS bij succes. Anders is de retourwaarde een foutcode.
In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .
Fortran
MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR
Opmerkingen
Het effect van de functie MPI_Scatter is alsof het hoofdproces een bericht verzendt met behulp van de functie MPI_Send . Dit bericht wordt gesplitst in n gelijke segmenten, één voor elk lid van de groep. Het ith-segment wordt verzonden naar het ith-proces in de groep.
Als comm een intracommunicator is, is het resultaat alsof de root uitgevoerd n send-bewerkingen MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)
; en elk proces heeft een ontvangst uitgevoerd, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
De typehandtekening die is opgegeven door de parameters sendcount en sendtype voor het hoofdproces moet gelijk zijn aan de typehandtekening die is opgegeven door de recvcount en parameters voor het opnieuw typen voor alle processen. Daarom moet de hoeveelheid gegevens die wordt verzonden gelijk zijn aan de hoeveelheid gegevens die wordt ontvangen tussen een paar processen. Afzonderlijke typetoewijzingen tussen afzender en ontvanger zijn nog steeds toegestaan.
Alle functieparameters zijn belangrijk voor het hoofdproces, alleen de parameters recvbuf, recvcount, recvtype, root en comm zijn belangrijk voor de andere processen. De hoofd- en comm-parameters moeten identiek zijn voor alle processen.
De specificatie van aantallen en typen mag er niet toe leiden dat een locatie in de hoofdmap meer dan één keer wordt gelezen.
Als de comm-parameter verwijst naar een intercommunicator, omvat de aanroep alle processen in de intercommunicator, maar met één groep, groep A, die het basisproces definieert. Alle processen in de andere groep, groep B, stellen dezelfde waarde in de hoofdparameter in, dat wil gezegd, de rang van het hoofdproces in groep A. Met het hoofdproces wordt de waarde MPI_ROOT in de hoofdparameter ingesteld. Alle andere processen in groep A stellen de waarde MPI_PROC_NULL in de hoofdparameter . Gegevens worden vanuit het hoofdproces verzonden naar alle processen in groep B. De bufferparameters van de processen in groep B moeten consistent zijn met de bufferparameter van het hoofdproces.
Vereisten
Product |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package of HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Bibliotheek |
Msmpi.lib |
DLL |
Msmpi.dll |