Basiskonzepte . . Funktionsübersicht . . Begriffserklärungen

Hilfesystem für den Message Passing Interface Standard MPI


Gruppen, Kontexte und Kommunikatoren

Mit Gruppen, Kontexten und dem Mechanismus der Kommunikatoren unterstützt MPI die Entwicklung paralleler Bibliotheken. Dafür ist es insbesondere nötig, daß jede Bibliotheksfunktion ihren eigenen message-tag-Raum besitzt, so daß sie durch ihre Kommunikation keine anderen Abläufe stört. Für kollektive Operationen in Bibliotheksfunktionen müssen Gültigkeitsbereiche festgelegt werden, so daß andere, nicht involvierte Prozesse ungestört weiterarbeiten können.

Eine Gruppe ist lediglich eine Menge von Prozessen, innerhalb derer jeder Prozeß einen Rang (rank) zur Identifikation besitzt.
Jegliche Art von Kommunikation in MPI ist nur über einen Kommunikator möglich. Einem Kommunikator liegt eine Gruppe zugrunde, darüberhinaus hat er einen eigenen Raum von Message-tags, er kann einen Errorhandler und Attribute besitzen. Innerhalb eines Kommunikators ist jeder Prozeß durch seinen Rang identifizierbar.
Zu jedem Kommunikator läßt sich die Gruppe ermitteln, und aus jeder Gruppe kann man einen Kommunikator konstruieren. Einfache Operationen wie Duplizieren und Aufspalten kann man direkt mit dem Kommunikator ausführen, und dabei den Errorhandler (und im Fall des Duplizierens auch sämtliche Attribute) weitervererben. Für eine spezielle Auswahl der Prozesse, die in einem neuen Kommunikator zusammenarbeiten sollen, muß man den Weg über Konstruktoren für Gruppen nehmen.

Einem Kommunikator können Attribute zugeordnet werden, welche beim Duplizieren auf nutzerdefinierte Art weitergegeben und später verwendet werden können. Damit können zusätzliche Informationen zu einem Kommunikator insbesondere an Bibliotheksfunktionen weitergegeben werden.

Dafür stellt MPI folgende Konzepte zur Verfügung:

Ein Kontext stellt einen sicheren tag-Raum bereit, welcher von jeglicher Kommunikation außerhalb nicht gestört werden kann.

Prozeßgruppen bestehen aus einer Menge durchgehend und eindeutig numerierter Prozeßidentifikatoren. Die Prozeßgruppe definiert den Raum für Prozeßnamen (Ränge) für die Punkt-zu-Punkt-Kommunikation. Außerdem legt sie fest, welche Prozesse in eine kollektive Operation einbezogen sind.

Virtuelle Topologien legen eine Zuordnung der Ränge zu den Prozessen in einer Gruppe fest.

Attribute enthalen die lokalen Informationen, die der Anwender einem Kommunikator hinzugefügt hat.

Kommunikatoren legen den Raum und Geltungsbereich für alle Kommunikationsoperationen in MPI fest. Sie werden unterteilt in Interkommunikatoren für die Kommunikation zwischen Prozeßgruppen und Intrakommunikatoren für die Kommunikation innerhalb einer Prozeßgruppe.
Ein vordefinierter Intrakommunikator ist MPI_COMM_WORLD, welcher alle Prozesse enthält. Erfordert die Problemstellung keine keine Aufteilung in Prozeßgruppen, so kann MPI_COMM_WORLD überall verwendet werden, wo ein Kommunikator als Argument verlangt wird.
Aus diesem initialen Kommunikator lassen sich neue Kommunikatoren ableiten.
MPI_COMM_SELF ist ein Intrakommunikator, welcher nur den Prozeß selbst enthält. MPI_COMM_NULL steht für ein ungültiges handle für einen Kommunikator.
Auf einem Interkommunikator ist prinzipiell keine Topologie definiert.

Ein Prozeß kann Mitglied in mehreren Gruppen und Kommunikatoren sein. Er besitzt dann in jedem einen Rang.
Jeder Prozeß, der Mitglied in einem Kommunikator werden soll, muß den Konstruktor aufrufen, und erhält somit ein handle für den neuen Kommunikator. Das Erzeugen eines Kommunikators ist also eine globale Operation. MPI erlaubt, daß auch Prozesse, die nicht Mitglied werden, den Konstruktor rufen. Sie erhalten anstelle eines gültigen handles MPI_COMM_NULL zurück.
Gruppen werden stets aus bereits existierenden Gruppen zusammengestellt. Als Basisgruppe kann jede Gruppe, die einem Kommunikator (z.B. MPI_COMM_WORLD) zugrundeliegt, genutzt werden. Gruppenkonstruktoren arbeiten lokal auf dem rufenden Prozeß. Für diesen Vorgang ist keine Kommunikation zwischen Prozessen notwendig, da es auf der Basis von Gruppen keine gemeinsamen Operationen gibt. Es kann also jeder Prozeß beliebige Gruppen für sich definieren, auch dann, wenn er selbst nicht in der Gruppe enthalten ist.

Funktionen für die Verwaltung von Gruppen:

Verwaltung von Kommunikatoren:

Interkommunikation:

Attribute: