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.