Modular techniques and interfaces for data race detection in multi-paradigm parallel programming

  • Modulare Techniken und Schnittstellen zur Erkennung von Speicherzugriffsanomalien in der Parallelprogrammierung mit mehreren Paradigmen

Protze, Joachim; Müller, Matthias S. (Thesis advisor); Träff, Jesper L. (Thesis advisor); Schulz, Martin (Thesis advisor)

Aachen : Joachim Protze (2021)
Buch, Doktorarbeit

Dissertation, RWTH Aachen University, 2021

Kurzfassung

Der stetig wachsende Bedarf an Rechenleistung für wissenschaftliches Rechnen und Simulation hat zur Entwicklung heterogener Rechensysteme mit mehreren Ebenen von Parallelität geführt. Betrachtet man die aggregierte Rechenleistung der Top 500 Hochleistungsrechner (HPC Systeme), so kann man von 1993 bis 2013 einen mittleren jährlichen Zuwachs der Rechenleistung von etwa 85% ableiten. Durch das Mooresche Gesetz lässt sich lediglich eine Zuwachsrate von 40% bis 60% erklären. Das zusätzliche Wachstum der HPC Systeme kann durch die zunehmende Anzahl von Rechnerknoten erklärt werden, welche durch ein Verbindungsnetzwerk zum eigentlichen Hochleistungsrechner verbunden sind. Das message passing interface (MPI) hat sich im Hochleistungsrechnen als dominierendes paralleles Programmierparadigma für Rechnen auf verteiltem Speicher herausgestellt, welches auch die gröbste Ebene der Parallelität darstellt. Während im vorherigen Jahrhundert der durch Gordon Moore formulierte Zuwachs überwiegend in steigende Taktraten umgesetzt wurde, sehen wir seit dem Beginn des neuen Jahrhunderts eine Zunahme der Rechenkerne pro Prozessorsockel. Die Rechenkerne eines Sockels beziehungsweise eines Rechenknotens können auf gemeinsamen, geteilten Speicher zugreifen. Wärend MPI auch zum parallelen Programmieren auf geteiltem Speicher eingesetzt wird, kann explizite Nutzung von geteiltem Speicher, wie etwa mit OpenMP, die Skalierbarkeit einer Anwendung verbessern. Die kombinierte Nutzung von MPI und OpenMP ist daher im Hochleistungsrechnen regelmäßig anzutreffen. Speicherzugriffsanomalien wie Dataraces gehören zu der größten Herausforderung im parallelen Programmieren. An Techniken zur Erkennung von Dataraces wird seit Jahrzehnten gearbeitet; sowohl statische wie dynamische Werkzeuge wurden entwickelt. In dieser Arbeit geht es nicht darum, komplett neue Analyseverfahren zu entwickeln, sondern existierende Analyseverfahren, welche überwiegend auf niedriger Abstraktionebene arbeiten, für die hohe Abstraktionsebene der parallelen Programmiersprachen verfügbar zu machen. Dazu entwickelt und präsentiert diese Arbeit einen Analyseworkflow, mit dem Speicherzugriffsanomalien in hybrid parallelen Anwendungen gefunden werden können. Als Grundlage trägt diese Arbeit parallele Varianten von Speicherzugriffsanomalien zusammen, wie sie aus dem sequenziellen Programmieren bekannt sind, identifiziert aber die spezifischen Fehlermuster für Programmieren mit verteiltem und gemeinsamem Speicher. Die Arbeit identifiziert weiterhin die Synchronisierungs-, Nebenläufigkeits- und Speicherzugriffssemantiken, die von den Standards der höheren parallelen Programmierparadigmen explizit und implizit vorgegeben sind, um diese auf die Analyse abzubilden. Als besondere Herausforderung bei der Abbildung von hoher Sprachabstraktion auf niedrige Analyseabstraktion erweist sich die Abbildung der Nebenläufigkeit. Diese Arbeit erweitert die Analyse auf Basis von Vektoruhren um die Möglichkeit Nebenläufigkeit innerhalb einer Ausführungseinheit abzubilden. Dieser Ansatz wird in der Auswertung mit einem alternativen Ansatz verglichen. Eine Kombination der beiden Ansätze deckt den allgemeinen Fall eines unbekannten Anwendungsverhaltens am besten ab.

Identifikationsnummern

Downloads