Tandem Projektleitung | Mathias Krause |
NHR@KIT Projektleitung | Martin Frank |
Projektkoordination | René Caspart |
Team | SSPE |
Forschung | Adrian Kummerländer |
Open-Source-Software | OpenLB |
Einleitung
Lattice-Boltzmann-Methoden (LBM) sind ein bewährter mesoskopischer Ansatz für die Simulation einer Vielzahl von Transportphänomenen [1]. Sie eignen sich zwar hervorragend für HPC-Anwendungen, aber die Erzielung maximaler Leistung bei unterschiedlichen Zielen, Kollisionsmodellen und Randbedingungen ist ein aktives Forschungsthema.
Abbildung: Q-Kriterium einer turbulenten Düsenströmung, aufgelöst durch 2,5 Milliarden Zellen, verteilt auf 120 GPUs auf HoreKa
© Adrian Kummerländer
Projektbeschreibung
Das Hauptziel des Projekts ist es, die Nutzung von beliebiger heterogener Zielhardware im bestehenden OpenLB-Software-Framework [2] zu ermöglichen. Konkret wollen wir die Ausführung auf GPGPUs und SIMD-CPUs unterstützen. Zu den sekundären Zielen gehört die Weiterentwicklung der OpenLB-Architektur, um Unterstützung für adaptive Verfeinerung als modellbasierte Leistungsoptimierung einzubauen. Alle diese Ziele sollen auf nachhaltige Weise angegangen werden, um die Reproduzierbarkeit und Zuverlässigkeit von OpenLB als einem der wichtigsten Open-Source-LBM-Codes zu gewährleisten.
Als erster Schritt in diese Richtung wurde ein neuer Algorithmus zur Implementierung des LBM-Streaming-Schrittes mit sehr guter bandbreitenbezogener Leistung sowohl auf CPU- als auch auf GPU-Zielen entwickelt [3]. Dieses periodische Verschiebungsmuster (PS) wurde erzeugt, indem die implizite Ausbreitung als eine Transformation der Speicher-Bijektion betrachtet wurde. Virtuelle Speichermanipulation wird sowohl auf CPU- als auch auf GPU-Zielen verwendet, um diese Transformationen effizient zu implementieren. Basierend auf dieser Entwicklung wurde Anfang 2022 die erste Version von OpenLB mit Unterstützung für die Vektorisierung auf CPUs und GPGPUs veröffentlicht [4]. Seine Paralleleffizienz wurde in Skalierungstests auf bis zu 320 CPU- bzw. 128 GPU-beschleunigten Knoten des HoreKa-Supercomputers evaluiert [5]. Dabei wurden schwache Effizienzen von bis zu 1,01 und starke Effizienzen von bis zu 0,96 erzielt und bis zu 1,33 Billionen Zellaktualisierungen pro Sekunde auf Gitternetzen mit bis zu 18 Milliarden Zellen ermöglicht.
Literaturangaben
[1] M. J. Krause, A. Kummerländer, and S. Simonis. "Fluid Flow Simulation with Lattice Boltzmann Methods on High Performance Computers". NASA AMS Seminar Series. 2020.
[2] M. J. Krause, A. Kummerländer, S. J. Avis, H. Kusumaatmaja, D. Dapelo, F. Klemens, M. Gaedtke, N. Hafen, A. Mink, R. Trunk, J. E. Marquardt, M.-L. Maier, M. Haussmann, and S. Simonis. "OpenLB—Open source lattice Boltzmann code". In: Computers & Mathematics with Applications. 2021. doi: 10.1016/j.camwa.2020.04.033.
[3] A. Kummerländer, M. Dorn, M. Frank, and M. J. Krause. "Implicit Propagation of Directly Addressed Grids in Lattice Boltzmann Methods". In: Concurrency and Computation: Practice and Experience. 2022. doi: 10.1002/cpe.7509.
[4] A. Kummerländer, S. Avis, H. Kusumaatmaja, F. Bukreev, D. Dapelo, S. Großmann, N. Hafen, C. Holeksa, A. Husfeldt, J. Jeßberger, L. Kronberg, J. Marquardt, J. Mödl, J. Nguyen, T. Pertzel, S. Simonis, L. Springmann, N. Suntoyo, D. Teutscher, M. Zhong, and M.J. Krause. "OpenLB Release 1.5: Open Source Lattice Boltzmann Code". Version 1.5. 2022. doi: 10.5281/zenodo.6469606.
[5] A. Kummerländer, F. Bukreev, S. Berg, M. Dorn, and M.J. Krause. "Advances in Computational Process Engineering using Lattice Boltzmann Methods on High Performance Computers". In: High Performance Computing in Science and Engineering ’ 21.