Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee wordt de groep die is gekoppeld aan de opgegeven communicator gepartitioneerd in een opgegeven aantal niet-aaneengesloten subgroepen.
Syntaxis
int MPIAPI MPI_Comm_split(
MPI_Comm comm,
int color,
int key,
_Out_ MPI_Comm *newcomm
);
Parameters
Comm
De communicator om te splitsen.Kleur
De nieuwe communicator waaraan het oproepproces moet worden toegewezen. De waarde van kleur moet niet-negatief zijn.Als een proces de kleurwaardeMPI_UNDEFINED opgeeft, retourneert de functie MPI_COMM_NULL in de parameter newcomm naar het aanroepende proces.
sleutel
De relatieve positie van het oproepproces in de groep van de nieuwe communicator. Zie Opmerkingen voor meer informatie over het gebruik van de sleutel - en kleurparameters .newcomm [out]
Bij terugkomst bevat een handvat voor een nieuwe communicator.
Retourwaarde
Retourneert MPI_SUCCESS bij succes. Anders is de retourwaarde een foutcode.
In Fortran wordt de retourwaarde opgeslagen in de parameter IERROR .
Fortran
MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
Opmerkingen
Dit is een collectieve functie, maar elk proces kan verschillende waarden opgeven voor de kleur - en sleutelparameters .
Dit is een uiterst krachtig mechanisme voor het verdelen van één communicerende groep processen in een willekeurig aantal subgroepen. Het aantal subgroepen wordt bepaald door het aantal kleuren dat is opgegeven voor alle processen. De resulterende communicatoren overlappen elkaar niet. Het op deze manier verdelen van een communicator is handig voor het definiëren van een hiërarchie van berekeningen, zoals voor multiraster of lineaire algebra.
Elke subgroep bevat alle processen die dezelfde waarde voor de kleurparameter hebben opgegeven. Binnen elke subgroep worden de processen gerangschikt in de volgorde die is gedefinieerd door de waarde van de sleutelparameter , waarbij de bindingen worden verbroken op basis van hun positie in de oude groep.
Met een intracommunicator communicator is een aanroep naar MPI_COMM_CREATE(comm, group, new-comm) gelijk aan een aanroep naar MPI_COMM_SPLIT(comm, color, key, newcomm), waarbij processen die groepsleden zijn het nummer van de groep opgeven, op basis van een unieke nummering van alle niet-aaneengesloten groepen, voor de kleurparameter en hun positie in de groep voor de sleutelparameter . Alle processen die geen lid zijn van de groep, geven MPI_UNDEFINED op voor de kleurparameter .
Voor elke kleur hoeven de sleutelwaarden niet uniek te zijn. De functie MPI_Comm_split sorteert processen op basis van de waarde van de sleutelparameter en sorteert de relaties op hun relatieve positie in de brongroep. Als dezelfde waarde is opgegeven voor alle sleutelparameters , hebben alle processen in een bepaalde kleur dezelfde relatieve rangorde als in de bovenliggende groep.
Voor intracommunicators bieden de functies MPI_Comm_split en MPI_Comm_create vergelijkbare mogelijkheden om een communicerende groep op te splitsen in niet-aaneengesloten subgroepen.
De functie MPI_Comm_split wordt gebruikt wanneer sommige processen geen volledige informatie hebben van de andere leden in hun groep, maar alle processen de kleur hebben van de groep waartoe ze behoren. In dit geval detecteert de MPI-implementatie de andere groepsleden via communicatie.
De functie MPI_Comm_create wordt gebruikt wanneer alle processen volledige informatie over de leden van hun groep hebben. In dit geval kan de MPI-implementatie de extra communicatie voorkomen die nodig is om groepslidmaatschap te detecteren.
Communicators die door MPI_Comm_split zijn gemaakt, kunnen elkaar niet overlappen. U kunt de functie MPI_Comm_split meerdere keren aanroepen om deze beperking te verhelpen. U kunt op deze manier meerdere overlappende communicatiestructuren maken. Creatief gebruik van de kleur - en sleutelparameters bij dergelijke splitsbewerkingen wordt aangemoedigd.
Het resultaat van de MPI_Comm_split functie op een intercommunicator is dat de processen aan de linkerkant met dezelfde kleur als de processen aan de rechterkant worden gecombineerd om een nieuwe intercommunicator te maken. De sleutelparameter definieert de relatieve rangorde van processen aan beide zijden van de intercommunicator. Een nieuwe communicator met een handvat van MPI_COMM_NULL wordt geretourneerd naar die processen die MPI_UNDEFINED opgeven als kleur of een kleur opgeven die slechts aan één kant van de intercommunicator is opgegeven.
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 |