赵洪杰1,2,陈浩3,陈波3,李瑞田3,彭博1,张全1,邓亮2
摘要: 自适应笛卡尔网格隐式LU-SGS方法兼具网格生成自动化程度高、特征自适应能力强及数值稳定性好等特点,已成为CFD领域的关键算法。然而,由于笛卡尔网格的自适应加密会带来拓扑关系复杂与非规则数据访存问题,加之LU-SGS方法固有的强数据依赖性,传统并行策略难以充分发挥GPU硬件的计算潜力。立足于一个工业级自适应笛卡尔网格CFD软件,深入分析其计算行为和访存模式,提出了一种基于自调度与重排序的高效LU-SGS异构并行算法,定义了一个兼顾网格规模与问题求解时间的客观性能评价指标FVPTS(Finite Volumes solved Per Time-to-Solution)。该算法设计单元面驱动的自调度忙等待机制,实现基于数据依赖关系的按需触发异步并行模式,缓解了强数据依赖对GPU并行效率的限制,提高了并行度。同时,发展了基于水平集与嵌套分割的两阶段重排序算法,改善了访存局部性并减少了线程束分支发散。典型算例测试结果表明,新算法相较传统LU-SGS方法和显式Runge-Kutta方法,FVPTS加速比分别达2.2倍和4.0倍。与同类商用软件相比,集成新算法的CFD软件取得了6.1~8.8倍的FVPTS加速比,平均加速比约为7.5倍。