Real-time visualized and GPU-accelerated lattice Boltzmann simulations

Thumbnail Image

Date

2025

Journal Title

Journal ISSN

Volume Title

Publisher

Abstract

In a preceding project, four lattice Boltzmann algorithms were implemented on the CPU using HPX. Building up on this project, the goal of this work is to implement the two most suitable algorithms on the GPU together with a framework permitting real-time visualization. In the propaedeuticum, fundamental concepts of GPU programming are elaborated, and based on the insights gained, the aptitude of the four algorithms from the project for a portation to the GPU is investigated. The two-lattice and the swap algorithm were identified as the most promising candidates. The visualization framework was designed using the Dear ImGui and ImPlot APIs. In the bachelor thesis, the swap algorithm and multiple variants of the two-lattice algorithm were realized using AdaptiveCpp, which is one of two major implementations of the SYCL standard. Kármán vortex streets were chosen as a scenario demonstrating the capabilities of the proposed simulations. Since all algorithms update the lattice faster than the frontend can accept new frames, all of them are suitable for fulfilling the objective under the limitations imposed by the visualization framework. Similarly to the project, a simple and mostly runtime-coordinated two-lattice variant was recognized as the most convenient and, at the same time, very competitive implementation. Out of the data layouts proposed by Mattila et al., the bundle layout is well suited for devices with small caches, while the stream layout uses the memory bandwidth more efficiently. The optimal work group size and subdomain shape also depend on the targeted hardware.


In einem vorangegangenen Projekt wurden vier Lattice-Boltzmann-Algorithmen auf der CPU mit HPX implementiert. Darauf aufbauend ist es das Ziel dieser Arbeit, die zwei am besten geeigneten Algorithmen zusammen mit einem Framework für Visualisierung in Echtzeit auf der GPU zu implementieren. Im Propaedeuticum werden fundamentale Konzepte der Programmierung auf einer GPU herausgearbeitet. Basierend auf den dort gewonnenen Erkenntnissen wird die grundsätzliche Eignung der vier Algorithmen aus der Projektarbeit für eine Portierung auf die GPU untersucht. Der Two-Lattice- und der Swap-Algorithmus wurden als die aussichtsreichsten Kanditaten identifiziert. Das Framework zur Visualisierung wurde mit den APIs Dear ImGui und ImPlot entworfen. In der Bachelorarbeit wurden anschließend der Swap-Algorithmus und mehrere Varianten des Two-Lattice-Algorithmus mit AdaptiveCpp realisiert. Hierbei handelt es sich um eine von zwei weitverbreiteten Implementierungen des SYCL-Standards. Kármánsche Wirbelstraßen wurden als ein passendes Szenario gewählt, um die Fähigkeiten der vorgestellten Simulationen zu demonstrieren. Da alle Algorithmen das Gitter schneller aktualisieren als das Frontend neue Bilder annehmen kann, sind sie alle im Rahmen gewisser Limitierungen durch das Visualisierungs-Framework zur Erfüllung der Zielsetzung geeignet. Ähnlich wie in der Projektarbeit stellte sich eine einfache und hauptsächlich durch das Runtime-System verwaltete Two-Lattice-Variante als die praktischste und gleichzeitig sehr leistungsfähige Option heraus. Von den von Mattila et al. vorgeschlagenen Datenlayouts eignet sich das Bundle-Layout am besten für GPUs mit kleinen Caches, wohingegen das Stream-Layout die verfügbare Speicherbandbreite besonders gut nutzt. Die optimale Größe einer Work Group und die ideale Form der Subdomänen hängen von der verwendeten Hardware ab.

Description

Keywords

Citation

Endorsement

Review

Supplemented By

Referenced By