Motivation
Die numerische Simulation ist eine Schlüsseltechnologie für die Forschung oder industrielle Entwicklung. Beispiele hierfür sind die Klimaprognose, der Katastrophenschutz, die Energieversorgung oder der Fahrzeugbau. Zunehmend gewinnen simulationsbasierte Risikoabschätzungen an gesellschaftlicher und wirtschaftlicher Bedeutung, sodass daraus auch ökonomische und politische Entscheidungen abgeleitet werden. Für solche Simulationen stellt die Hardwareentwicklung eine große Herausforderung dar. In einem Hochleistungssystem steigt tendenziell die Anzahl der Prozessorkerne und auch Grafikprozessoren gewinnen für die Simulation zunehmend an Bedeutung. Die Zeit für die Berechnung einer Simulation hängt nicht nur von der Anzahl und Leistung der Prozessoren ab. Entscheidend für die Leistung ist insbesondere auch das verwendete mathematische Verfahren und wie gut dieses zur verwendeten Hardware passt, d. h. wie gut Prozessoren und Speicherhierarchien ausgenutzt werden können.
Ziele und Vorgehen
Für jede neue Simulationsaufgabe und jede neue Hardwarevariante sind daher spezifische Optimierungen vorzunehmen. Diese Änderungen erfordern mathematisches, algorithmisches, technisches Expertenwissen und nach derzeitigem Stand der Technik aufwändige und teure manuelle Code-Anpassungen. Das HPC²SE Projekt entwickelt einen neuartigen Metaprogrammieransatz, um die Nutzung moderner und zukünftiger heterogener HPC-Systeme für eine breite Klasse von Simulationen einfacher und effizienter zu gestalten. Die Wahl und Implementierung der Optimierungen soll dadurch für Anwender signifikant erleichtert werden.
Innovationen und Perspektiven
Konkret wird das Projekt dem Anwender eine domain-spezifische Sprache (DSL) zur Verfügung stellen, welche es erlaubt das mathematische Modell direkt zu beschreiben. Diese Eingabe wird in eine algebraische Zwischenrepräsentation übersetzt, welche weitreichende mathematische und algorithmische Optimierungen ermöglicht. Eine effiziente Codegenerierung für verschiedene moderne Hardwarearchitekturen wird durch einen speziell erweiterten C++ Compiler realisiert. Die zu entwickelnden Tools werden die Open-Source Simulations-Frameworks DUNE und waLBerla unterstützen und selbst ebenfalls als Open-Source bereit gestellt. Damit stehen sie einer breiten Community aus Forschung und Industrie zur Verfügung.