Message Passing Interface

Embedded-Protokoll MCAPI trägt die Last in Multicore-Netzen

29.09.11 | Redakteur: Franz Graser

MPI-Nachrichten werden in MCAPI verpackt und versandt

Eine alternative Lösung ist, alle ursprünglichen MPI-Aufrufe im Programm für den Master-Kern sowie die Beschleuniger-Kerne zu belassen und die MPI-Nachrichten dann in MCAPI-Nachrichten zu verpacken, um sie zu den verschiedenen Kernen weiterzuleiten.

Kommunikation durch Tunnelung: Ein Hilfsdienst (Wrap/Unwrap) im Master-Kern verpackt eine MPI-Message in MCAPI und schickt sie an die Beschleunigerkerne. Die MPI-Nachricht wird dann wieder entpackt und an die betreffenden Prozessoren versandt (EEMBC)
Kommunikation durch Tunnelung: Ein Hilfsdienst (Wrap/Unwrap) im Master-Kern verpackt eine MPI-Message in MCAPI und schickt sie an die Beschleunigerkerne. Die MPI-Nachricht wird dann wieder entpackt und an die betreffenden Prozessoren versandt (EEMBC)

Drei Dienste sind nötig, damit das funktioniert: MPI auf dem Master-Kern, MCAPI auf dem Master-Kern und den Beschleuniger-Kernen sowie ein Hilfsdienst, der die MPI-Nachrichten verpackt und auspackt, um sie durch MCAPI zu tunneln (Bild 2).

Der Trick besteht darin, dass der Hilfsdienst das MPI duplizieren muss, auch wenn er nur die MPI-Funktionalität vorspiegelt. Der Hilfsdienst wird als Bibliothek auf die Beschleuniger-Kerne installiert und gibt sich als MPI-Bibliothek aus. Damit können Prozesse, die auf den Beschleuniger-Kernen laufen, das erwartete MPI nutzen. Auf dem Master-Kern muss der Hilfsdienst zusätzlich die Prozesse repräsentieren, die auf den Beschleuniger-Kernen laufen, damit die MPI-Nachrichten, die für die Beschleuniger-Kerne bestimmt sind, korrekt übermittelt werden.

Einige Beispiele, die auf Bild 2 basieren, zeigen, wie die Vermittlung funktioniert. Eine Nachricht kann mehrere Wege nehmen:

1. Prozessor n (Proc n) sendet eine Nachricht zu Prozessor 0 (Proc 0). In diesem Fall läuft Proc 0 auf dem Master-Kern mit einem vollständigen MPI-Dienst, so dass eine normale MPI-Nachricht übermittelt wird.

2. Proc n sendet eine Nachricht an Proc 3. In diesem Fall läuft Proc 3 auf einem Beschleuniger-Kern, so dass die Nachricht zunächst vom Master-Kern empfangen wird. Der erkennt, dass sich Proc 3 auf einem anderen Kern befindet. Der Master-Kern verpackt die MPI-Nachricht in eine MCAPI-Meldung und schickt sie zu dem anderen Kern. Der Beschleuniger-Kern akzeptiert die MCAPI-Meldung und packt die MPI-Nachricht aus, die nun Proc 3 zur Verfügung steht.

3. Proc 1 sendet eine Nachricht an Proc 2. In diesem Fall sind beide Prozesse auf dem gleichen Server, aber auf unterschiedlichen Kernen. Der Master-Kern verpackt die MPI-Nachricht in eine MCAPI-Nachricht, die im Beschleuniger-Kern für die Verwendung durch Proc 2 ausgepackt wird.

4. Proc 2 sendet eine Nachricht an Proc 3. In diesem Fall sind beide Prozesse auf dem gleichen Kern, aber auf dem Kern läuft das MPI nicht. Daher geht die Nachricht über MCAPI an die volle MPI-Implementierung auf dem Master-Kern, die die Nachricht sofort wieder zurück leitet. Dies klingt ineffizient, aber verglichen mit einem Nachrichtenaustausch zwischen Server-Systemen über das Internet ist diese Übermittlung noch vergleichsweise schnell.

5. Proc 2 sendet eine Nachricht an Proc n. In diesem Fall verpackt der Beschleuniger-Kern die Nachricht als MCAPI und schickt sie an den Master-Kern. Sobald die Nachricht auf dem Master-Kern ausgepackt ist, kann der MPI-Dienst die Nachricht an den anderen Server weiterleiten.

Nur ein Serverkern muss das schwere Protokoll ausführen

Auch hier führt nur ein Kern das MPI aus, auf den anderen läuft MCAPI. Das schlanke Design von MCAPI hilft dabei, MPI-Meldungen zu verteilen. Aber die Prozesse, die MPI-Nachrichten austauschen, haben keine Ahnung davon, dass etwas Anderes als MPI läuft. Der Preis dafür ist die Bibliothek, die das Verpacken und Auspacken übernimmt und für alle Kerne notwendig ist.

Durch Verwendung eines dieser Ansätze können wir mit MCAPI die zusätzlichen Kerne moderner Serversysteme effektiv nutzen. //FG

* * Markus Levy... ist Präsident des Embedded Microprocessor Benchmark Consortiums. Sven Brehmer leitet Polycore Software, Bryon Moyer ist IT-Berater.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 29116650 / Embedded Boards)

Elektronikpraxis News täglich 14 Uhr

News und Fachwissen für die professionelle Elektronikentwicklung - incl. ausgewählte dpa-Select News

* Ich bin mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung und AGB einverstanden.
Spamschutz:
Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein.

Digitale Ausgabe kostenlos lesen

ELEKTRONIKPRAXIS 12/2016

ELEKTRONIKPRAXIS 12/2016

FPGA-basierte Systeme zeitgemäß entwickeln

Weitere Themen:

Embedded-Software-Strategie
String-PV-Anlagen sicher abschalten

zum ePaper

zum Heftarchiv

ELEKTRONIKPRAXIS 11/2016

ELEKTRONIKPRAXIS 11/2016

Gerätesteckverbinder für das THR- und SMT-Löten

Weitere Themen:

Stabilisierung des Traktionsnetzes
Hall-Sensoren im Automobilbau

zum ePaper

zum Heftarchiv