论文部分内容阅读
计算流体力学(Computational Fluid Dynamics,CFD)的发展与计算机技术的发展紧密相关。新型多核/众核处理器的出现为包括CFD在内的大规模并行应用带来了机遇,也带来了挑战,传统并行算法已难以适应新型多核/众核架构丰富的并行性,并行可扩展性成为瓶颈。如何结合实际CFD应用特点和新型多核/众核并行体系结构特征,设计高效可扩展并行算法,成为了CFD并行计算的重要研究内容之一。本文面向当前主流的多核/众核处理器平台,研究复杂高精度多区结构网格CFD可扩展并行算法,主要工作包括:1)众核平台隐式LU-SGS求解的可扩展并行算法。LU-SGS是工程CFD应用中流行的求解方法,但计算过程数据依赖性强,难以并行。针对传统流水线共享存储并行算法在新型众核平台上难以扩展的瓶颈,提出了两级流水线并行算法TL-Pipeline(Two-level Pipeline),有效降低了流水线开销,提升了线程间负载均衡性。采用嵌套OpenMP在自主开发的复杂高精度CFD代码中实现了上述算法,在双路Intel Xeon E5-2692 v2多核处理器结点(共24核)和Xeon Phi 31S1P57众核处理器(57核,最多228线程)上,相对于传统流水线并行算法,分别获得了多达1.42和7.80倍的加速比。2)在此基础上,提出了基于分块并行的两级流水线LU-SGS并行算法BTL-Pipeline(Block-based TL-Pipeline),充分挖掘多块网格计算之间的并行性。对于LU-SGS,BTL-Pipeline相对于TL-Pipeline在上述Intel Xeon和Xeon Phi平台上加速比分别为2.06倍和7.42倍。进一步将分块并行的思想应用于CFD右端项(包括粘性项和对流项)计算的OpenMP并行中,相对于传统单块网格内的OpenMP并行,在上述Intel Xeon和Xeon Phi平台上加速比分别多达1.49倍和2.06倍。3)当前多核/众核处理器通常具有256位甚至512位的宽向量部件,对于复杂的CFD计算内核,编译器自动向量化通常效率较低。选取高精度结构网格CFD中的五阶精度插值模板WCNS,实现了基于Intrinsic的高效向量化并行,大幅提升了程序性能,对于双精度计算,在256位Intel Xeon E5-2692 v2处理器上加速比为2.01倍,在512位Xeon Phi 31S1P57处理器上加速比为7.60倍。