OpenLB - Ein Open-Source-Hochleistungs-Lattice-Boltzmann-Code für heterogene CPU-GPU-Cluster

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.

© Adrian Kummerländer

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.