Parallelisierung gitterbasierter numerischer Methoden für Strömungsmechanik auf der GPU

Wir werden uns die vereinfachte Implementierung eines gitterbasierten Lösers für rechnergestützte Strömungsmechanik (Fluid Dynamics) ansehen. Der Beispielcode orientiert sich an der Literaturquelle "Fluid Simulation for Computer Graphics" von Robert Bridson. Probleme der Strömungsmechanik sind von essentieller Bedeutung bei der Analyse von Klimamodellen und technischen Anwendungen aus Luft- und Seefahrt. Computergestützte Löser für Fluiddynamik stellen oft hohe Leistungsanforderungen an vorhandene Hardware, da die partiellen Differentialgleichungen, welche als Grundlage der mathematischen Modelle von nicht komprimierbaren Flüssigkeiten dienen, in vielen Fällen nicht analytisch gelöst werden können. Um dennoch Aussagen über das Strömungsverhalten von Flüssigkeiten treffen zu können, greift man meist auf numerische Methoden zurück, mit denen sich die zugrundeliegenden physikalischen Phänomene oft präzise simulieren lassen. Wir werden, ausgehend von einfachen Beispielprogrammen, einen GPU-parallelen Löser implementieren und diesen sukzessiv um Advektion, variable Temperatur, variable Dichte usw. erweitern. Als Ausgangspunkt dient zunächst ein Vektorfeld, welches jedem Punkt im Raum eine Strömungsrichtung und Strömungsgeschwindigkeit zuordnet. Mithilfe einer sog. Diskretisierung wird das Vektorfeld schließlich in ein zweidimensionales Gitter zerlegt, in dem jede Gitterzelle eine Strömungsrichtung und Geschwindigkeit besitzt. Auf Basis dieses Gitters kann nun das Strömungsverhalten simuliert werden, indem schrittweise die Werte jeder Gitterzelle in Abhängigkeit der Werte aller benachbarten Gitterzellen aktualisiert werden. Die Herausforderung bei der Parallelisierung gitterbasierter Ansätze ist die Synchronisation der einzelnen Operationen, um Race Condition zu verhindern ohne die Performanz der Implementierung zu beeinträchtigen. Wir werden im Rahmen des Projektseminars unterschiedliche Ansätze zur Synchronisation von Berechnungen auf der GPU kennenlernen und in einer vergleichenden Evaluation gegenüberstellen. Wir werden weiterhin eine grafische Ausgabe der Ergebnisse erhalten, sodass wir die Korrektheit unserer Implementierung unmittelbar verifizieren können und den Einfluss der individuellen physikalischen Phänomene in Echtzeit betrachten können.
 

Verantwortlicher: Florian Fey (feyf@uni-muenster.de)
LearnWeb: https://sso.uni-muenster.de/LearnWeb/learnweb2/course/view.php?id=68465