KERNCRAFT: Automatisierte Leistungsmodellierung für numerische Rechenkerne

Moderne Hardware, so schnell sie auch erscheint, hat ihre Grenzen. Gerade im Höchstleistungsrechnen ist es besonders wichtig, diese bestmöglich auszureizen, um vorhandene Ressourcen effizient zu nutzen und nicht Strom und Rechenzeit zu verschwenden. Das Softwarewerkzeug „Kerncraft“ ist ein weiterer von der HPC-Gruppe des RRZE entwickelter Baustein zur Unterstützung der Anwendungsentwickler bei der Leistungsoptimierung. (BI95, JH)

Kerncraft erlaubt die Analyse von Code-Schleifen, um Optimierungsbedarf und -potenzial abzuschätzen. Die theoretische Grundlage dafür bilden analytische Performancemodelle wie das bekannte Roofline-Modell oder das von der HPC-Gruppe entwickelte Execution-Cache-Memory (ECM) -Modell. Solche Modelle beschreiben die Wechselwirkung zwischen Softwareanforderungen und Hardwarefähigkeiten, Code und Rechnerarchitektur. Dazu betrachtet Kerncraft zunächst die Instruktionen, die von der Hardware ausgeführt werden und schätzt deren Laufzeit pro Schleifen-Iteration ohne Berücksichtigung von Datenbewegungen ab. Dies geschieht mithilfe von Werkzeugen wie IACA für Intel-Prozessoren oder dem am RRZE entwickelten OSACA für Intel-, AMD- und ARM-CPUs. Als Folge der Code-Ausführung werden Daten durch die Speicherhierarchie bewegt, wofür Kerncraft durch statische Code-Analyse ebenfalls ein Modell konstruiert. Daraus lässt sich die Nutzung der Zwischenspeicher abschätzen und zusammen mit vorliegendem Wissen über die Hardware die Dauer von Speicherzugriffen vorhersagen. Aus diesen Daten kann das Tool dann eine Vorhersage über die Laufzeit der Schleife treffen, wenn sie von einem Rechenkern ausgeführt wird. Basierend auf diesem Wert wird dann auch noch die Beschleunigung für eine parallele Version abgeschätzt, wobei Flaschenhälse wie die beschränkte Speicherbandbreite berücksichtigt werden. Obwohl moderne Prozessoren sehr komplex sind, ist es überraschend, mit welcher Genauigkeit die recht einfachen Modelle, mit denen Kerncraft arbeitet, Laufzeiten vorhersagen können.

Durch Messungen lässt sich das Ergebnis validieren und dann daraus der Optimierungsbedarf ableiten: Ist die Anwendung durch den Instruktionsdurchsatz beschränkt, könnte Vektorisierung, eine bessere Instruktionsauswahl oder das Speichern von Zwischenergebnissen eine Leistungssteigerung bringen. Ist die Anwendung durch den Durchsatz der Speicherzugriffe beschränkt, müssen schnellere Zwischenspeicher besser genutzt werden oder Zugriffe zu Gunsten von Neuberechnungen ersetzt werden.

Kerncraft wird im Rahmen des vom BMBF geförderten Projekts „Metacca – Meta-programming for Accelerators“ mit dem Ziel weiterentwickelt, sowohl die unterstützten Architekturen zu erweitern als auch eine Schnittstelle zur „Low-Level Virtual Machine“ (LLVM)-Infrastruktur zu schaffen, die modernen Compilern zugrunde liegt. Zum Konsortium gehören neben der Friedrich-Alexander-Universität Erlangen-Nürnberg die Universität des Saarlandes, die Universität Mainz und das Deutsche Forschungszentrum für Künstliche Intelligenz.

Weitere Informationen

Modellierungswerkzeug Kerncraft
github.com/RRZE-HPC/kerncraft