《Journal of Computational Physics》:SCALE-TRACK: Asynchronous Euler-Lagrange particle tracking on heterogeneous computing architecture
编辑推荐:
研究人员提出了一种用于双向耦合欧拉-拉格朗日(Euler-Lagrange, EL)模拟的异步算法,并在异构计算架构上证明了其百亿亿次级(Exascale)计算就绪性:在256个图形处理器(Graphics Processing Unit, GPU)上成功追踪
研究人员提出了一种用于双向耦合欧拉-拉格朗日(Euler-Lagrange, EL)模拟的异步算法,并在异构计算架构上证明了其百亿亿次级(Exascale)计算就绪性:在256个图形处理器(Graphics Processing Unit, GPU)上成功追踪了多达2560亿个粒子。该算法以开源代码形式提供,可与任何合适的计算流体力学(Computational Fluid Dynamics, CFD)求解器耦合。
论文解读:SCALE-TRACK——面向异构超算的双向耦合欧拉-拉格朗日粒子追踪算法
分散多相流广泛存在于自然界和工程技术中,例如云形成、泥沙输运、气溶胶传播、吸入器、混合过程以及内燃机等。欧拉-拉格朗日(Euler-Lagrange, EL)模拟是研究此类流动的常用方法,其中连续相在欧拉框架下用有限体积法等网格方法求解,分散相则在拉格朗日框架下通过追踪大量粒子运动描述。EL方法对分散相的处理较为简洁,并能直接获取粒子基本属性,因而成为构建简化模型的重要基础。然而,该方法计算开销巨大,往往需要远超简化模型的计算资源。随着超算中心(High Performance Computing, HPC)集群逐步采用中央处理器(Central Processing Unit, CPU)与图形处理器(Graphics Processing Unit, GPU)共存的异构架构,EL方法因粒子独立跟踪、遵循相同计算流程而天然具有大规模并行性,非常适合在GPU上执行。因此,将欧拉相计算保留在CPU上、将拉格朗日粒子追踪卸载到GPU成为一种合理策略。
然而,现有异构EL实现普遍存在至少一项缺陷:有的未利用异构架构,将两相都放在GPU上导致CPU空闲;有的仅实现单向耦合,无法处理许多工业与环境流动中的双向耦合效应;有的因同步障碍导致CPU或GPU等待对方而出现空闲;有的缺乏有效的负载均衡,粒子聚集导致计算资源利用率下降;还有的通信开销过大,限制了向千万亿次级(Exascale)规模的扩展。这些不足使得现有EL模拟的粒子数往往被限制在10
9量级以内。为突破这些瓶颈,研究人员开发了SCALE-TRACK算法,它是一种可扩展的双向耦合EL粒子追踪算法,目标是充分利用现代异构Exascale超算系统。该算法作为Inno4Scale项目的一部分,技术成熟度达到第3级(实验性概念验证)。SCALE-TRACK专注于EL模拟中的拉格朗日部分,欧拉部分可由外部软件如OpenFOAM提供,其架构允许与任意CFD求解器低成本耦合。论文发表于《Journal of Computational Physics》。
SCALE-TRACK的核心技术方法包括:异步耦合算法,允许欧拉相与拉格朗日相不必等待对方完成即可同时推进,并采用外推-校正器(extrapolator-corrector)方法补偿因时间错位导致的源项误差;块(chunk)粒子分区策略,将拉格朗日域独立于欧拉域划分,并允许相邻块边界重叠,从而减少粒子跨区传输并改善负载均衡;基于希尔伯特(Hilbert)空间填充曲线的初始化方法,使粒子均匀分布且无需进程间通信;结构数组(Structure of Arrays, SoA)数据布局,有利于GPU向量化与合并内存访问;非阻塞一致性通信算法减少CPU空闲等待。所有代码使用Julia语言编写,当前实现耦合到OpenFOAM v2406,扩展了其icoFoam和buoyantPimpleFoam求解器。
在验证与基准测试中,研究人员首先针对解析解测试了外推-校正器方法(3.1节)。他们设置一个粒子在静止流体中以1 m/s运动,通过双向耦合使流体获得动量,比较了零外推、常数外推、线性外推异步算法与常规同步算法相对于解析解的误差。结果显示,常数外推法的误差水平与常规方法几乎相同,零外推法误差较大且出现振荡,线性外推法在初始阶段误差大但随时间减小。所有方法均呈现一阶收敛,但常数外推法在误差和计算成本上综合最优。
随后,研究团队采用对流云室测试用例比较了SCALE-TRACK与OpenFOAM内置拉格朗日跟踪(3.2节)。云室尺寸为3 m×3 m×9 m,网格为96×96×288,底部和两侧壁温度为293 K,顶部和另两侧壁为283 K,壁面保持水饱和。SCALE-TRACK追踪了1.4×10
9个包裹(parcel),而OpenFOAM仅追踪0.14×10
9个,两者总粒子数均为70×10
9。模拟3 s后,两者在温度极值、水蒸气浓度极值和总水蒸气质量上的最大偏差分别为5.8%、2.5%和0.48%,表明两者结果高度一致。SCALE-TRACK处理10倍于OpenFOAM的包裹数,却实现了2.7倍的更短耗时和2.5倍的能耗节省,证明其资源利用效率更高。
在扩展性测试中(第4节),强扩展实验在LUMI超算GPU分区进行,固定欧拉网格为24×10
6个单元,粒子数分别为8×10
7、8×10
8和8×10
9,使用最多256个GPU。结果发现,拉格朗日部分在8×10
9粒子时呈现理想扩展,即使每GPU仅31.2×10
6个粒子,并行效率仍达1.03。粒子数较小时,扩展性在GPU数增加时逐渐下降,表明存在约1%最大负载的利用率下限。欧拉部分在MPI秩数达到768(每核单元数低于约40000)时开始偏离理想扩展,导致总时间增加。弱扩展(半弱)实验在MareNostrum5加速分区进行,每个GPU固定1×10
9个粒子,欧拉网格规模不变,最多使用256个GPU,总粒子数达256×10
9。结果显示拉格朗日部分近理想扩展,欧拉部分同样在640个秩时出现偏离。这些结果表明SCALE-TRACK能够高效地实现异构资源并发执行,但需保证欧拉计算量足够大以隐藏通信开销。
论文的讨论部分指出,异步EL耦合若配合常数外推-校正器,其误差可与常规同步方法相当,因此建议采用该方案。与OpenFOAM的微小差异可能源于粒子跟踪方法的不同(SCALE-TRACK采用固定子步,而OpenFOAM基于CFL约束和四面体穿越)。此外,SCALE-TRACK在单GPU工作站上即可处理10
9量级粒子,凸显其高效资源利用。最后,研究结论部分总结道:SCALE-TRACK是一种用于异构计算架构上双向耦合EL模拟的新方法,成功验证了异步耦合的准确性,并展现出优异的强扩展与弱扩展能力,最大追踪粒子数达256×10
9,较以往研究高约两个数量级。这为云模拟等科学领域的高保真EL模拟奠定了基础。未来工作将加入碰撞模型、边界交互、注入模型、非结构化网格支持、动态负载均衡,并扩展至更多CFD求解器。