A modular lattice boltzmann solver for GPU computing processors
- 116 Downloads
During the past two decades, the lattice Boltzmann method (LBM) has been increasingly acknowledged as a valuable alternative to classical numerical techniques (e.g. finite elements, finite volumes, etc.) in fluid dynamics. A distinguishing feature of LBM is undoubtedly its highly parallelizable data structure. In this work we present a general parallel LBM framework for graphic processing units (GPUs) characterized by a high degree of modularity and memory efficiency, still preserving very good computational performance. After recalling the essential programming principles of the CUDA C language for GPUs, the details of the implementation will be provided. The data structure here presented takes into account the intrinsic properties of the Gauss-Hermite quadrature rules (on which the LBM is based) to guarantee a unique and flexible framework for two- and three-dimensional problems. In addition, a careful implementation of a memory efficient formulation of the LBM algorithm has allowed to limit the high memory consumption that typically affects this computational method. Numerical examples in two and three dimensions illustrate the reliability and the performance of the code.
Keywordslattice Boltzmann method GPU programming CUDA parallel computing Navier-Stokes equations
Unable to display preview. Download preview PDF.
- S Ansumali. Minimal kinetic modeling of hydrodynamics. PhD thesis, ETH Zürich, 2004.Google Scholar
- C. Cercignani. Mathematical methods in kinetic theory. Plenum Press New York, 1969.Google Scholar
- P. Chen. The lattice Boltzmann method for fluid dynamics: theory and applications. Master’s thesis, EPFL, 2011.Google Scholar
- NVIDIA CUDA. Programming Guide, Version 4.0, 2011.Google Scholar
- J. Hoberock and N. Bell. Thrust: A parallel template library, 2010. Version 1.3.0.Google Scholar
- J. Lätt. How to implement your DdQq dynamics with only q variables per node (instead of 2q). Technical report, Tufts University, June 2007.Google Scholar
- J. Lätt. Hydrodynamic limit of lattice Boltzmann equations. PhD thesis, Geneva University, 2007.Google Scholar
- O. Malaspinas. Lattice Boltzmann method for the simulation of viscoelastic fluid flows. PhD thesis, EPFL, 2009.Google Scholar
- C. Obrecht, F. Kuznik, B. Tourancheau, and J.J. Roux. A new approach to the lattice Boltzmann method for graphics processing units. Comput. Math. Appl., 2010.Google Scholar
- openCL. http://www.khronos.org/opencl/.
- B. Palmer and J. Nieplocha. Efficient algorithms for ghost cell updates on two classes of mpp architectures. In S.G. Akl and T. Gonzalez, editors, PDCS International Conference on Parallel and Distributed Computing Systems, pages 197–202. ACTA Press, Anaheim, CA, United States(US), 2002.Google Scholar
- S. Ryoo, C.I. Rodrigues, S.S. Baghsorkhi, S.S. Stone, David B. Kirk, and W.W. Hwu. Optimization principles and application performance evaluation of a multithreaded GPU using CUDA. In Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming, PPoPP’ 08, pages 73–82, New York, NY, USA, 2008. ACM.CrossRefGoogle Scholar
- M. Schulz, M. Krafczyk, J. Tölke, and E. Rank. Parallelization strategies and efficiency of CFD computations in complex geometries using lattice Boltzmann methods on high-performance computers. In High performance scientific and engineering computing: proceedings of the 3rd International FORTWIHR Conference on HPSEC, Erlangen, March 12–14, 2001, page 115. Springer Verlag, 2002.Google Scholar
- D.A. Wolf-Gladrow. Lattice-gas cellular automata and lattice Boltzmann models: an introduction, volume 1725 of Lecture Notes in Mathematics. Springer, 2000.Google Scholar