Dela via


funktionen MPI_Comm_split

Partitioner gruppen som är associerad med den angivna kommunikatören i ett angivet antal olika undergrupper.

Syntax

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

Parametrar

  • Comm
    Den kommunikatör som ska delas.

  • Färg
    Den nya kommunikatören som anropsprocessen ska tilldelas till. Värdet för färg måste vara icke-negativt.

    Om en process anger färgvärdetMPI_UNDEFINED returnerar funktionen MPI_COMM_NULL i parametern newcomm till anropsprocessen.

  • Nyckel
    Den relativa rangordningen för anropsprocessen i gruppen för den nya kommunikatören. Mer information om hur du använder nyckel- och färgparametrarna finns i Kommentarer.

  • newcomm [out]
    Vid retur innehåller ett handtag till en ny kommunikatör.

Returvärde

Returnerar MPI_SUCCESS vid lyckat resultat. Annars är returvärdet en felkod.

I Fortran lagras returvärdet i parametern IERROR .

Fortran

    MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

Kommentarer

Det här är en kollektiv funktion, men varje process kan ange olika värden för färg- och nyckelparametrarna.

Det här är en mycket kraftfull mekanism för att dela upp en enda kommunikationsgrupp med processer i ett godtyckligt antal undergrupper. Antalet undergrupper bestäms av antalet färger som anges i alla processer. De resulterande kommunikatörerna överlappar inte varandra. Att dela upp en kommunikatör på det här sättet är användbart för att definiera en hierarki med beräkningar, till exempel för multigrid eller linjär algebra.

Varje undergrupp innehåller alla processer som angav samma värde för färgparametern. I varje undergrupp rangordnas processerna i den ordning som definieras av värdet för nyckelparametern, med band brutna enligt deras rangordning i den gamla gruppen.

Med en intracommunicator-kommunikatör motsvarar ett anrop till MPI_COMM_CREATE(comm, group, new-comm) ett anrop till MPI_COMM_SPLIT(comm, color, key, newcomm), där processer som är gruppmedlemmar anger gruppens nummer, baserat på en unik numrering av alla uppdelade grupper, för färgparametern och deras rangordning i gruppen för nyckelparametern. Alla processer som inte är medlemmar i gruppen anger MPI_UNDEFINED för färgparametern.

För en enda färg behöver nyckelvärdena inte vara unika. Den MPI_Comm_split funktionen sorterar processer efter värdet för nyckelparametern och sorterar band efter deras relativa rangordning i källgruppen. Om samma värde anges för alla nyckelparametrar har alla processer i en viss färg samma relativa rangordning som de hade i den överordnade gruppen.

För intrakommunikatörer ger funktionerna MPI_Comm_split och MPI_Comm_create liknande funktioner för att dela upp en kommunikationsgrupp i olika undergrupper.

Funktionen MPI_Comm_split används när vissa processer inte har fullständig information om de andra medlemmarna i gruppen, men alla processer har färgen på den grupp som de tillhör. I det här fallet identifierar MPI-implementeringen de andra gruppmedlemmarna via kommunikation.

Funktionen MPI_Comm_create används när alla processer har fullständig information om medlemmarna i gruppen. I det här fallet kan MPI-implementeringen undvika den extra kommunikation som krävs för att identifiera gruppmedlemskap.

Kommunikatörer som skapats av MPI_Comm_split kan inte överlappa varandra. Du kan anropa funktionen MPI_Comm_split flera gånger för att lösa den här begränsningen. Du kan skapa flera överlappande kommunikationsstrukturer på det här sättet. Kreativ användning av färg - och nyckelparametrarna i sådana delningsåtgärder uppmuntras.

Resultatet av funktionen MPI_Comm_split på en intercommunicator är att dessa processer till vänster med samma färg som processerna till höger kombineras för att skapa en ny intercommunicator. Nyckelparametern definierar den relativa rangordningen för processer på varje sida av intercommunicatorn. En ny kommunikatör med handtag MPI_COMM_NULL returneras till de processer som anger MPI_UNDEFINED som färg eller anger en färg som bara anges på ena sidan av intercommunicatorn.

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

Se även

MPI Communicator Functions

MPI_Comm_create