论文部分内容阅读
高性能计算能力的发展已经全面进入千万亿次时代,这给数值模拟带来了巨大的机遇,同时也带来了全新的挑战。高性能计算硬件体系架构的现状是,一方面系统总体规模不断扩大,计算节点数已经达到10万的量级;另一方面,节点内集成的并发度越来越高,越来越复杂,多核CPU已经被普遍采用,GPU等众核协处理器也越来越受到欢迎。高性能数值模拟软件的设计与实现应当关注超大规模异构并行的需求。 近年来新兴的无网格粒子方法,形成了对传统的有限元等网格类数值算法的有效补充,在极端大变形、自由表面、流固耦合、非连续运动等问题上具有独特的优势。光滑粒子流体动力学(SPH)方法是一种极具代表性的无网格粒子方法,已经广泛应用于天体物理学、流体动力学、爆炸、高速冲击等问题领域。 SPH方法的GPU加速进展经历了热点加速、全GPU加速、多GPU加速的阶段,当前存在的主要问题是:(1)绝大多数SPH-GPU实现都是基于简化的Euler控制方程,完整的Navier-Stokes方程的GPU实现非常少,且对其存在的根本性困难、优化策略、加速效果等问题还缺乏探讨;(2)目前主流的SPH-GPU加速方案主要侧重GPU资源的高效利用,浪费了CPU资源,多核CPU与众核GPU对等协同模式尚无相关探讨和实现,不能充分利用异构平台的整体计算能力;(3)目前SPH的多GPU并行局限在数十、上百张卡的规模,缺乏千万亿次大规模计算的扩展能力:负载平衡策略主要基于几何剖分法,实现简单但划分效果不佳;通信优化策略主要集中于MPI通信环节,没有考虑对完整通信路径的优化,如PCIE通信、数据打包解包、GPU端对通信粒子的预处理和后处理等环节。 本文面向无网格粒子类方法在固体力学(含流-固拉氏耦合)领域的精细建模与高分辨率模拟需求,针对Navier-Stokes方程的SPH格式,自主研发千万亿次无网格粒子模拟程序petaPar及其异构高效并行版本。论文的创新点如下: 1.建立了具有应用普适性的Navier-Stokes方程SPH格式的高效异构协同模式。针对Navier-Stokes方程的SPH方法在GPU实现方面的困难,研究了三类异构协同模式,建立了最适合Navier-Stokes方程的异构协同计算模式——对等协同模式。该模式突破了传统的热点加速模式的理论加速比上限,避免了主流的全GPU加速模式对CPU资源的浪费,从理论上保证了Navier-Stokes方程的SPH方法在异构平台上的最优加速。 2.针对Navier-Stokes方程张量计算密集的特点,解决了固体力学SPH格式在异构平台上的有效加速问题。主要技术包含:(1)张量计算大Kernel的GPU优化策略,针对Navier-Stokes方程SPH张量计算密集的问题,结合算法特征,通过减少粒子属性、提取操作到粒子更新等方案,缓解了张量计算带来的cache不足、访存密集、寄存器溢出等压力,实现了58.9%的性能提升;(2)基于多级线程池的异构调度方法,解决了多核CPU与众核GPU内存分离和计算差异化(计算粒度、计算特征、计算瓶颈、优化手段等)的问题,实现了SPH方法每个迭代步内三个计算环节和两个通信环节的彻底并行,在三种不同配置的异构平台上,分别实现了理论值的81%、82.7%、86.2%的异构协同效率。 3.首次实现了Navier-Stokes方程SPH方法的1.6万CPU-GPU节点、亿亿次异构超级计算机Titan的全系统规模的高可扩展计算。针对与“大规模”和“异构特性”相关的挑战发展了若干关键技术:(1)细粒度图分解策略,其剖分效果优于传统的几何剖分方案,且兼顾节点间和节点内的二级任务划分,并自然地支持增量式动态负载平衡;(2)异构通信全路径优化策略,对GPU端通信粒子预处理和后处理、CPU端通信粒子的打包解包、PCIE通信、MPI通信等异构通信的各个环节进行了针对性的改进;(3)多进程多线程并行IO策略,消除了大规模粒子模拟在初始化、可视化、容错过程中的IO瓶颈。最终实现了16384个异构节点——26万CPU核与1.6万GPU卡——的协同计算,获得了91%的并行效率(相对32个异构节点)。据我们所知,类似规模的Navier-Stokes方程SPH格式的异构加速工作还未见报道。