Analyzing memory accesses for performance and correctness of parallel programs

  • Analyse von Speicherzugriffen für die Performance und Korrektheit von parallelen Programmen

Cramer, Tim; Müller, Matthias (Thesis advisor); Katoen, Joost-Pieter (Thesis advisor)

Aachen (2017)
Doktorarbeit

Dissertation, RWTH Aachen University, 2017

Kurzfassung

Der stetig wachsende Bedarf an Rechenleistung im wissenschaftlichen Umfeld hat im laufenden Jahrzehnt sowohl zu einer weiten Verbreitung als auch hohen Akzeptanz von hochparallelen Computerarchitekturen geführt. Dieser Trend ist auch in der TOP500-Liste der leistungsfähigsten Supercomputer der Welt manifestiert, in welcher über 40% der Gesamt-Performance aus Akzelerator-basierten Systemen resultiert. Die Programmierung dieser Systeme erforderte in der Vergangenheit häufig zeitaufwändige Anpassungen der rechenintensiven Programmteile, bevor produktivere Ansätze wie OpenACC oder die die Offloading-Direktiven in OpenMP aufkamen. Jedoch bleibt auch mit diesen nutzerfreundlicheren Ansätzen die Programmierung für heterogene Architekturen komplex und fehleranfällig und stellt viele Anforderungen an den Programmierer, der eine hohe Performance für seine Anwendung erreichen will. Eine Schlüsselrolle für das Verständnis der Performance und der Korrektheit eines parallelen Programms spiegelt sich in der Analyse der Speicherzugriffe wieder. Diese Arbeit verfolgt einen ganzheitlichen Ansatz unter Berücksichtigung der Hardware-Eigenschaften, des Programmierparadigmas, der zugrundeliegende Implementierung und der Schnittstelle für eine adäquate Tool-Unterstützung in Bezug auf beide Aspekte. Die Verbesserung der Performance und die Validierung einer Anwendung erfordert hierbei ein tiefgehendes Verständnis des dynamischen Laufzeitverhaltens. Hierbei ist das adäquate Platzieren der Daten und Threads essentiell für die Performance, und die Zugriffsreihenfolge essentiell für das deterministische Verhalten bzw. die Korrektheit einer Anwendung. Aus diesem Grund wird diese Arbeit zunächst eine systematische Methodik zur Bewertung von OpenMP Target-Devices, Muster für die effiziente Task-parallele Programmierung von Non-Uniform Memory Access (NUMA) Architekturen, sowie Verbesserungen für eine standardkonforme Tool-Unterstützung präsentieren. Basierend auf den gewonnenen Erkenntnissen, wird im Anschluss ein OpenMP Epochen-Modell für die Korrektheitsanalyse definiert, welches die Semantik inklusive des Laufzeit- und Speichermodells von OpenMP berücksichtigt. Die Evaluierung der entwickelten Konzepte erfolgt an Hand von relevanten Tools zur Performance- und Korrektheitsanalyse.

Identifikationsnummern