Basiskonzepte . . Funktionsübersicht . . Begriffserklärungen

Hilfesystem für den Message Passing Interface Standard MPI


Virtuelle Topologien

Ein Kommunikator stellt einen linearen Namensraum zur Verfügung, in dem die Prozesse von Null beginnend bis n-1 durchnumeriert sind. Diese Nummer wird als Rang bezeichnet. Eine solche Numerierung wiederspiegelt häufig nicht die logische Kommunikationsstruktur, in Abhängigkeit vom zugrundeliegenden Problem oder Algorithmus treten vielmehr Strukturen wie zwei- und dreidimensionale Gitter, Ringe, Hypercubes oder allgemeine Graphen auf. Die logische Anordnung der Prozesse in solchen Strukturen soll hier als "virtuelle Topologie" bezeichnet werden. Die Topologie gestattet zusätzliche Möglichkeiten für die Bezeichnung der Prozesse. Zum einen kann man sie weiterhin, wie in einem Kommunikator ohne Topologie, über ihren Rang adressieren, zum anderen können sie über ihren Platz in der Topologie, zum Beispiel als Nachbar von Knoten x oder als Knoten mit den Koordinaten xyz, angesprochen werden. Da die Kommunikationsfunktionen Quelle und Ziel nur über den Rang bestimmem, gibt es einige Abfrageroutinen, welche anhand der Koordinaten den Rang ermitteln, oder die Ränge aller Nachbarn liefern usw.

Für MPI ist eine Topologie ein optionales Attribut zu einem Intrakommunikator. Ein Interkommunikator kann keine Topologie besitzen. Jede Kommunikationsstruktur läßt sich als Graph darstellen, in welchem die Prozesse die Knoten und die Verbindungen zwischen den Prozessen die Kanten darstellen. Eine fehlende Kante zwischen zwei Knoten bedeutet nicht, daß diese Knoten nicht miteinander Kommunizieren können. Das ist weiterhin möglich. Eine solche Verbindung wird lediglich von der Topologie vernachlässigt, so als ob es sie nicht gäbe. Die Kanten einer Topologie sind nicht gewichtet, zwei Prozesse sind also entweder logisch verbunden oder logisch nicht verbunden.

MPI besitzt zwei Routinen zum Erzeugen virtuelle Topologien; eine für Graphen allgemein und eine weitere für den speziellen Fall kartesischer Strukturen. Kartesische Strukturen (Gitter, Hypercube u.a.) sind aufgrund ihrer Regelmäßigkeit einfacher zu spezifizieren als allgemeine Graphen. Da sie auch sehr häufig auftreten, bietet MPI von jeder topologiebezogenen Routine neben einer allgemeinen Version (MPI_Graph_...) auch eine für kartesische Strukturen (MPI_Cart_...).

Funktionen zum Erzeugen von Topologien

Funktionen zum Abfragen von Topologien

Low-level - Funktionen