Message Passing Interface Embedded-Protokoll MCAPI trägt die Last in Multicore-Netzen
Die Interprozesskommunikation in Netzwerken von Multicore-Rechnern ist ein kniffliges Problem. Konzepte aus High-Performance- und Embedded-Computing müssen hier Hand in Hand gehen.
Anbieter zum Thema

Hochleistungs-Computing (High-Performance Computing oder HPC) ist auf eine große Zahl von Computern angewiesen. Oft agiert ein Rechner als Koordinator (Master), der Teilmengen von Daten an Prozesse weiterleitet, die sich irgendwo auf der Welt befinden können. Die Schnittstelle zur Nachrichtenweiterleitung (Message Passing Interface oder MPI) erlaubt die Weitergabe der Daten.
Normalerweise wird MPI einmal in jedem Server-System implementiert, um den Nachrichtenverkehr abzuwickeln. Aber in Multiprozessor- oder Mehrkern-Servern, die mehr als ein paar Kerne verwenden, kann die Verwendung einer kompletten MPI-Implementierung sehr aufwendig sein. Denn das MPI muss in diesem Fall in einer asymmetrischen Multiprozessorkonfiguration (AMP, Asymmetric Multi-Processing) auf jedem Prozessorkern des Systems ausgeführt werden.
Das Multikern-Kommunikations-API (Multicore Communications Application Programming Interface oder MCAPI) andererseits – ein Protokoll, das im Hinblick auf Embedded-Systeme entwickelt wurde – stellt eine wesentlich effizientere Art und Weise dar, MPI-Nachrichten innerhalb eines Computers zu bewegen.
Sumoringer und Fliegengewicht helfen sich gegenseitig
Obwohl sie ähnlich aussehen, wurden MPI und MCAPI für unterschiedliche Rollen entwickelt. MPI kommt aus der Welt des Hochleistungs-Computing, MCAPI aus der Welt der Embedded-Systeme. Dies gibt ihnen unterschiedliche Eigenschaften, die sich gegenseitig ergänzen und die im Folgenden erläutert werden.
- Topologie: Das Netzwerk, über das MPI läuft, kann seine Konfiguration in jedem Moment ändern, sei es äußerlich oder durch Starten oder Stoppen von Prozessen. Im Vergleich dazu ist ein eingebettetes System statisch. Tatsächlich ist es meist physisch unmöglich, Komponenten in einem Embedded System abzutrennen. Dies bedeutet, dass MCAPI keine Funktionalität benötigt, um Änderungen in der Topologie zu beherrschen.
- Kopplung und Lokalität: Kopplung bezieht sich auf die Stärke, mit der zwei Systeme miteinander verbunden sind. Netzwerke werden im Allgemeinen als schwach gekoppelt bezeichnet. Am anderen Ende der Skala sind die Kerne eines Multicore-Systems sehr eng miteinander verbunden.
Die Kopplung ist eng verbunden mit dem Konzept der Lokalität: ein Netzwerk kann Rechner mit einem Computer auf der anderen Seite der Welt verbinden; zwei Kerne trennen typischerweise nur Mikrometer. Wo MPI die Situation von schwach gekoppelten und nicht-lokalen Knoten beherrschen muss, kann MCAPI enge Kopplung und hohe Lokalität voraussetzen.
Das MPI ist ein etabliertes Protokoll und robust genug, um die Probleme zu beherrschen, die in einem dynamischen Netzwerk von Computersystemen auftreten können. Solche Netzwerke sind selten statisch. Jederzeit kann sich die Anzahl der Knoten im Netz ändern, und das MPI muss diese Eventualität im Griff haben. Deshalb verfügt das MPI über die Fähigkeit zu entdecken, welche Knoten und Systeme im Netzwerk sind.
Programmierseitig hat MPI keinen Bezug zu Computern oder Prozessorkernen - es kennt nur Prozesse. Prozesse entstehen mit der Initialisierung. Dann erzeugt der Entdeckungsmechanismus ein Abbild der Prozesse und ihrer Anordnung. MPI ist sehr flexibel im Bezug darauf, wie die Topologie kreiert wird. Aber wenn das System schließlich komplett läuft, existiert ein Abbild der Prozesse, und dieses Abbild kann zum Datenaustausch herangezogen werden. Ein bestimmtes Programm kann so Nachrichten mit einem Prozess innerhalb oder außerhalb einer Gruppe oder mit allen Prozessen in einer Gruppe austauschen. Das Programm selbst weiß nicht, ob es sich mit dem Computer nebenan austauscht oder mit einem Rechner auf einem anderen Kontinent.
Demnach ist es für ein Programm gleichgültig, ob der Prozess, mit dem es kommunizieren will, auf einem Einzel- oder Mehrkernsystem läuft, ob es homogen oder heterogen ist oder ob es symmetrisches oder asymmetrisches Multiprozessing (SMP oder AMP) implementiert. Das Programm weiß nur: Es gibt einen Prozess, dem es sofort eine Nachricht senden will. Es bleibt der MPI-Implementierung auf dem Computer überlassen, sicherzustellen, dass die Nachricht dem anvisierten Prozess durchgestellt wird.
Auf Seite 2: Symmetric Multiprocessing weist Limitierungen auf
(ID:29116650)