toplogo
Sign In

Hochleistungsfähige, matrixfreie Finite-Elemente-Methoden auf hybriden Tetraedergittern: Codegenerierung und Leistungsoptimierung


Core Concepts
Dieser Artikel präsentiert einen Codegenerator, der auf Knotenebene optimierte, extrem skalierbare, matrixfreie Finite-Elemente-Operatoren auf hybriden Tetraedergittern erzeugt. Durch verschiedene Techniken wie Tabellierung, Verlagerung von Schleifenkonstanten und Vektorisierung über Elemente hinweg werden die lokale Auswertung von Bilinearformen und die Speicherzugriffsmuster erheblich verbessert, was zu einer deutlichen Leistungssteigerung führt.
Abstract
Der Artikel präsentiert einen Codegenerator, der auf Knotenebene optimierte, extrem skalierbare, matrixfreie Finite-Elemente-Operatoren auf hybriden Tetraedergittern erzeugt. Zunächst wird das Konzept der hybriden Tetraedergitter erläutert, das eine blockstrukturierte Partitionierung des Rechengebiets ermöglicht. Darauf aufbauend beschreibt der Artikel die Architektur des Codegenerators, der aus einer symbolischen Beschreibung der Differentialoperatoren und der Finite-Elemente-Räume effiziente matrixfreie Rechenkernel generiert. Ein Schwerpunkt liegt auf der Optimierung der matrixfreien Matrix-Vektor-Multiplikation. Dazu werden verschiedene Schleifen-Strategien analysiert, die die Lokalität des Speichers verbessern. Weitere Optimierungen umfassen die Identifikation von Schleifeninvarianten, Vektorisierung über Elemente hinweg, Tabellierung von Faktoren der Schwachen Form und weitere Techniken. Die Leistungsfähigkeit der generierten Operatoren wird anhand von drei Differentialoperatoren (-∆, -∇·(k(x) ∇), α(x) curl curl+β(x)) und verschiedenen Finite-Elemente-Räumen (lineare und quadratische Lagrange, erste Ordnung Nédélec) analysiert. Dabei erreichen die Operatoren eine Durchsatzrate von 1,3 bis 2,1 GDoF/s auf einem 36-Kern Intel Ice Lake Prozessor, was bis zu 62% der Spitzenleistung entspricht. Abschließend demonstriert der Artikel die Skalierbarkeit der generierten Operatoren, indem ein Curl-Curl-Problem mit über einer Billion (10^12) Freiheitsgraden auf 21.504 Prozessen in weniger als 50 Sekunden gelöst wird.
Stats
Die Simulation von Konvektion im Erdmantel mit einer globalen Auflösung von 1 km erfordert etwa eine Billion (10^12) Elemente. Unter der vereinfachenden Annahme, dass die zugrunde liegende Diskretisierung einen Freiheitsgrad pro Element und einen Operator mit einem 7-Punkt-Stern ergibt, ergibt sich ein Speicherbedarf von 56 TB für die Systemmatrix. Dieser Schätzwert ist extrem optimistisch, da die Anzahl der Freiheitsgrade und die Größe des Sterns in der Regel viel größer sind.
Quotes
"Erwartend einen Speicherbedarf eine Größenordnung höher als (1.1), wird das Speichern der Systemmatrix selbst auf den meisten der größten verfügbaren Supercomputer unerschwinglich." "Nicht nur wegen der Menge an Code, der entwickelt, gewartet und getestet werden muss, sondern auch weil Expertise aus sowohl numerischer Mathematik als auch Leistungstechnik entscheidend ist, um das volle Potenzial der zugrunde liegenden Hardware auszuschöpfen."

Deeper Inquiries

Wie können die Optimierungen, die in diesem Artikel für Finite-Elemente-Methoden auf hybriden Tetraedergittern vorgestellt wurden, auf andere Arten von Gittern und Diskretisierungen übertragen werden

Die Optimierungen, die in diesem Artikel für Finite-Elemente-Methoden auf hybriden Tetraedergittern vorgestellt wurden, können auf andere Arten von Gittern und Diskretisierungen übertragen werden, indem ähnliche Konzepte und Techniken angewendet werden. Zum Beispiel können Optimierungen wie die Identifizierung von Schleifeninvarianten, die Inter-Elementen-Vektorisierung, die Tabulation von Faktoren der schwachen Form und die Optimierung der Cache-Lokalität auf anderen Gitterstrukturen implementiert werden. Für strukturierte Gitter wie kartesische Gitter können ähnliche Optimierungen zur Verbesserung der Cache-Lokalität und zur Reduzierung von Redundanzen in der Berechnung angewendet werden. Die Verwendung von spezifischen Loop-Strategien, wie der Würfel-Loop-Strategie, kann auch auf anderen Gittertypen effektiv sein, um die Effizienz der Berechnungen zu steigern. Bei unstrukturierten Gittern können Optimierungen wie die automatische Identifizierung von Schleifeninvarianten und die Inter-Elementen-Vektorisierung dazu beitragen, die Leistung von matrixfreien Operatoren zu verbessern. Die Anpassung der Optimierungen an die spezifischen Anforderungen und Strukturen des jeweiligen Gitters ist entscheidend, um die bestmögliche Leistung zu erzielen.

Welche zusätzlichen Herausforderungen ergeben sich bei der Parallelisierung und Skalierung der generierten matrixfreien Operatoren über mehrere Knoten hinweg

Die Parallelisierung und Skalierung der generierten matrixfreien Operatoren über mehrere Knoten hinweg stellen zusätzliche Herausforderungen dar. Bei der Parallelisierung müssen Aspekte wie die effiziente Verteilung der Daten und die Minimierung von Kommunikationsüberkopf berücksichtigt werden. Die Skalierung über mehrere Knoten erfordert eine sorgfältige Optimierung der Kommunikation und eine effiziente Nutzung der Ressourcen jedes Knotens. Eine Herausforderung bei der Parallelisierung ist die Aufteilung der Arbeit auf die verschiedenen Knoten, um eine gleichmäßige Lastverteilung und eine effiziente Nutzung der Ressourcen sicherzustellen. Die Kommunikation zwischen den Knoten muss optimiert werden, um Engpässe zu vermeiden und die Skalierbarkeit zu verbessern. Die Skalierung der generierten Operatoren über mehrere Knoten erfordert auch die Berücksichtigung von Aspekten wie der Synchronisierung der Berechnungen, der effizienten Nutzung von Speicher und Cache sowie der Anpassung der Algorithmen an die Architektur des verteilten Systems. Die Implementierung von parallelen Algorithmen und die Optimierung der Kommunikation sind entscheidend für eine erfolgreiche Skalierung über mehrere Knoten hinweg.

Wie lassen sich die Erkenntnisse aus dieser Arbeit auf andere numerische Methoden wie Finite-Volumen- oder Spektral-Elemente-Verfahren übertragen

Die Erkenntnisse aus dieser Arbeit können auf andere numerische Methoden wie Finite-Volumen- oder Spektral-Elemente-Verfahren übertragen werden, indem ähnliche Optimierungen und Techniken angewendet werden. Die Optimierungen zur Verbesserung der Cache-Lokalität, zur Reduzierung von Redundanzen in der Berechnung und zur effizienten Parallelisierung können auf verschiedene numerische Methoden angewendet werden, um deren Leistung und Skalierbarkeit zu verbessern. Zum Beispiel können die Optimierungen zur Identifizierung von Schleifeninvarianten und zur Inter-Elementen-Vektorisierung auch auf Finite-Volumen-Methoden angewendet werden, um die Effizienz der Berechnungen zu steigern. Die Anpassung der Optimierungen an die spezifischen Anforderungen und Strukturen der jeweiligen numerischen Methode ist entscheidend, um optimale Ergebnisse zu erzielen. Darüber hinaus können die Erkenntnisse aus dieser Arbeit dazu beitragen, die Leistung und Skalierbarkeit von Spektral-Elementen-Verfahren durch die Anwendung von Optimierungen zur Verbesserung der Cache-Lokalität und zur effizienten Parallelisierung zu verbessern. Die Übertragung der in diesem Artikel vorgestellten Optimierungen auf andere numerische Methoden erfordert eine sorgfältige Anpassung an die spezifischen Anforderungen und Strukturen der jeweiligen Methode, um die bestmögliche Leistung zu erzielen.
0
visual_icon
generate_icon
translate_icon
scholar_search_icon
star