A framework for the vectorization of molecular dynamics kernels

  • Ein System zur Vektorisierung von Molekulardynamic-Routinen

Höhnerbach, Markus; Bientinesi, Paolo (Thesis advisor); Naumann, Uwe (Thesis advisor); Kelly, Paul (Thesis advisor)

Aachen : RWTH Aachen University (2020, 2021)
Doktorarbeit

Dissertation, RWTH Aachen University, 2020

Kurzfassung

Diese Dissertation präsentiert eine domänenspezifische Sprache (DSL) für Mehrkörper-Potentiale, welche bei Molekulardynamik-Simulationen in den Materialwissenschaften verwendet werden. Dabei stellen wir auch einen Übersetzer vor, der die DSL in performanten Programmcode umsetzt, der für moderne Hochleistungsrechner geeignet ist. Wir beginnen, indem wir Möglichkeiten der Optimierung von Potentialen auf Hochleistungsrechnern in zwei Fällen untersuchen: Dem Tersoff und dem AIREBO Potential. In beiden Fällen finden wir eine Reihe von Optimierungen, sowohl MD-bezogen als auch allgemein verwendbar, die letztlich zu einem bis zu 5x schnelleren Programm führen; wir entwickeln auch eine Methode, damit der optimierte Code auf verschiedensten Rechnerarchitekturen lauffähig ist. Während der Behandlung des AIREBO Potentials finden wir Fehler im existierenden Programmcode. Diese Erfahrung motiviert, dass der fehleranfälligste Schritt bei der Erstellung einer Potential-Implementierung, die Ableitung, von unserem Übersetzer automatisch durchgeführt wird. Nachdem wir lohnenswerte Optimiersungsmethoden identifiziert haben, entwerfen wir einen „Potential-Compiler“, kurz PotC, der aus Spezifikationen (geschrieben in unserer DSL), voll funktionsfähige portable Implementierungen generiert. Der DSL-Code ist dabei deutlich kürzer als manuell geschriebener Code (20x bis 30x) und reduziert somit sowohl die manuell zu verrichtenden Arbeit wie auch die Möglichkeiten, Fehler beim Programmieren zu machen. Wir präsentieren Messungen der Leistungsfähigkeit für fünf verschiedene Rechnerarchitekturen: Drei CPUs (Broadwell, Knights Landing und Skylake) und zwei GPUs (Pascal und Volta). Einerseits ist die Leistung des generierten Codes in manchen Fällen deutlich niedriger als der handgeschriebenen Referenz, andererseits gibt es auch Fälle in denen generierte Implementierungen handgeschriebenen ebenbürtig oder gar schneller sind. In diesen Fällen messen wir bis zu 9x schnellere Simulationen verglichen mit einer nicht-vektorisierten Implementierung.

Identifikationsnummern

Downloads