Data-Oriented Language Implementation of the Lattice–Boltzmann Method for Dense and Sparse Geometries
Source abstract
Abstract
The performance of lattice–Boltzmann solver implementations usually depends mainly on memory access patterns. Achieving high performance requires then complex code which handles careful data placement and ordering of memory transactions. In this work, we analyse the performance of an implementation based on a new approach called the data-oriented language, which allows the combination of complex memory access patterns with simple source code. As a use case, we present and provide the source code of a solver for D2Q9 lattice and show its performance on GTX Titan Xp GPU for dense and sparse geometries up to 40962 nodes. The obtained results are promising, around 1000 lines of code allowed us to achieve performance in the range of 0.6 to 0.7 of maximum theoretical memory bandwidth (over 2.5 and 5.0 GLUPS for double and single precision, respectively) for meshes of sizes above 10242 nodes, which is close to the current state-of-the-art. However, we also observed relatively high and sometimes difficult to predict overheads, especially for sparse data structures. The additional issue was also a rather long compilation, which extended the time of short simulations, and a lack of access to low-level optimisation mechanisms.
Source: crossref · Quality: baseline
Research context
OpenAlex topics: Lattice Boltzmann Simulation Studies · Generative Adversarial Networks and Image Synthesis · Music and Audio Processing
SciVX discovery tags are terminology-based. OpenAlex topics are source-provided classifications.
Affiliations
Department of Computer Engineering, Wrocław University of Science and Technology, 50-370 Wrocław, Poland
References (29)
Show source-provided references
1. Implementation of a Lattice Boltzmann kernel using the Compute Unified Device Architecture developed by nVIDIA
2. TeraFLOP computing on a desktop PC with GPUs for 3D CFD10.1080/10618560802238275 ↗
3. Memory transfer optimization for a lattice Boltzmann solver on Kepler architecture nVidia GPUs10.1016/j.cpc.2014.06.003 ↗
4. Sailfish: A flexible multi-GPU implementation of the lattice Boltzmann method10.1016/j.cpc.2014.04.018 ↗
5. Breuer, M., Durst, F., and Zenger, C. (2002). Parallelization Strategies and Efficiency of CFD Computations in Complex Geometries Using Lattice Boltzmann Methods on High-Performance Computers. High Performance Scientific and Engineering Computing, Proceedings of the 3rd International FORTWIHR Conference on HPSEC, Erlangen, Germany, 12–14 March 2001, Springer.10.1007/978-3-642-55919-8 ↗
6. MUPHY: A parallel MUlti PHYsics/scale code for high performance bio-fluidic simulations10.1016/j.cpc.2009.04.001 ↗
7. Benchmark analysis and application results for lattice Boltzmann simulations on NEC SX vector and Intel Nehalem systems10.1142/S0129626409000389 ↗
8. Multiscale modeling of fluid transport in heterogeneous materials using discrete Boltzmann methods10.1007/BF02480358 ↗
9. Nita, C., Itu, L., and Suciu, C. (2013, January 10–12). GPU accelerated blood flow computation using the lattice Boltzmann method. Proceedings of the High Performance Extreme Computing Conference (HPEC), Waltham, MA, USA.10.1109/HPEC.2013.6670324 ↗
10. HemeLB: A high performance parallel lattice-Boltzmann code for large scale fluid flow in complex geometries10.1016/j.cpc.2008.02.013 ↗
11. Pore-scale mass and reactant transport in multiphase porous media flows10.1017/jfm.2011.268 ↗
12. OpenLB—Open source lattice Boltzmann code10.1016/j.camwa.2020.04.033 ↗
13. Complex fluid simulations with the parallel tree-based Lattice Boltzmann solver Musubi10.1016/j.jocs.2013.11.001 ↗
14. WaLBerla: HPC software design for computational engineering simulations10.1016/j.jocs.2011.01.004 ↗
15. Valero-Lara, P. (2018). Lattice Boltzmann Method for Sparse Geometries: Theory and Implementation. Analysis and Applications of Lattice Boltzmann Simulations, IGI Global. Chapter 5.10.4018/978-1-5225-4760-0 ↗
16. Sparse Geometries Handling in Lattice Boltzmann Method Implementation for Graphic Processors10.1109/TPDS.2018.2810237 ↗
17. A new GPU implementation for lattice-Boltzmann simulations on sparse geometries10.1016/j.cpc.2018.04.031 ↗
18. Taichi: A Language for High-Performance Computation on Spatially Sparse Data Structures10.1145/3355089.3356506 ↗
19. Wang, Z. (2021, August 30). LBM_Taichi. Available online: https://github.com/hietwll/LBM_Taichi.
20. (2021, August 30). Taichi Programming Language. Available online: https://github.com/taichi-dev/taichi.
21. Krüger, T., Kusumaatmaja, H., Kuzmin, A., Shardt, O., Silva, G., and Viggen, E. (2017). The Lattice Boltzmann Method: Principles and Practice, Springer International Publishing.10.1007/978-3-319-44649-3 ↗
22. Guo, Z., and Shu, C. (2013). Advances in Computational Fluid Dynamics—Lattice Boltzmann Method and Its Applications in Engineering, World Scientific Publishing Co. Pte. Ltd.10.1142/8806 ↗
23. Mohamad, A.A. (2019). Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes, Springer.10.1007/978-1-4471-7423-3 ↗
24. A Model for Collision Processes in Gases. I. Small Amplitude Processes in Charged and Neutral One-Component Systems10.1103/PhysRev.94.511 ↗
25. A Lattice-Boltzmann solver for 3D fluid simulation on GPU10.1016/j.simpat.2012.03.004 ↗
26. Bailey, P., Myre, J., Walsh, S.D., Lilja, D.J., and Saar, M.O. (2009, January 22–25). Accelerating Lattice Boltzmann Fluid Flow Simulations Using Graphics Processors. Proceedings of the 2009 International Conference on Parallel Processing, Vienna, Austria.10.1109/ICPP.2009.38 ↗
27. On pressure and velocity boundary conditions for the lattice Boltzmann BGK model10.1063/1.869307 ↗
28. High-Re solutions for incompressible flow using the Navier-Stokes equations and a multigrid method10.1016/0021-9991(82)90058-4 ↗
29. Ayachit, U. (2015). The ParaView Guide: A Parallel Visualization Application, Kitware.