Architecture Specific Generation of Large Scale Lattice Boltzmann Methods for Sparse Complex Geometries
Philipp Suffa, Markus Holzer, Harald Köstler, Ulrich Rüde
TL;DR
The paper tackles the high memory and performance cost of LBM on sparse geometries by introducing an indirect-addressing, sparse data structure (PDF-list and index-list) integrated with a code-generation pipeline (lbmpy) and the waLBerla framework. It demonstrates that sparse LBM kernels, generation of diverse stencils and collision models, and optimizations like in-place AA streaming and communication hiding yield substantial memory savings and strong scalability on CPU and GPU HPC systems, including 1024 NVIDIA A100 GPUs and 4096 AMD MI250X GPUs. The authors validate the approach with three realistic applications—porous media flow, flow over a particle bed, and coronary artery flow—showing speed-ups up to ~11× in kernel-only runs and memory reductions up to ~75%, while also addressing load-balancing challenges in heterogeneous blocks and at scale. The work presents a practical path to large-scale, sparse-domain CFD simulations on modern HPC architectures and highlights future opportunities in broader hardware support and architecture-specific optimizations.
Abstract
We implement and analyse a sparse / indirect-addressing data structure for the Lattice Boltzmann Method to support efficient compute kernels for fluid dynamics problems with a high number of non-fluid nodes in the domain, such as in porous media flows. The data structure is integrated into a code generation pipeline to enable sparse Lattice Boltzmann Methods with a variety of stencils and collision operators and to generate efficient code for kernels for CPU as well as for AMD and NVIDIA accelerator cards. We optimize these sparse kernels with an in-place streaming pattern to save memory accesses and memory consumption and we implement a communication hiding technique to prove scalability. We present single GPU performance results with up to 99% of maximal bandwidth utilization. We integrate the optimized generated kernels in the high performance framework WALBERLA and achieve a scaling efficiency of at least 82% on up to 1024 NVIDIA A100 GPUs and up to 4096 AMD MI250X GPUs on modern HPC systems. Further, we set up three different applications to test the sparse data structure for realistic demonstrator problems. We show performance results for flow through porous media, free flow over a particle bed, and blood flow in a coronary artery. We achieve a maximal performance speed-up of 2 and a significantly reduced memory consumption by up to 75% with the sparse / indirect-addressing data structure compared to the direct-addressing data structure for these applications.
