[论文解读] Efficient implementation of immersed boundary-lattice Boltzmann method for massive particle-laden flows Part I: Serial computing
本文提出了一种高度优化的串行实现方法,用于模拟含有超过10⁴颗粒的大量颗粒载流体的浸入边界-格子Boltzmann方法(IB-LBM)。通过引入不可压缩LBM的交换算法、IBM的局部网格到点方法、改进的颗粒相互作用网格搜索算法,以及用于半计算的对称性算法,该方法在无颗粒流体中实现了最高36 MLUPS(2D)和12 MLUPS(3D)的性能,在固体体积分数高达0.40的密集颗粒载流体中仍能保持超过15 MLUPS(2D)和7 MLUPS(3D)的性能。
Immersed boundary-lattice Boltzmann method (IB-LBM) has been widely used for simulation of particle-laden flows recently. However, it was limited to small-scale simulations with no more than O(103) particles. Here, we expand IB-LBM for massive particle-laden flows with more than O(104) particles by two sequential works. First is the Part I: serial computing on a single CPU core and following the Part II: parallel computing on many CPU cores. In this Part I paper, a highly efficient and localized implementation of IB-LBM is proposed for serial computing. We optimize in three main aspects: swap algorithm for incompressible LBM, local grid-to-point algorithm for IBM and improved grid search algorithm for particle pair short-range interaction. In addition, symmetry algorithm is proposed for the half-calculation of LB collision and external force term. The computational performance on a single CPU core is analyzed. Different scales of two dimensional (2D) and three-dimensional (3D) particles settling in closed cavities are used for testing. The solid volume fraction is varied from 0 to 0.40. Simulation results demonstrate that all calculation parts are dramatically decreased by the improved algorithm. For the particle-free flows, the Mega Lattice Site Update per Second (MLUPS) can be achieved up to 36 (2D) and 12 (3D) using the improved algorithm. For the particle-laden flows, MLUPS can be achieved no lower than 15 (2D) and 7 (3D) in the simulations of dense flows. At last, we discuss the potential of the new algorithms for the high-performance computation of the large-scale systems of particle-laden flows with MPI parallel technique.
研究动机与目标
- 为克服现有IB-LBM方法的局限性,这些方法受限于最多仅能模拟≤ O(10³)颗粒的小规模模拟。
- 实现在单个CPU核心上高效模拟含有> O(10⁴)颗粒的大规模颗粒载流体。
- 开发算法优化,显著降低LBM和IBM组件中的计算成本。
- 为未来基于MPI的大规模颗粒载流体系统的高性能并行计算奠定基础。
提出的方法
- 引入一种交换算法,通过重新排序碰撞与平流步骤,提升不可压缩格子Boltzmann方法(LBM)的效率。
- 开发一种局部网格到点算法用于浸入边界方法(IBM),以减少力插值的计算开销。
- 提出一种改进的网格搜索算法,通过仅在相邻网格单元内搜索,加速短程颗粒-颗粒相互作用。
- 实现一种对称性算法,仅计算格子Boltzmann碰撞和外力项的一半,利用对称性减少冗余计算。
- 整个实现针对单个CPU核心的串行执行进行了优化,重点提升内存访问局部性和计算效率。
- 在不同固体体积分数的封闭腔体内,对2D和3D颗粒沉降模拟的多个尺度进行了方法验证。
实验结果
研究问题
- RQ1IB-LBM能否在单个CPU核心上高效扩展至模拟超过O(10⁴)颗粒的流动?
- RQ2在大规模颗粒载流体中,如何最小化LBM碰撞、IBM力插值和颗粒-颗粒相互作用的计算成本?
- RQ3通过诸如基于对称性的半计算和局部网格搜索等算法优化,可实现多大程度的性能提升?
- RQ4在固体体积分数高达0.40的密集颗粒流中,改进后的算法能在多大程度上保持高性能?
- RQ5该优化的串行实现作为未来基于MPI并行化大规模模拟的基础,具有多大潜力?
主要发现
- 优化后的IB-LBM在单个CPU核心上,于2D无颗粒流体中实现了最高36 MLUPS,在3D无颗粒流体中实现了12 MLUPS。
- 在固体体积分数高达0.40的密集颗粒载流体中,该方法仍能保持不低于15 MLUPS(2D)和7 MLUPS(3D)的性能。
- 交换算法通过提升数据局部性和减少内存访问延迟,显著降低了LBM碰撞步骤的计算开销。
- 针对IBM的局部网格到点算法通过仅在颗粒附近的网格点上计算,降低了力插值的成本。
- 改进的网格搜索算法通过仅在物理相邻的网格单元内搜索,加速了短程颗粒-颗粒相互作用。
- 基于对称性的半计算算法通过减少LBM碰撞和外力评估中对称项的冗余计算,提升了整体效率。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。