Die Welt des High Performance Computing entwickelt sich rasant weiter und die Rechenkapazitäten erreichen neue Höhen. In diesem Kontext sind Werkzeuge zur Fehlererkennung und -behebung unerlässlich, um die Zuverlässigkeit der Anwendungen zu gewährleisten. Ein solches Werkzeug ist Archer, das speziell zur Erkennung von Data Races in OpenMP-Programmen entwickelt wurde.
Hintergrund und Notwendigkeit
Mit der Zunahme der Rechenleistung müssen viele Softwarekomponenten parallelisiert werden, um die maximale Effizienz zu erreichen. OpenMP hat sich als bevorzugtes Modell zur Umsetzung dieser Parallelisierung innerhalb eines Rechenknotens etabliert, da es sowohl portabel als auch benutzerfreundlich ist. Eine neue Fehlerquelle beim Parallelisieren mit OpenMP ist der kritische Wettlauf, was die Entwicklung und Wartung solcher Programme erschwert. In diesem Kontext bezieht sich ein kritischer Wettlauf (oder Data Race) auf ein Problem, das auftreten kann, wenn mehrere Computerprozesse oder Threads unsynchonisiert auf dieselben Daten zugreifen und diese verändern wollen. In diesem Fall ist das Verhalten des Programms nicht definiert, was zu unerwarteten und oft fehlerhaften Ergebnissen führen kann.
Die Herausforderung
Traditionelle OpenMP-Werkzeuge, die nach Data Races suchen, konnten mit den modernen, großen und komplexen HPC-Anwendungen nicht Schritt halten. Das führte dazu, dass die Entwicklung ineffizient war und Entwickler*innen manchmal dazu gezwungen wurden, den einfacheren sequenziellen Code zu verwenden, um schwer auffindbare Fehler zu vermeiden. Ein Beispiel dafür ist die Parallelisierung der Anwendung HYDRA. Ein Data Race in der Anwendung führte erst bei der Skalierung zur vollen HPC Maschine zu spontanen Abstürzen. Der unerkannte Fehler hat die erfolgreiche Parallelisierung mit OpenMP um ein halbes Jahr verzögert.
Archer: Eine Lösung
Archer wird seit 2014 entwickelt, um diese Probleme zu erkennen. Es handelt sich um ein hochskalierbares und präzises Werkzeug zur Erkennung von Data Races in OpenMP-Programmen. Archer baut auf dem bestehenden Open-Source-Tool ThreadSanitizer (TSan) auf und erweitert dessen Fähigkeiten, um speziell auf die Anforderungen von OpenMP-Programmen einzugehen. Die vektorisierte Race-Checking Analyse bietet hohe Skalierbarkeit. Die dynamische Analyse führt zu einer hohen Genauigkeit und einer sehr niedrigen Falscherkennungsrate. Informationen zur Benutzung von Archer finden sich im.
Skalierbare Methoden zur Verfolgung von Happens-Before:
Das zentrale Kriterium für einen Data Race ist die fehlende Synchronisierung zwischen konkurrierenden Speicherzugriffen. Archer nutzt die Architektur von TSan, um eine effiziente Überprüfung von Data Races durchzuführen. Dies ermöglicht die Handhabung großer Produktionsprogramme in OpenMP.
Modulare Schnittstellen zu OpenMP-Runtimes:
Archer wurde so entwickelt, dass es modular in verschiedene OpenMP-Runtimes integriert werden kann. Dies wird durch die Einhaltung des „OpenMP Tools Interface“ Standards (OMPT) ermöglicht.
Zusammenarbeit mit aktiven Projekten:
Archer hat sich bereits in realen Anwendungen bewährt. Neben dem bereits erwähnten Problem in HYDRA, wurden Fehler in verschiedenen parallelen Anwendungen, während einer routinemäßigen Überprüfung im Rahmen eines POP Performance Audits, identifiziert und beseitigt.
Intel und die Entwicklung von Archer
Intel hat vor einigen Jahren begonnen, die eigene Compiler Architecture (Rechnerarchitektur) auf LLVM (Low-Level Virtual Machine) umzustellen. Als Ergebnis unterstützt
Um die Robustheit und Sicherheit der Anwendungen weiter zu erhöhen, sollen ab sofort die Sanitizer aus dem . Diese Tools helfen dabei, Speicherfehler, Data Races und andere Probleme in der Softwareentwicklung frühzeitig zu erkennen und zu beheben. Durch die Umstellung der Compiler Architecture sind diese Tools jetzt auch in den Intel Compilern der neuen Generation (z.B. icx) verfügbar.
Das IT Center ist seit Beginn führend an der Entwicklung von Archer beteiligt und arbeitet seit Jahren an der Integration und Verbesserung von TSan, um es den Anforderungen der modernen HPC-Umgebung anzupassen. Seit 2018 ist das Werkzeug fester Bestandteil des LLVM-Projekts und wird dort weiterentwickelt. Wir freuen uns, dass es durch die Integration in die Intel Compiler jetzt eine noch weitere Verbreitung findet.
Details zur Nutzung von Archer finden sich im HPC-Wiki.
Verantwortlich für die Inhalte dieses Beitrags sind Joachim Jenke, Simon Schwitanski, Malak Mostafa und Janin Iglauer.
Schreibe einen Kommentar