MPI_Comm_create-Funktion
Extrahiert eine Teilmenge einer Gruppe von Prozessen zum Zweck der separaten Berechnung von Multiple Instruction Multiple Data (MIMD) in einem separaten Kommunikator.
Syntax
int MPIAPI MPI_Comm_create(
MPI_Comm comm,
MPI_Group group,
_Out_ MPI_Comm *newcomm
);
Parameter
comm
Der Quellkommunikator.group
Die Gruppe, die die angeforderte Teilmenge der Prozesse im Quellkommunikator definiert.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_CREATE(COMM,GROUP,NEWCOMM,IERROR)
INTEGER COMM, GROUP, NEWCOMM, IERROR
Hinweise
Der von dieser Funktion erstellte Kommunikator kann mithilfe der funktion MPI_Comm_create oder anderer Communicatorkonstruktoren weiter in parallele Unterberechnungen unterteilt werden. Die MPI_Comm_split-Funktion ist eine allgemeinere Funktion zum Erstellen MPI_Comm-Objekte .
Wenn der comm-Parameter auf einen Intrakommunikationsmodul verweist, gibt diese Funktion einen neuen Kommunikator mit einer Kommunikationsgruppe zurück, wie durch den group-Parameter definiert. Es werden keine zwischengespeicherten Informationen vom Quellkommunikator an den neuen Communicator weitergegeben. Jeder Prozess muss mit einem group-Parameter aufrufen, der eine Untergruppe der Gruppe ist, die dem Quellkommunikator zugeordnet ist. Ein möglicher Wert ist MPI_GROUP_EMPTY. Die Prozesse können unterschiedliche Werte für den group-Parameter angeben. Wenn ein Prozess mit einer nicht leeren Gruppe aufruft, müssen alle Prozesse in dieser Gruppe die Funktion mit den gleichen Werten für den group-Parameter aufrufen, d. h. die gleichen Member in derselben Reihenfolge. Andernfalls gibt die Funktion einen Fehler zurück. Dieses Ergebnis impliziert, dass die Gruppe von Gruppen, die in den Prozessen angegeben werden, getrennt sein muss. Wenn der aufrufende Prozess ein Mitglied der Gruppe ist, die im group-Parameter angegeben ist, stellt der newcomm-Parameter einen Communicator mit der angegebenen Gruppe als zugeordnete Gruppe dar. Wenn ein Prozess eine Gruppe angibt, zu der er nicht gehört, z. B. MPI_GROUP_EMPTY, gibt der parameter newcommMPI_COMM_NULL zurück.
Die Schnittstelle unterstützt den ursprünglichen Mechanismus von MPI-1.1, der dieselbe Gruppe in allen Prozessen von comm erforderte. Es wurde in MPI-2.2 erweitert, um die Verwendung von getrennten Untergruppen zu ermöglichen, um Implementierungen zu ermöglichen, um unnötige Kommunikation zu vermeiden, die die MPI_Comm_split Funktion verursachen würde, wenn der Benutzer bereits die Mitgliedschaft der disjointen Untergruppen kennt.
Die MPI_Comm_create Funktion ist kollektiv und muss von allen Prozessen in der Gruppe des Quellkommunikators aufgerufen werden. Die Anforderung, dass die gesamte Gruppe am Anruf teilnimmt, ergibt sich aus den folgenden Problemen:
- Die Implementierung ermöglicht es, die MPI_Comm_create-Funktion zusätzlich zur regulären kollektiven Kommunikation zu überlappen.
- Sie bietet zusätzliche Sicherheit, insbesondere für den Fall, dass teilweise überlappende Gruppen verwendet werden, um neue Kommunikatoren zu erstellen.
- Es ermöglicht Implementierungen, um einen Teil der Kommunikation im Zusammenhang mit der Kontexterstellung zu vermeiden.
Wenn der comm-Parameter auf einen Intercommunicator verweist, ist der erstellte Kommunikator auch ein Interkommunikationsmodul, bei dem die lokale Gruppe nur aus den im group-Parameter angegebenen Prozessen besteht. Geben Sie nur die Prozesse in der lokalen Gruppe des Eingabeinterkommunikationsmoduls an, die Teil des neuen Communicators im group-Parameter sein sollen. Alle Prozesse in derselben lokalen Gruppe des Communicators müssen den gleichen Wert für den group-Parameter angeben, d. h. die gleichen Member in derselben Reihenfolge. Wenn eine Der beiden Gruppen nicht mindestens einen Prozess in der lokalen Gruppe des Intercommunicators angibt oder wenn der aufrufende Prozess nicht in der Gruppe enthalten ist, wird ein Fehler zurückgegeben.
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 |