toplogo
Sign In

Automatisierte MPI-Codegenerierung für skalierbare Finite-Differenzen-Löser


Core Concepts
Dieser Artikel stellt automatisierte Techniken zur Codegenerierung für verteilten Speicherparallelismus (DMP) vor, um explizite Finite-Differenzen-Stencils in großem Maßstab zu lösen, eine grundlegende Herausforderung in zahlreichen wissenschaftlichen Anwendungen.
Abstract
Dieser Artikel präsentiert einen neuartigen End-to-End-Softwarestack, der die MPI-Codegenerierung aus einer hochabstrakten symbolischen Spezifikation innerhalb des Devito-Compilers automatisiert und abstrahiert. Die Schlüsselbeiträge umfassen: Nahtlose Integration von DMP über MPI, gekoppelt mit OpenMP-Shared-Memory-Parallelismus und SIMD-Vektorisierung, Cache-Blocking-Optimierungen, flop-reduzierende arithmetische Optimierungen und verschiedene andere Leistungsoptimierungen. Unterstützung für mehrere DMP-Berechnungs- und Kommunikationsmuster, um die Leistung für Kernel mit unterschiedlichen Berechnungs- und Kommunikationsanforderungen zu verbessern. Unterstützung für Operationen über Stencils hinaus, wie lokale/sparse-Operationen, die auf eine einzelne Domäne beschränkt sind. Umfassende Leistungsbewertung von vier konventionellen Wellenausbreitungsstencil-Kerneln mit unterschiedlichen Speicher- und Berechnungscharakteristiken auf dem Archer2-Supercomputer, skalierend bis zu 16.384 CPU-Kernen.
Stats
Die Lösung skaliert auf dem Archer2-Supercomputer mit bis zu 16.384 CPU-Kernen.
Quotes
"Dieser Artikel stellt automatisierte Techniken zur Codegenerierung für verteilten Speicherparallelismus (DMP) vor, um explizite Finite-Differenzen-Stencils in großem Maßstab zu lösen, eine grundlegende Herausforderung in zahlreichen wissenschaftlichen Anwendungen." "Devito kann HPC-Code für verschiedene Architekturen generieren, dank seines abstrahierten Compilers, was eine beschleunigte Entwicklung ermöglicht."

Deeper Inquiries

Wie könnte eine automatisierte Tuning-Lösung aussehen, um das beste MPI-Muster ohne manuelle Exploration aller Optionen auszuwählen?

Eine automatisierte Tuning-Lösung könnte auf maschinellem Lernen basieren, um verschiedene MPI-Muster zu bewerten und das optimale Muster für eine bestimmte Anwendung zu identifizieren. Dies könnte durch die Implementierung eines Algorithmus erfolgen, der die Leistungsmetriken der verschiedenen Muster analysiert und basierend auf historischen Daten oder Simulationen Vorhersagen darüber trifft, welches Muster am besten geeignet ist. Durch kontinuierliches Lernen und Anpassen an neue Daten könnte das System seine Empfehlungen im Laufe der Zeit verbessern.

Welche Möglichkeiten gibt es, die Leistung der "remainder"-Berechnungen in der "full"-Kommunikations-/Berechnungsüberlappung weiter zu verbessern?

Um die Leistung der "remainder"-Berechnungen in der "full"-Kommunikations-/Berechnungsüberlappung zu verbessern, könnten verschiedene Ansätze verfolgt werden. Eine Möglichkeit wäre die Implementierung von effizienteren Datenlayout-Transformationen, um die Berechnung der "remainder"-Bereiche zu optimieren. Durch die Anpassung der Datenstruktur und -zugriffsmuster könnte die Effizienz der Berechnungen in diesen Bereichen verbessert werden. Darüber hinaus könnten fortgeschrittene MPI-Muster in Betracht gezogen werden, die von erweiterten Cache-Blocking-Optimierungen profitieren, wie z.B. zeitliches Blocken, um die Kommunikation und Berechnung weiter zu optimieren.

Wie könnte die Unterstützung für GPU-Beschleunigung in Devito weiter ausgebaut werden, um eine ähnlich nahtlose Erfahrung wie für CPU-Ausführung zu bieten?

Um die Unterstützung für GPU-Beschleunigung in Devito weiter auszubauen und eine ähnlich nahtlose Erfahrung wie für die CPU-Ausführung zu bieten, könnten mehr automatisierte Optimierungen und Anpassungen für GPU-Architekturen implementiert werden. Dies könnte die Integration von spezifischen GPU-Optimierungen und -Funktionen umfassen, um die Leistung auf GPU-Hardware zu maximieren. Darüber hinaus könnte die Entwicklung von benutzerfreundlichen Schnittstellen und Tools für die GPU-Programmierung die Nutzung von GPU-Beschleunigung in Devito erleichtern und eine reibungslose Erfahrung für die Benutzer gewährleisten.
0
visual_icon
generate_icon
translate_icon
scholar_search_icon
star