Session: 3.3 - Open Source CFD
Paper Number: 158589
158589 - IMEXLBM: A Portable Lattice-Boltzmann Solver for Heterogeneous Platforms
Abstract:
The Lattice Boltzmann Method (LBM) has been demonstrated to be an effective approach for solving the Navier-Stokes equations by addressing the advection-reaction equation of the distribution functions. From both advection and diffusion scaling, we can recover the density/pressure and momentum. Moreover, the locally computed collision operator and the “perfect-shift” streaming operator make regular LBM significantly faster than directly solving the Navier-Stokes equations in certain scenarios. The collision operator can be further accelerated using GPUs, making the solver even faster, especially for large-scale and multi-scale simulations.
We have developed a single-phase LBM program, IMEXLBM, for heterogeneous platforms, written in C++. The program integrates the Kokkos library with MPI to achieve GPU and multi-platform acceleration. It has been validated using benchmark problems, including 2D cylinder flow and 3D sphere flow. The results of GPU and CPU acceleration are highly consistent, with differences arising only from round-off errors. A significant speed increase is observed when transitioning the computing platform from CPU to GPU.
Additionally, the 3D Taylor-Green vortex simulation has been employed to evaluate the scaling performance of this program. The performance of two local functions without MPI data transfer approaches ideal scaling. For the non-local function, an evenly distributed MPI partitioning method is recommended to improve performance and scaling.
Presenting Author: Chunheng Zhao The city college of New York
Presenting Author Biography: I am a postdoctoral research associate working on multiphase fluids simulation and contact line dynamics in Professor Taehun Lee’s group, at the City College of New York. I obtained a Ph.D. degree in the Department of Mechanical Engineering at the City College of New York and worked on ternary multiphase flow modeling and simulation using the Lattice Boltzmann Method (LBM). I spent one year working as an intern in Argonne National Lab, focused on large scale simulation, distributed systems, and GPU acceleration, after which I spent one year as a Postdoctoral research associate in Paris working with Professor Stephane Zaleski, working on Adaptive mesh refinement for multiphase flow. I developed the C++ version IMEXLBM and conducted the scaling work on Theta and Polaris clusters. I am developing a continuous/discontinuous Galerkin lattice Boltzmann method based on Nek5000 and NekRS. I program with Python, Fortran, C, and C++ and I am familiar with parallel programming libraries such as OpenMP, Kokkos(Cuda), DPC++, and MPI. I am interested in Machine/Deep learning for turbulence simulation and I am familiar with PyTorch for Deep Neural Networks.
IMEXLBM: A Portable Lattice-Boltzmann Solver for Heterogeneous Platforms
Paper Type
Technical Paper Publication