论文部分内容阅读
近年来基于异构众核架构的高性能计算机系统取得了巨大的成功,与硬件技术不断高速发展相比,高性能应用软件的研发受异构编程模型和并行运行效率的限制,发展相对滞后。作为电磁学、地震学、流体力学等领域的重要算法,有限差分算法的性能决定了应用软件的有效性,而目前针对众核平台的高效并行有限差分算法研究尚且较少。为了解决此问题,本文研究了有限差分算法特点,归纳了有限差分算法在MIC和GPU两种被广泛使用的众核平台上优化时所面临的三个难题:非连续性访存、异构协同计算和多众核节点并行计算。在MIC众核平台上,提出三步递进法对有限差分算法进行优化:首先,通过分支消除、循环展开、不变量外提等基本优化法削减计算强度并为向量化扫除障碍;然后,通过分析数据依赖,循环分块,使用向量指令集改写核心算法等并行优化法,充分利用MIC协处理器多线程、长向量的机制;最后,在异构众核平台(CPU+MIC)下,通过数据传输最小化,负载均衡等异构协同优化法,实现CPU和MIC的并行计算。在GPU众核平台上,从一个GPU到多个GPU对有限差分算法进行优化:首先使用CUDA编程模型实现有限差分并行算法,利用多CUDA流计算模式实现算法中核心迭代的流水线执行方式,最大化GPU计算资源使用率;然后针对算法不规则访存的特征,利用低延迟可编程控制的共享内存对算法进行分块并行,充分利用单GPU中每个流多处理器SM的低延迟共享内存资源;最后对数据进行划分以实现有限差分算法在多GPU上并行计算,并通过优先计算GPU间交叠网格消除数据依赖以及Peer To Peer数据传输方式获得了接近线性的性能加速比。经测试,相对于串行有限差分算法,优化后的并行有限差分算法在MIC众核平台上和GPU众核平台上均达到了约120倍的最大加速比,此外本文提出的优化方法在多GPU众核平台上获得了线性增长的加速比,具有很好的并行性和可扩展性。优化过程中所使用的技术,特别是针对异构协同、多众核节点并行所做的优化,为其他运行于异构众核平台的应用程序并行优化提供了可借鉴的思路。