Cross-platform programming model for many-core lattice Boltzmann simulations
arXiv:2010.11751 · doi:10.1371/journal.pone.0250306
Abstract
We present a novel, hardware-agnostic implementation strategy for lattice Boltzmann (LB) simulations, which yields massive performance on homogeneous and heterogeneous many-core platforms. Based solely on C++17 Parallel Algorithms, our approach does not rely on any language extensions, external libraries, vendor-specific code annotations, or pre-compilation steps. Thanks in particular to a recently proposed GPU back-end to C++17 Parallel Algorithms, it is shown that a single code can compile and reach state-of-the-art performance on both many-core CPU and GPU environments for the solution of a given non trivial fluid dynamics problem. The proposed strategy is tested with six different, commonly used implementation schemes to test the performance impact of memory access patterns on different platforms. Nine different LB collision models are included in the tests and exhibit good performance, demonstrating the versatility of our parallel approach. This work shows that it is less than ever necessary to draw a distinction between research and production software, as a concise and generic LB implementation yields performances comparable to those achievable in a hardware specific programming language. The results also highlight the gains of performance achieved by modern many-core CPUs and their apparent capability to narrow the gap with the traditionally massively faster GPU platforms. All code is made available to the community in form of the open-source project "stlbm", which serves both as a stand-alone simulation software and as a collection of reusable patterns for the acceleration of pre-existing LB codes.
The STLBM library is available at https://gitlab.com/unigehpfs/stlbm (see the tag "benchmarks_plosone" to reproduce data published in this paper)
References in corpus (10)
- waLBerla: A block-structured high-performance framework for multiphysics simulations
- Increasing stability and accuracy of the lattice Boltzmann scheme: recursivity and regularization
- Multiphysics flow simulations using D3Q19 lattice Boltzmann methods based on central moments
- Analysis and reduction of spurious noise generated at grid refinement interfaces with the lattice Boltzmann method
- Linear stability of athermal regularized lattice Boltzmann methods
- Recovery of Galilean Invariance in Thermal Lattice Boltzmann Models for Arbitrary Prandtl Number
- Duality in matrix lattice Boltzmann models
- Hermite regularization of the Lattice Boltzmann Method for open source computational aeroacoustics
- Enhanced single-node boundary condition for the Lattice Boltzmann Method
- Efficient LBM on GPUs for dense moving objects using immersed boundary condition
Cited by in corpus (8)
- XLB: A differentiable massively parallel lattice Boltzmann library in Python
- Enhanced single-node boundary condition for the Lattice Boltzmann Method
- PalaCell2D: A framework for detailed tissue morphogenesis
- Development and performance of a HemeLB GPU code for human-scale blood flow simulation
- GPU-based compressible lattice Boltzmann simulations on non-uniform grids using standard C++ parallelism: From best practices to aerodynamics, aeroacoustics and supersonic flow simulations
- Wall boundary conditions for Lattice Boltzmann simulations of turbulent flows with wall functions
- Generalized equilibria for color-gradient lattice Boltzmann model based on higher-order Hermite polynomials: A simplified implementation with central moments
- Characteristic Boundary Condition for Thermal Lattice Boltzmann Methods