GaspiLS – Skalierbarer Löser für CFD- und FEM-Simulationen

GaspiLS ist eine skalierbare lineare Löser-Bibliothek in Zeiten von Exascale-Computing und hat sich in der Industrie bewährt. Viele Simulationen im Ingenieurbereich basieren auf CFD- und FEM-Methoden, zum Beispiel die Bestimmung aerodynamischer Eigenschaften von Flugzeugen oder die Analyse der Gebäudestatik. Ein Großteil der Rechenzeit wird dabei für die Lösung der zugrundeliegenden Gleichungen durch iterative Verfahren benötigt. Die Leistung der benutzten iterativen Löser hat damit einen großen Einfluss auf die Gesamtlaufzeit solcher Simulationen. Um schneller Erkenntnisse aus den Simulationen zu gewinnen, haben wir die lineare Löser-Bibliothek GaspiLS entwickelt.

 

Industrie setzt auf GaspiLS aufgrund besserer Skalierbarkeit

Skalierbarkeit gilt bei einer Implementierung als ein Maß für die parallele Effizienz. Das Optimum ist die sogenannte lineare Skalierbarkeit. Dies entspricht der vollständigen Ausnutzung von Rechenressourcen, also den Kernen innerhalb einer oder mehrerer über ein Netzwerk miteinander verbundener CPUs. Eine verbesserte Skalierbarkeit ermöglicht mehr Rechenkapazität und das führt zur schnelleren Lösung eines Problems.

Das heißt in der Umsetzung ergeben sich folgende Vorteile:

  • detailliertere Modelle
  • genauere Parameter-Studien
  • kosteneffiziente Ausnutzung der Hardware-Ressourcen

Diese Aspekte machen GaspiLS besonders interessant für die Industrie.

Optimale Nutzung gegebener Rechenressourcen

Um gute Skalierbarkeit zu erreichen, nutzt GaspiLS die von uns entwickelten Methoden und Werkzeuge zur parallelen Programmierung. Dazu gehören die Kommunikationsbibliothek GPI-2 und deren zugrundeliegendes Programmiermodell. Der Algorithmus wird feingranular in Teilprobleme (sogenannte Tasks) mit gegenseitigen Abhängigkeiten aufgeteilt. Dies erlaubt zu jedem Zeitpunkt die Zuweisung ausführbarer Tasks auf freie Rechenressourcen und garantiert damit einen kontinuierlichen Strom an Rechenaufgaben für jede CPU.

Wir verzichten dabei auf globale Synchronisierungspunkte und können deshalb und aufgrund der großen Menge an erzeugten Teilproblemen die durch den Austausch von Daten entstehenden Latenzzeiten und Unausgewogenheiten in der Rechenzeit ausgleichen. Jeder einzelne Kern wird zu jedem Zeitpunkt maximal ausgelastet.

Berechnung der Druckkorrektur
© Fraunhofer ITWM
Berechnung der Druckkorrektur in der PISO-Methode: Mit GaspiLS (grün und blau) wurden Performanz und Skalierbarkeit entscheidend verbessert gegenüber der MPI-basierten Implementierung (orange).

Vorkonditionierer

Vorkonditionierer sind dazu ausgelegt, die Konvergenz von iterativen Krylov-Unterraum-Verfahren zu verbessern. Sie reduzieren die Anzahl der benötigten Iterationen oder ermöglichen gar erst die Lösung eines gegebenen Problems. Vorkonditionierer sind daher für GaspiLS, neben der absoluten Performanz und der Skalierbarkeit der zur Verfügung gestellten Löser, eine zentrale Komponente, um dünnbesetzte lineare Gleichungssysteme effizient lösen zu können.

GaspiLS stellt nun zwei unterschiedliche Klassen von Black-Box-Vorkonditionieren zur Verfügung. Zum einen ein algebraisches Mehrgitter-Verfahren (AMG) für symmetrisch positiv definite Probleme, wie sie zum Beispiel in CFD-Anwendungen vorkommen, und zum anderen Multi-Level-ILU-Zerlegungen für allgemeine Probleme. Beide Implementierungen benutzen ein skalierbares, effizientes und hybrid
paralleles Gaspi-basiertes Programmiermodell.

AMG hat als Mehrgitter-Verfahren eine lineare numerische Komplexität. Dies ist optimal und kann für symmetrisch positiv definite Probleme angewandt werden. Es wird eine Hierarchie an Operatoren direkt aus der Matrix konstruiert, ohne dass dafür explizite Kenntnis der zugrundeliegenden Geometrie oder der partiellen Differential-Gleichung notwendig ist.

Multi-Level-ILU wird weithin aufgrund seiner Robustheit, Genauigkeit und Nutzbarkeit als Black-Box-Vorkonditionierer für allgemeine dünn-besetzte Gleichungssysteme benutzt. ILU besteht im Wesentlichen aus einem Gauss-Eliminations-Verfahren, bei dem minder wichtige Beiträge verworfen werden können. In Abhängigkeit der verwendeten Parameter und der zur Verfügung stehenden Resourcen, kann man mit dem Multi-Level-ILU-Verfahren zwischen einer vollständigen Gauss-Elimination (exakte Inverse, hohe Ressourcen-Anforderung) und einem einfachen Jacobi-Vorkonditionierer (geringe Ressourcen-Anforderung, geringe Approximations-Genauigkeit) interpolieren. Unsere Implementierung erlaubt das permutieren von Zeilen/Spalten während der Faktorisierung, was in vielen Fällen eine notwendige Bedingung zur Lösung schlecht konditionierter Matrizen ist.

GaspiCxx für mehr Produktivität

Innerhalb von GaspiLS wurde die Implementierung für die explizite Verwaltung von Kommunikations-Resourcen für den GPI-2-Datenaustausch abstrahiert und mit GaspiCxx auch für andere Anwendungen zur Verfügung gestellt. GaspiCxx definiert eine einfach zu nutzende C++- Schnittstelle. Die Verwaltung von GPI-2-Kommunikations-Ressourcen wird hierbei ohne Einschränkung der zugrundeliegenden Leistungsfähigkeit komplett von GaspiCxx übernommen. Die Anwendung muss sich nicht mehr darum kümmern. Damit fällt ein Großteil der normalerweise notwendigen Implementierungsarbeiten bei der Entwicklung von GPI-2-Applikationen weg. Die Entwicklung von GPI-2-Applikationen und das Ausnutzen der damit einhergehenden Vorteile – wie die gute Skalierbarkeit – war noch nie so einfach.