论文部分内容阅读
格子玻尔兹曼方法(Lattice Boltzmann method,LBM)是计算流体力学(Computational Fluid Dynamics,CFD)中广泛使用的方法,具有天然的并行性,尤其适合大规模并行计算。近年来,高性能计算机技术在不断的发展,采用异构众核处理器作为加速部件的异构众核超级计算机已渐渐成为主流。本文在典型的异构众核超级计算机天河二号上,针对开源3D多相流LBM软件OpenLBMFlow开展了大规模异构并行计算研究。主要工作和贡献如下:(1)对基于格子BGK和Shan-Chen模型的LBM多相流算法和OpenLBMFlow程序实现进行了深入剖析,根据典型异构并行体系结构平台特点,设计了多层次的LBM流场区域分解方法。分别从任务层、异构协同层、数据层、指令层方面描述了LBM多相流模拟的多层次多粒度并行性,提出了大规模异构协同众核并行算法,并对算法的性能瓶颈进行了理论分析。在此基础上从通信、负载均衡以及LBM算法层面提出了相应的优化策略。(2)在天河二号超级计算机上,采用OpenMP4.5加速器模型,实现了OpenLBMFlow基于MPI+OpenMP4.5+SIMD的CPU+MIC异构协同并行模拟。首先通过一系列串行代码优化大幅提升了CPU和MIC上LBM代码的单线程效率,相比于基准测试代码分别获得了2.5和2.8的加速比。进行SIMD优化后,CPU性能进一步提升了1.5倍,MIC性能则提升超过2倍。通过负载均衡优化和异步计算通信重叠,与纯CPU并行模拟相比,异构协同取得了不错的性能加速比。以128个节点结果作为基准,程序在2048个节点时获得了超过80%的效率,展示了不错的弱可扩展性。(3)探索了Python大规模高性能计算和性能优化方法,实现了国际上首个完全基于Python的大规模并行三维LBM多相流模拟开源代码PyLBMFlow。根据Python语言特性,提出了一系列性能优化方法并对LBM边界算法进行了重构,大幅提升了Python计算效率,优化后串行性能相对于基准实现提升达两个量级。在此基础上,基于Mpi4py和Cython实现了MPI+OpenMP混合并行,在天河二号超级计算机上成功模拟了LBM气液两相流,并行规模1024结点,并行效率超过80%。