Hybride parallele Rechen- und HPC-Methoden im CMPS-Solver: Verteilter Speicher, gemeinsamer Speicher, hybride und GPU-basierte Datenverarbeitung
CFD-Solver (Computational Fluid Dynamics) helfen uns, komplexe Strömungsphänomene in der Ingenieurwissenschaft und der wissenschaftlichen Forschung zu verstehen und zu simulieren. Der CMPS-CFD-Solver bietet mit seinen physikbasierten Modellierungs- und Parallelrechneransätzen eine effektive Lösung in diesem Bereich.
Skalierbarkeitsherausforderungen in der CFD
CFD-Simulationen erfordern eine präzise räumliche und zeitliche Auflösung, was häufig einen erhöhten Bedarf an Rechenressourcen zur Folge hat. Die Fähigkeit eines Solvers, eine steigende Anzahl von Prozessoren effizient zu nutzen – hohe Skalierbarkeit – ist entscheidend für die Lösung komplexer Probleme. CMPS trägt diesem Bedarf durch seine Optimierung für Parallelisierungsstrategien und HPC-Umgebungen Rechnung.
Gebietszerlegung in CMPS
Paralleles Rechnen in CMPS
CMPS ist für die Kompatibilität mit verschiedenen Plattformen konzipiert, darunter aktuelle Supercomputer-Cluster, Desktop-Systeme, Shared-Memory-Systeme und Mehrkernarchitekturen. Es lässt sich zudem effektiv in Hochgeschwindigkeitsnetzwerke wie InfiniBand und Myrinet integrieren. Während der Entwicklung wurden sowohl Cluster-Systeme als auch Shared-Memory-Architekturen unterstützt.

Verteilte Architektur
Methoden für verteilten Speicher in CMPS
Die Kombination mehrerer CPU-Kerne in einem System mit gemeinsamem Speicher kann eine Herausforderung darstellen. Daher verwenden moderne Supercomputer eine Strategie mit verteiltem Speicher: Mehrere Computerknoten sind miteinander verbunden und über Hochgeschwindigkeitsnetzwerke vernetzt. In heutigen Supercomputern gilt Folgendes:
-
Jeder einzelne Computer wird als Knoten bezeichnet.
-
Jeder Knoten arbeitet unabhängig mit eigenem Speicher und ist von anderen Knoten isoliert.
-
Jeder Knotenpunkt verfügt über ein eigenes Betriebssystem.
-
Der Datenaustausch zwischen den Knoten erfolgt über ein Netzwerk.
Das Starten eines verteilten Solvers in CMPS ist unkompliziert. Benutzer können die Knotennamen einfach über die grafische Benutzeroberfläche eingeben. CMPS gleicht diese Knoten aus und überträgt automatisch die für die Berechnungen notwendigen Daten an jeden Knoten. Dieser Vorgang wird als Gebietszerlegung bezeichnet.
CMPS verwendet Algorithmen zur Gebietszerlegung und parallele Lösungsstrategien, um eine effiziente Berechnung zu gewährleisten.
Hybride parallele und Shared-Memory-Methoden in CMPS
Gemeinsam genutzte Speichersysteme ermöglichen es mehreren Prozessoren, einen gemeinsamen Speicherpool zu nutzen, was den Datenzugriff und die Kommunikation zwischen den Prozessoren beschleunigt. Allerdings können Mechanismen wie Sperren oder Barrieren erforderlich sein, um zu verhindern, dass Prozessoren auf dieselben Daten zugreifen oder diese ändern.

Lösungsalgorithmus
Methode des gemeinsamen Speichers
MPI-basierte Modelle benötigen im Vergleich zu Systemen mit gemeinsamem Speicher weniger Synchronisierung und reduzieren Fehler bei der Datenübertragung, wodurch sie eine zuverlässigere Lösung in komplexen Systemen bieten.
CMPS verfolgt einen hybriden Ansatz. Dieser Ansatz ermöglicht eine effektive Kommunikation innerhalb eines gemeinsamen Speichersystems und verbindet gleichzeitig physische Maschinen über Hochgeschwindigkeitsnetzwerke. Dadurch werden sowohl Skalierbarkeit als auch Leistungsverbesserungen gewährleistet.
MPI-Pufferoptimierung in CMPS
Bei der Kommunikation nicht-basischer Datentypen mit MPI müssen die Daten im Pufferspeicher zwischengespeichert werden, was eine zusätzliche Belastung für den empfangenden Knoten darstellt. CMPS optimiert diesen Prozess, indem es die Pufferspeicherzuweisungen persistent macht und wiederkehrende Operationen minimiert. Dies beschleunigt die Datenübertragung und verbessert die Gesamtleistung.
GPU-Computing
Die GPU-Berechnung (Grafikprozessoreinheit) wird im CMPS-Solver experimentell für bestimmte Matrixlöserprozesse und rechenintensive Operationen eingesetzt, ist aber in der ersten Version noch nicht verfügbar. Dank ihrer zahlreichen parallelen Kerne können GPUs rechenintensive Aufgaben schneller als CPUs ausführen. Durch die Nutzung von GPUs erreicht der CMPS-Solver Folgendes:
-
Reduzierung hoher Rechenlasten: Wiederkehrende Aufgaben wie Matrixmultiplikationen und lineare Algebraoperationen werden auf die GPU ausgelagert.
-
Leistungsverbesserungen: GPU-Computing reduziert die Gesamtverarbeitungszeiten erheblich.
-
Effiziente Parallelisierung: GPUs verarbeiten mehrere Threads gleichzeitig und bewältigen so Arbeitslasten effizienter.
Durch die GPU-Optimierung verkürzt CMPS die Rechenzeiten für großskalige Probleme und verbessert gleichzeitig die Energieeffizienz.
