论文部分内容阅读
大规模科学与工程计算应用对计算需求的不断增长,推动着高性能计算机系统计算能力迈向E级。未来E级系统在提供巨大计算能力的同时,也将给传统数值并行算法带来巨大挑战和机遇。NKS(Newton-Krylov-Schwarz)算法作为求解大规模非线性方程组的求解器,在并行计算领域具有广泛应用。面向未来的E级系统,NKS算法将会产生全局通信瓶颈和无法充分利用异构众核架构并行性等问题,这对算法性能和可扩展性造成巨大影响。基于这一问题,研究了面向众核系统的块Gauss-Seidel/Jacobi预条件子空间迭代法,主要包括以下三个方面:1、针对Krylov子空间迭代法中存在的全局通信瓶颈,基于LogP模型建立了一套全新的算法性能模型,该模型定量分析得出了Krylov子空间迭代法在大规模节点的情况下产生的全局通信瓶颈。在此基础上,提出并实现了对PETSc高性能计算工具箱中GMRES、Chebyshev、Richardson、TCQMR四种Krylov子空间算法中包含的向量内积、范数和标准化步骤进行非阻塞式通信优化策略。在天河二号超级计算机平台上对MPI_Allreduce和MPI_Iallreduce接口进行性能对比,最高测试到65536个进程。对比结果表明,MPI_Iallreduce在进程规模达到1024时,其性能开始明显好于MPI_allreduce,且性能优势随着进程规模的扩大而不断扩大。最后采用二维方腔顶盖驱动流作为算例,在天河二号超级计算机平台上对优化效果进行了验证,结果表明,优化后的Krylov子空间迭代法具有良好的可扩展性,在进程规模达到1024时,优化后的Krylov子空间迭代法比优化前的方法性能提升了16%~26%不等。2、针对非结构网格问题,提出并实现了面向异构众核架构的块Gauss-Seidel/Jacobi预处理算法,将其作为区域分解算法的子区域求解器。通过数学推导证明了块Gauss-Seidel/Jacobi算法的收敛性。使用高速列车外流场模拟这一真实算例在异构众核架构超级计算机平台进行数值实验的结果表明,基本的块Gauss-Seidel/Jacobi预处理算法具有良好的预处理效果和可扩展性,在使用32个进程计算时,基本的块Gauss-Seidel/Jacobi算法相比于串行Gauss-Seidel算法预处理过程的加速比达到2.86倍。3、基于基本的块Gauss-Seidel/Jacobi算法,针对国产众核架构处理器,分别提出并实现了多行块通信打包、计算与通信重叠和丢弃非关键元素数值优化三种性能优化策略。数值实验的结果表明,优化后的低通信复杂性块Gauss-Seidel/Jacobi算法对比串行Gauss-Seidel算法加速比最高能达到4.16倍。使用1040核的测试数据为基准,在核数达到33,280时,块Gauss-Seidel预处理算法的并行效率为61%。