MPI_Comm_split-Funktion
Partitioniert die Gruppe, die dem angegebenen Kommunikator zugeordnet ist, in eine angegebene Anzahl von unzusammenigen Untergruppen.
Syntax
int MPIAPI MPI_Comm_split(
MPI_Comm comm,
int color,
int key,
_Out_ MPI_Comm *newcomm
);
Parameter
comm
Der zu teilende Kommunikator.color
Der neue Kommunikator, dem der aufrufende Prozess zugewiesen werden soll. Der Wert der Farbe muss nicht negativ sein.Wenn ein Prozess den FarbwertMPI_UNDEFINED angibt, gibt die Funktion MPI_COMM_NULL im newcomm-Parameter an den aufrufenden Prozess zurück.
key
Der relative Rang des aufrufenden Prozesses in der Gruppe des neuen Kommunikators. Ausführliche Informationen zur Verwendung der Schlüssel - und Farbparameter finden Sie unter Hinweise.newcomm [out]
Enthält bei der Rückgabe ein Handle für einen neuen Kommunikator.
Rückgabewert
Gibt MPI_SUCCESS nach Erfolg zurück. Andernfalls ist der Rückgabewert ein Fehlercode.
In Fortran wird der Rückgabewert im IERROR-Parameter gespeichert.
Fortran
MPI_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
Hinweise
Dies ist eine kollektive Funktion, aber jeder Prozess kann unterschiedliche Werte für die Farb- und Schlüsselparameter angeben.
Dies ist ein äußerst leistungsstarker Mechanismus, um eine einzelne kommunizierende Gruppe von Prozessen in eine beliebige Anzahl von Untergruppen aufzuteilen. Die Anzahl der Untergruppen wird durch die Anzahl der Farben bestimmt, die für alle Prozesse angegeben werden. Die resultierenden Kommunikatoren überschneiden sich nicht. Die Unterteilung eines Kommunikators auf diese Weise ist nützlich, um eine Hierarchie von Berechnungen zu definieren, z. B. für multigrid oder lineare Algebra.
Jede Untergruppe enthält alle Prozesse, die den gleichen Wert für den Farbparameter angegeben haben. Innerhalb jeder Untergruppe werden die Prozesse in der Reihenfolge sortiert, die durch den Wert des Schlüsselparameters definiert ist, wobei die Bindungen entsprechend ihrem Rang in der alten Gruppe unterbrochen werden.
Bei einem kommunikationsinternen Kommunikator entspricht ein Aufruf MPI_COMM_CREATE(comm, group, new-comm)
von einem Aufruf von MPI_COMM_SPLIT(comm, color, key, newcomm)
, wobei Prozesse, die Gruppenmitglieder sind, die Nummer der Gruppe basierend auf einer eindeutigen Nummerierung aller getrennten Gruppen für den Farbparameter und deren Rang in der Gruppe für den Schlüsselparameter angeben. Alle Prozesse, die nicht Mitglieder der Gruppe sind, geben MPI_UNDEFINED für den Farbparameter an.
Für eine farbe müssen die Schlüsselwerte nicht eindeutig sein. Die MPI_Comm_split-Funktion sortiert Prozesse nach dem Wert des Schlüsselparameters und sortiert Verbindungen nach ihrem relativen Rang in der Quellgruppe. Wenn für alle Schlüsselparameter derselbe Wert angegeben wird, haben alle Prozesse in einer bestimmten Farbe die gleiche relative Rangfolge wie in ihrer übergeordneten Gruppe.
Für Intrakommunikationsleiter bieten die funktionen MPI_Comm_split und MPI_Comm_create ähnliche Funktionen, um eine kommunizierende Gruppe in getrennte Untergruppen aufzuteilen.
Die MPI_Comm_split-Funktion wird verwendet, wenn einige Prozesse nicht über vollständige Informationen der anderen Mitglieder in ihrer Gruppe verfügen, aber alle Prozesse die Farbe der Gruppe haben, zu der sie gehören. In diesem Fall ermittelt die MPI-Implementierung die anderen Gruppenmitglieder per Kommunikation.
Die funktion MPI_Comm_create wird verwendet, wenn alle Prozesse über vollständige Informationen der Mitglieder ihrer Gruppe verfügen. In diesem Fall kann die MPI-Implementierung die zusätzliche Kommunikation vermeiden, die erforderlich ist, um die Gruppenmitgliedschaft zu ermitteln.
Von MPI_Comm_split erstellte Kommunikatoren können sich nicht überschneiden. Sie können die funktion MPI_Comm_split mehrmals aufrufen, um diese Einschränkung zu überwinden. Auf diese Weise können Sie mehrere überlappende Kommunikationsstrukturen erstellen. Die kreative Verwendung der Farb - und Schlüsselparameter in solchen Teilungsvorgängen wird empfohlen.
Das Ergebnis der MPI_Comm_split Funktion auf einem Interkommunizierer ist, dass sich die Prozesse auf der linken Seite mit der gleichen Farbe wie die Prozesse auf der rechten Seite kombinieren, um einen neuen Interkommunizierer zu schaffen. Der Schlüsselparameter definiert den relativen Rang von Prozessen auf jeder Seite des Interkommunikationsgebers. Ein neuer Kommunikator mit MPI_COMM_NULL wird an die Prozesse zurückgegeben, die MPI_UNDEFINED als Farbe angeben oder eine Farbe angeben, die nur auf einer Seite des Interkommunikationsmoduls angegeben ist.
Anforderungen
Produkt |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package oder HPC Pack 2008 Client Utilities |
Header |
Mpi.h; Mpif.h |
Bibliothek |
Msmpi.lib |
DLL |
Msmpi.dll |