Abstract
The rapid increase in performance, programmability, and availability of graphics processing units (GPUs) has made them a compelling platform for computationally demanding tasks in a wide variety of application domains. One of these is real-time computational fluid dynamics, which are computationally expensive due to a large number of grid points that require calculations. One commonly used tool to simulate fluid flows is the Lattice Boltzmann method (LBM), mainly due to its simpler formulation when compared to solving the Navier–Stokes equations, and because of its scalability on parallel processing systems. In this paper, we give an up-to-date survey on the research regarding the LBM for fluid simulation using GPUs. We discuss how the method was implemented with different GPU architectures and software frameworks, focusing on optimization techniques and their performance. Additionally, we mention some applications of the method in different areas of study.
Similar content being viewed by others
References
Aristov VV, Frolova AA, Zabelok SA (2004) Parallel algorithms of direct solving the Boltzmann equation in aerodynamics problems. Elsevier, Amsterdam
Astorino M, Becerra Sagredo J, Quarteroni A (2012) A modular lattice Boltzmann solver for GPU computing processors. SeMA J 56(59):53–78
Audigier C, Mansi T, Delingette H, Rapaka S, Mihalef V, Sharma P, Carnegie D, Boctor E, Choti M, Kamen A et al (2013) Lattice Boltzmann method for fast patient-specific simulation of liver tumor ablation from CT images. In: International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Berlin, pp 323–330
Bailey P, Myre J, Walsh SD, Lilja DJ, Saar MO (2009) Accelerating lattice Boltzmann fluid flow simulations using graphics processors. In: Parallel Processing, 2009. ICPP’09. International Conference on. IEEE, pp 550–557
Bernaschi M, Fatica M, Melchionna S, Succi S, Kaxiras E (2010) A flexible high-performance lattice Boltzmann GPU code for the simulations of fluid flows in complex geometries. Concurr Comput Pract Exp 22(1):1–14
Bernaschi M, Rossi L, Benzi R, Sbragaglia M, Succi S (2009) Graphics processing unit implementation of lattice Boltzmann models for flowing soft systems. Phys Rev E 80(6):066,707
Bertazzo A, Mantovani F, Pivanti M, Pozzati F, Schifano SF, Tripiccione R (2012) Implementation and optimization of a thermal lattice Boltzmann algorithm on a multi-GPU cluster. In: 2012 innovative parallel computing, InPar 2012
Biferale L, Mantovani F, Pivanti M, Pozzati F, Sbragaglia M, Scagliarini A, Schifano SF, Toschi F, Tripiccione R (2013) An optimized D2Q37 lattice Boltzmann code on GP-GPUs. Comput Fluids 80(1):55–62. https://doi.org/10.1016/j.compfluid.2012.06.003
Bisson M, Bernaschi M, Melchionna S, Succi S, Kaxiras E (2012) Multiscale hemodynamics using GPU clusters. Commun Comput Phys 11(01):48–64
Blair S, Albing C, Grund A, Jocksch A (2015) Accelerating an MPI lattice Boltzmann code using OpenACC. In: Proceedings of the second workshop on accelerator programming using directives. ACM, p 3
Brandvik T, Pullan G (2007) Acceleration of a two-dimensional Euler flow solver using commodity graphics hardware. Proc Inst Mech Eng Part C J Mech Eng Sci 221(12):1745–1748
Brandvik T, Pullan G (2008) Acceleration of a 3D Euler solver using commodity graphics hardware. In: 46th AIAA aerospace sciences meeting and exhibit, pp 1–15
Calore E, Gabbana A, Kraus J, Pellegrini E, Schifano S, Tripiccione R (2016) Massively parallel lattice-Boltzmann codes on large GPU clusters. Parallel Comput 58:1–24
Calore E, Gabbana A, Kraus J, Schifano SF, Tripiccione R (2016) Performance and portability of accelerated lattice Boltzmann applications with OpenACC. Concurr Comput Pract Exp 28(12):3485–3502
Calore E, Schifano SF, Tripiccione R (2014) A portable OpenCL lattice Boltzmann code for multi-and many-core processor architectures. Proc Comput Sci 29:40–49
Campos J, Oliveira RS, dos Santos RW, Rocha BM (2016) Lattice Boltzmann method for parallel simulations of cardiac electrophysiology using GPUs. J Comput Appl Math 295:70–82
Cheng J, Grossman M, McKercher T (2014) Professional CUDA C programming. Wiley, New York
Chu NSH, Tai CL (2005) MoXi: real-time ink dispersion in absorbent paper. ACM Trans Graph. 24(3):504–511. http://visgraph.cs.ust.hk/MoXi/
Clough D (2014) Lattice Boltzmann liquid simulations on graphics hardware, Ph.D. thesis. University of Cape Town
Corporation N (2016) Parallel programming and computing platform. http://www.nvidia.com/object/cuda_home_new.html. Accessed 11 May 2016
Delbosc N, Summers JL, Khan A, Kapur N, Noakes CJ (2014) Optimized implementation of the lattice Boltzmann method on a graphics processing unit towards real-time fluid simulation. Comput Math Appl 67(2):462–475
Elizarova T, Milyukova OY (2004) Parallel algorithm for numerical simulation of 3D incompressible flows. Elsevier, Amsterdam
Evans MW, Harlow FH, Bromberg E (1957) The particle-in-cell-method for hydrodynamic calculations, Technical report. DTIC Document
Fan Z, Qiu F, Kaufman A, Yoakum-stover S (2004) GPU cluster for high performance computing. IEEE Supercomput 00(1):47
Feichtinger C, Habich J, Köstler H, Hager G, Rüde U, Wellein G (2011) A flexible patch-based lattice Boltzmann parallelization approach for heterogeneous GPU–CPU clusters. Parallel Comput 37(9):536–549
Feichtinger C, Habich J, Köstler H, Rüde U, Aoki T (2015) Performance modeling and analysis of heterogeneous lattice Boltzmann simulations on CPU–GPU clusters. Parallel Comput 46:1–13
Ferziger JH, Peric M (2012) Computational methods for fluid dynamics. Springer, Berlin
Gaudlitz D, Landmann B, Indinger T (2013) Accelerated CFD simulations using Eulerian and Lagrangian methods on GPUs. Proc Eng 61:392–397
Geveler M, Ribbrock D, Göddeke D, Turek S (2010) Lattice-Boltzmann simulation of the shallow-water equations with fluid–structure interaction on multi-and manycore processors. In: Facing the multicore-challenge. Springer, Berlin, pp 92–104
Goodnight N, Lewin G, Luebke D, Skadron K (2003) A multigrid solver for boundary value problems using programmable graphics hardware. In: ACM SIGGRAPH 2005 Courses, p 193
Guo X, Li W, Iorio F (2016) Convolutional neural networks for steady flow approximation. In: Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, pp 481–490
Habich J, Feichtinger C, Köstler H, Hager G, Wellein G (2013) Performance engineering for the lattice Boltzmann method on GPGPUs: architectural requirements and performance results. Comput Fluids 80(1):276–282. https://doi.org/10.1016/j.compfluid.2012.02.013
Habich J, Zeiser T, Hager G, Wellein G (2011) Performance analysis and optimization strategies for a D3Q19 lattice Boltzmann kernel on nVIDIA GPUs using CUDA. Adv Eng Softw 42(5):266–272
Harris MJ (2004) GPU gems—chapter 38. Fast fluid dynamics simulation on the GPU. GPU Gems 3. https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch38.html. Accessed 04 May 2017
Harwood AR, Revell AJ (2018) Interactive flow simulation using Tegra-powered mobile devices. Adv Eng Softw 115:363–373
He X, Luo LS (1997) Lattice Boltzmann model for the incompressible Navier–Stokes equation. J Stat Phys 88(3–4):927–944
Hennigh O (2017) Lat-net: compressing lattice Boltzmann flow simulations using deep neural networks. arXiv preprint arXiv:1705.09036
Hirt CW, Nichols BD (1981) Volume of fluid (VOF) method for the dynamics of free boundaries. J Comput Phys 39(1):201–225
Holt M (2012) Numerical methods in fluid dynamics. Springer, Berlin
Information GS, Center C (2017) Tsubame2. http://www.gsic.titech.ac.jp/en/tsubame2. Accessed 04 May 2017
Jain S, Tripathi N, Narayanan PJ (2014) Interactive simulation of generalised Newtonian fluids using GPUs. In: Proceedings of the 2014 Indian Conference on Computer Vision Graphics and Image Processing. ACM, p 79
Janßen C, Krafczyk M (2011) Free surface flow simulations on GPGPUs using the LBM. Comput Math Appl 61(12):3549–3563. https://doi.org/10.1016/j.camwa.2011.03.016
Januszewsky M, Kostur M (2014) Sailfish, a flexible multi-GPU implementation of the lattice Boltzmann method. Comput Phys Commun 185(9):2350–2368
Jie T, XuBo Y (2009) Physically-based fluid animation: a survey. Sci China Ser F Inf Sci 52(5):723–740
Kraus J (2013) An introduction to CUDA-aware MPI. http://developer.nvidia.com/content/introduction-cuda-aware-mpi. Accessed 10 March 2017
Kraus J, Pivanti M, Schifano SF, Tripiccione R, Zanella M (2013) Benchmarking GPUs with a parallel lattice-Boltzmann code. In: Proceedings of the symposium on computer architecture and high performance computing, pp 160–167
Kryza T, Dzwinel W (2013) Coupling lattice Boltzmann gas and level set method for simulating free surface flow in GPU/CUDA environment. In: International Conference on Parallel Processing and Applied Mathematics. Springer, Berlin, pp 731–740
Kuznik F, Obrecht C, Rusaouen G, Roux JJ (2010) LBM based flow simulation using GPU computing processor. Comput Math Appl 59(7):2380–2392
Li Q, Zhong C, Li K, Zhang G, Lu X, Zhang Q, Zhao K, Chu X (2012) Implementation of a lattice Boltzmann method for large eddy simulation on multiple GPUs. In: 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems, pp 818–823. http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6332253
Li W, Fan Z, Wei X, Kaufman A (2005) GPU-based flow simulation with complex boundaries. In: GPU Gems 2. https://developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter47.html. Accessed 25 Apr 2018
Li W, Wei X, Kaufman A (2003) Implementing lattice Boltzmann computation on graphics hardware. Vis Comput 19(7–8):444–456. https://doi.org/10.1007/s00371-003-0210-6
Li X, Zhang Y, Wang X, Ge W (2013) GPU-based numerical simulation of multi-phase flow in porous media using multiple-relaxation-time lattice Boltzmann method. Chem Eng Sci 102:209–219
Mattila K, Hyväluoma J, Rossi T, Aspnäs M, Westerholm J (2007) An efficient swap algorithm for the lattice Boltzmann method. Comput Phys Commun 176(3):200–210
Mawson MJ, Revell AJ (2014) Memory transfer optimization for a lattice Boltzmann solver on Kepler architecture nVidia GPUs. Comput Phys Commun 185(10):2566–2574
McIntosh-Smith S, Curran D (2014) Evaluation of a performance portable lattice Boltzmann code using OpenCL. In: Proceedings of the international workshop on OpenCL 2013 & 2014. ACM
Melchionna S, Bernaschi M, Succi S, Kaxiras E, Rybicki FJ, Mitsouras D, Coskun AU, Feldman CL (2010) Hydrokinetic approach to large-scale cardiovascular blood flow. Comput Phys Commun 181(3):462–472
Mynam M, Sahasrabudhe N, Nandgaonkar A (2012) GPU implementation of a novel hybrid lattice Boltzmann method for non-isothermal flows. In: Proceedings of the 5th ACM Compute Conference: Intelligent & Scalable System Technologies. ACM, p 7
Myre J, Walsh SD, Lilja D, Saar MO (2011) Performance analysis of single-phase, multiphase, and multicomponent lattice-Boltzmann fluid flow simulations on GPU clusters. Concurr Comput Pract Exp 23(4):332–350
Niemeyer KE, Sung CJ (2014) Recent progress and challenges in exploiting graphics processors in computational fluid dynamics. J Supercomput 67(2):528–564
Nita C, Itu LM, Suciu C (2013) GPU accelerated blood flow computation using the lattice Boltzmann method. In: High Performance Extreme Computing Conference (HPEC), 2013 IEEE, pp 1–6
Obrecht C, Kuznik F, Tourancheau B, Roux JJ (2010) Global memory access modelling for efficient implementation of the lattice Boltzmann method on graphics processing units. In: International Conference on High Performance Computing for Computational Science. Springer, Berlin, pp 151–161
Obrecht C, Kuznik F, Tourancheau B, Roux JJ (2011) A new approach to the lattice Boltzmann method for graphics processsing units. Comput Math Appl 61(12):3628–3638
Obrecht C, Kuznik F, Tourancheau B, Roux JJ (2011) The thelma project: multi-GPU implementation of the lattice Boltzmann method. Int J High Perform Comput Appl 23(3):295–303
Obrecht C, Kuznik F, Tourancheau B, Roux JJ (2013) Multi-GPU implementation of a hybrid thermal lattice Boltzmann solver using the TheLMA framework. Comput Fluids 80:269–275
Obrecht C, Kuznik F, Tourancheau B, Roux JJ (2013) Multi-GPU implementation of the lattice Boltzmann method. Comput Math Appl 65(2):252–261
Obrecht C, Kuznik F, Tourancheau B, Roux JJ (2013) Scalable lattice Boltzmann solvers for CUDA GPU clusters. Parallel Comput 39(6–7):259–270
Osher S, Fedkiw RP (2001) Level set methods: an overview and some recent results. J Comput Phys 169(2):463–502
Posey S (2013) Considerations for GPU acceleration of parallel CFD. Proc Eng 61:388–391
Potluri S, Wang H, Bureddy D, Singh AK, Rosales C, Panda DK (2012) Optimizing MPI communication on multi-GPU systems using CUDA inter-process communication. In: Parallel and distributed processing symposium workshops & PhD forum (IPDPSW), 2012 IEEE 26th international. IEEE, pp 1848–1857
Qian Y, d’Humières D, Lallemand P (1992) Lattice BGK models for Navier–Stokes equation. EPL (Europhys Lett) 17(6):479
Qiu FQF, Zhao YZY, Fan ZFZ, Wei XWX, Lorenz H, Wang JWJ, Yoakum-Stover S, Kaufman A, Mueller K (2004) Dispersion simulation and visualization for urban security. In: IEEE visualization 2004, pp 553–560. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1372242
Rinaldi PR, Dari EA, Vénere MJ, Clausse A (2012) A lattice-Boltzmann solver for 3D fluid simulation on GPU. Simul Modell Pract Theory 25:163–171. https://doi.org/10.1016/j.simpat.2012.03.004
Rosales C (2011) Multiphase LBM distributed over multiple GPUs. In: Cluster Computing (CLUSTER), 2011 IEEE International Conference on. IEEE, pp 1–7
Schönherr M, Kucher K, Geier M, Stiebler M, Freudiger S, Krafczyk M (2011) Multi-thread implementations of the lattice Boltzmann method on non-uniform grids for CPUs and GPUs. Comput Math Appl 61(12):3730–3743
Schreiber M, Neumann P, Zimmer S, Bungartz HJ (2011) Free-surface lattice-Boltzmann simulation on many-core architectures. Proc Comput Sci 4:984–993. https://doi.org/10.1016/j.procs.2011.04.104
Stam J (1999) Stable fluids. In: Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques. ACM Press/Addison-Wesley Publishing Co, pp 121–128
Tan J, Yang X (2009) Physically-based fluid animation: a survey. Sci China Ser F Inf Sci 52(5):723–740
Tanno I, Hashimoto T, Yasuda T, Tanaka Y, Morinishi K, Satofuka N (2013) Simulation of turbulent flow by lattice Boltzmann method and conventional method on a GPU. Comput Fluids 80(1):453–458. https://doi.org/10.1016/j.compfluid.2012.01.011
Tanwar S (2018) A meshfree-based lattice Boltzmann approach for simulation of fluid flows within complex geometries: application of meshfree methods for LBM simulations. In: Analysis and applications of lattice Boltzmann simulations. IGI Global, pp 188–222
Thürey N (2007) Physically based animation of free surface flows with the lattice-Boltzmann method, Ph.D. thesis. University of Erlangen-Nuremberg
Thürey N, Rüde U (2004) Free surface lattice-Boltzmann fluid simulations with and without level sets. In: Vision, modeling, and visualization 2004: proceedings, Standford, p 199
Thürey N, Rüde U (2009) Stable free surface flows with the lattice Boltzmann method on adaptively coarsened grids. Comput Vis Sci 12(5):247–263
Tölke J (2008) Implementation of a lattice Boltzmann kernel using the compute unified device architecture developed by nVIDIA. Comput Vis Sci 13(1):29–39
Tolke J, Krafczyk M (2008) Teraflop computing on a desktop PC with GPUs for 3D CFD. Int J Comput Fluid Dyn 22(7):443–456
Tran NP, Lee M, Hong S (2017) Performance optimization of 3D lattice Boltzmann flow solver on a GPU. Sci Program 2017:1205892. https://doi.org/10.1155/2017/1205892
Tripathi N, Narayanan P (2013) Generalized Newtonian fluid simulations. In: Computer Vision, Pattern Recognition, Image Processing and Graphics (NCVPRIPG), 2013 Fourth National Conference on. IEEE, pp 1–4
Tubbs KR, Tsai FTC (2011) GPU accelerated lattice Boltzmann model for shallow water flow and mass transport. Int J Numer Methods Eng 86(3):316–334
Valero-Lara P (2017) Reducing memory requirements for large size LBM simulations on GPUs. Concurr Comput Pract Exp 29(24):e4221. https://doi.org/10.1002/cpe.4221
Wang C, Zhang Q, Kong F (2013) Simulation of free-surface flow using a boundless grid. Sci China Inf Sci 56(3):1–10
Wang Z, Zhao Y, Sawchuck AP, Dalsing MC, Yu H (2015) GPU acceleration of volumetric lattice Boltzmann method for patient-specific computational hemodynamics. Comput Fluids 115:192–200. https://doi.org/10.1016/j.compfluid.2015.04.004
Wei X, Zhao Y, Fan Z, Li W, Yoakum-Stover S, Kaufman A (2003) Blowing in the wind. In: Proceedings of the 2003 ACM SIGGRAPH/eurographics symposium on computer animation. Eurographics Association, pp 75–85
Wellein G, Zeiser T, Hager G, Donath S (2006) On the single processor performance of simple lattice Boltzmann kernels. Comput Fluids 35(8):910–919
Xian W, Takayuki A (2011) Multi-GPU performance of incompressible flow computation by lattice Boltzmann method on GPU cluster. Parallel Comput 37(9):521–535. https://doi.org/10.1016/j.parco.2011.02.007
Xiong Q, Li B, Xu J, Fang X, Wang X, Wang L, He X, Ge W (2012) Efficient parallel implementation of the lattice Boltzmann method on large clusters of graphic processing units. Chin Sci Bull 57(7):707–715
Xu A, Shi L, Zhao T (2017) Accelerated lattice Boltzmann simulation using GPU and OpenACC with data management. Int J Heat Mass Transf 109:577–588
Ye Y, Li K (2013) Entropic lattice Boltzmann method based high reynolds number flow simulation using CUDA on GPU. Comput Fluids 88:241–249
Zahran M (2017) Heterogeneous computing: here to stay. Commun ACM 60(3):42–45
Zhang J, Yuasa S, Fukuma S, Mori SI (2016) A real-time GPU-based coupled fluid-structure simulation with haptic interaction. In: Computer and Information Science (ICIS), 2016 IEEE/ACIS 15th International Conference on. IEEE, pp 1–6
Zhao Y (2008) Lattice Boltzmann based PDE solver on the GPU. Vis Comput 24(5):323–333
Zhao Y, Han Y, Fan Z, Qiu F, Kuo YC, Kaufman AE, Mueller K (2007) Visual simulation of heat shimmering and mirage. IEEE Trans Vis Comput Graph 13(1):179–189
Zhao Y, Qiu F, Fan Z, Kaufman A (2007) Flow simulation with locally-refined LBM. In: Proceedings of the 2007 symposium on interactive 3D graphics and games. ACM, pp. 181–188
Zhao Y, Wang L, Qiu F, Kaufman A, Mueller K (2006) Melting and flowing in multiphase environment. Comput Graph (Pergamon) 30(4):519–528
Zhu H, Liu X, Liu Y, Wu E (2006) Simulation of miscible binary mixtures based on lattice Boltzmann method. Comput Anim Virtual Worlds 17(3–4):403–410
Acknowledgements
The authors would like to thank the Tecnologico de Monterrey IT and Computer Department for its support. This work was supported, in part, by the 2015 Google Faculty Research Awards and Tides Foundation under Grant No. TFR15-00145, and by the Consejo Nacional de Ciencia y Tecnología (CONACYT) under Grant No. 342814.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Navarro-Hinojosa, O., Ruiz-Loza, S. & Alencastre-Miranda, M. Physically based visual simulation of the Lattice Boltzmann method on the GPU: a survey. J Supercomput 74, 3441–3467 (2018). https://doi.org/10.1007/s11227-018-2392-8
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-018-2392-8