摘要
针对现代高性能计算机架构开展非结构CFD节点内共享内存并行,是提升浮点计算效率、实现更大规模流体仿真应用能力的关键。然而由于非结构网格CFD计算存在拓扑关系复杂、数据局部性差、数据写冲突等问题,传统算法如何共享内存并行化以高效发挥多核CPU/众核GPU的硬件能力,成为一个重大的挑战。从一个工业级非结构CFD软件出发,通过深入分析其计算行为和访存模式,设计实现了多种共享内存并行算法,采用了网格重排序、循环融合、多级访存等数据局部性优化技术进一步提升性能。特别的,面向多核CPU架构,系统开展了循环级与任务级两种并行模式的对比研究;面向众核GPU架构,创新地提出了一种基于多级访存优化方法的规约并行策略。利用M6机翼和CHN-T1飞机算例对所有并行算法及优化技术进行了全面验证与评估。结果表明:在多核CPU平台上,基于剖分复制的任务级并行策略性能最好,采用Cuthill-McKee重排序以及循环融合分别使整体性能提升10%。在众核GPU平台上,基于多级访存的规约策略具有显著的加速效果,优化后热点函数的性能相比优化前提升了3倍,相比CPU串行性能整体加速比可达127。
- 单位