
Quelle: Eigene Darstellung
In der parallelen Programmierung mit Supercomputern wie CLAIX wird seit über 30 Jahren das sogenannte Message Passing Interface für die effiziente Kommunikation zwischen Prozessen benutzt. Programmierfehler in der MPI-Kommunikation können – gerade durch die parallelisierte Ausführung – zu klassischen Problemen in der Softwareentwicklung wie Deadlocks, Data Races oder Typfehlern führen. Solche Fehler sind für den Entwickler jedoch oft schwierig zu finden, insbesondere, wenn ein Fehler nichtdeterministisch, d.h. nur sporadisch, auftritt.
Um Entwickler bei der Erkennung von Fehlern in der MPI-Programmierung zu unterstützen, wird am IT Center seit über 10 Jahren das MPI-Korrektheitsanalysetool MUST entwickelt. Es kann verschiedene Arten von MPI-Programmierfehlern beginnend bei einfachen Argumentfehlern bis hin zu den bereits genannten Deadlocks und Data Races erkennen und dem Nutzer melden. MUST hängt sich dafür an die Ausführung des Programms und kann währenddessen die Fehler erkennen. Wir haben in einem vergangenen Blogbeitrag bereits über die grundsätzliche Funktionalität von MUST berichtet. MUST ist unter einer Open-Source-Lizenz (BSD-3) für alle interessierten Nutzer verfügbar.
Anfang des Monats wurde MUST in der neuen Version 1.11.0 veröffentlicht und dabei um weitere Funktionalitäten ergänzt, die wir im Folgenden kompakt darstellen und erläutern.
Analyse von MPI One-Sided Communication (RMA)
In MPI gibt es verschiedene Arten des Datenaustauschs. Einerseits das klassische „Message Passing“, bei dem ein Sender seine Daten als Nachricht zu einem Empfänger schickt, der aktiv die Nachricht empfängt. Diese Art der Kommunikation ist zweiseitig, weil sowohl Sender als auch Empfänger beide an der Kommunikation beteiligt sind. Bei der einseitigen Kommunikation (MPI One-Sided Communication) kann der „sendende“ Prozess die Daten direkt in den Speicher vom Zielprozess schreiben. Anders gesprochen muss der Zielprozess die Daten nicht mehr aktiv empfangen. Diese einseitige Kommunikation kann Effizienzvorteile bieten, birgt aber auch die Gefahr verschiedener Probleme wie Data Races und Deadlocks.
Bisher war MPI One-Sided Communication nur minimal in MUST unterstützt. Mit dem neuen Release kann MUST simple Argumentfehler sowie Data Races und Deadlocks nun auch für diese Art der Kommunikation erkennen. Damit wird das Portfolio der analysierbaren MPI-Programme noch einmal erweitert.
Analyse von Neighborhood Collectives und I/O
In MPI ist der Datenaustausch ebenfalls mit sogenannten „Kollektiven“ möglich. Mit diesen können mehrere gleichzeitig Daten austauschen. Zum Beispiel kann damit ein Prozess Daten an alle anderen Prozesse senden. Das kann effizienter sein als der individuelle Austausch über Nachrichten zwischen den Prozessen. Eine neuere Funktionalität sind die sogenannten „Neighborhood Collectives“, mit denen der Austausch zwischen logisch „benachbarten“ Prozessen einfacher wird. MUST unterstützt nun auch die Analyse dieses Datenaustauschs hinsichtlich Deadlocks und sogenannten Typfehlern. Typfehler treten beispielsweise auf, wenn ein Prozess Daten mit einem anderen Datentypen (zum Beispiel „Integer“) sendet und einem anderen inkompatiblen Datentypen empfängt (zum Beispiel „Float“).
Neben dem Austausch von Daten zwischen Prozessen ermöglicht MPI auch das permanente Speichern von Daten auf ein gegebenes Dateisystem. Diese Funktionalität wird „MPI I/O“ genannt. Mit dem neuen MUST-Release kann auch diese Art der Datenspeicherung mit MUST auf Fehler analysiert werden.
Verbesserungen in der Erkennung von Typfehlern mit TypeART
MUST interagiert auch mit anderen Werkzeugen zur Korrektheitsanalyse. Eins davon ist TypeART, welches C/C++ Speicherallokationen analysiert und schaut, welcher Typ diesen zugewiesen wurde. Mit Hilfe der Typinformationen aus TypeART kann MUST weitere Inkonsistenzen zwischen C/C++-Datentypen und MPI-Datentypen finden. Im neuen Release wurde die Unterstützung von TypeART für neuere Compiler-Versionen ausgebaut und auf komplexere Datentypen in MUST erweitert.
Weitere Informationen
Mehr über MUST und dessen Entwicklung erfahrt ihr auf der Webseite. Von dort aus könnt ihr es herunterladen und installieren. Auf unserem HPC-Cluster CLAIX ist es bereits installiert und für alle Nutzer verfügbar.
Verantwortlich für die Inhalte dieses Beitrags ist Simon Schwitanski.



Schreibe einen Kommentar