High-Performance Solvers for Partial-Differential-Equations using a Code Generation Approach

  • Dienstag, 11. November 2025, 11:15 Uhr
  • Mathematikon, Raum 1/414
    • René Heß
  • Adresse

    INF205 Mathematikon, Raum 1/414

  • Veranstaltungstyp

In dieser Arbeit nutzen wir Codegenerierung, um effiziente matrixfreie Löser und Vorkonditionierer für numerische Simulationen von partiellen Differentialgleichungen (PDEs) auf Basis von diskontinuierlichen Galerkin-Methoden (DG) zu entwickeln.

Die herkömmliche Vorgehensweise zur Lösung von PDEs nach der Linearisierung besteht darin, ein lineares Gleichungssystem aufzustellen und mithilfe von iterativen oder direkten Verfahren zu lösen.
Ein Nachteil dieses Ansatzes ist, dass die Anzahl der ausgeführten Gleitkommaoperationen, die pro geladenem Byte ausgeführt werden, nicht ausreicht, um moderne CPUs auszulasten.
Infolgedessen befinden sich die CPUs häufig im Leerlauf und warten auf weitere Daten.
Dadurch ist das Lösen des linearen Gleichungssystems in erster Linie durch die verfügbare Speicherbandbreite beschränkt und es kann nicht das volle Potenzial moderner CPUs ausgeschöpft werden.
  Matrixfreie Löser überwinden diese Einschränkung, indem sie die Systemmatrix nicht aufstellen und stattdessen die nötigen Berechnungen zum Lösen des Gleichungssystems ad hoc ausführen.

Eine der großen Herausforderungen matrixfreier Löser ist die Entwicklung effizienter und robuster Vorkonditionierer.
In dieser Arbeit nutzen wir DG-Methoden für die Diskretisierung und verwenden matrixfreie Krylov-Löser mit matrixfreien Glättern hoher Ordnung und einem Unterraumkorrekturverfahren niedriger Ordnung mit algebraischem Mehrgitterverfahren.
Dies ist ein robuster Vorkonditionierer, der für die Lösung komplexer Probleme mit variierenden Koeffizienten geeignet ist und es vermeidet, die Systemmatrix des DG-Raums hoher Ordnung aufzustellen.
Eine leistungsstarke Implementierung dieser Löser und Vorkonditionierer erfordert das Schreiben mehrerer lokaler Integrationskerne, die von der zu lösenden PDE abhängen.

Im Mittelpunkt dieser Arbeit steht die Verwendung eines Codegenerierungsansatzes, um hochleistungsfähige Implementierungen der lokalen Integrationskerne zu erzeugen.
Dabei werden alle nötigen Integrationskerne aus einer einzigen Beschreibung der PDE in einer domänenspezifischen Sprache generiert, was diesen Ansatz flexibel auf verschiedene PDE-Probleme anwendbar macht.
Der Fokus liegt dabei auf effizienten Implementierungen für strukturierte Gitter.
Insbesondere kommt in den lokalen Integrationskernen SIMD-Vektorisierung zum Einsatz, und es wird eine Technik namens Summenfaktorisierung genutzt, um Tensorproduktstrukturen effizient zu nutzen.

In einer detaillierten Roofline-Analyse zeigen wir, dass dieser Ansatz eine gute CPU-Auslastung erreichen kann.
Zudem identifizieren wir weitere Möglichkeiten für Leistungsoptimierungen.