Page 57 - 《软件学报》2021年第8期
P. 57
孙乔 等:面向异构计算机平台的 HPL 方案 2339
为能够利用 Panel 分解过程中 BLAS 3 级函数来掩盖部分 Panel 相关的数据传输.第三,进程间的 MPI 通信效率
有待考证.由于 Hetero-HPL 不能直接控制底层网络资源(如多块网卡),因此如何配置 MPI 使其针对 Hetero-HPL
发挥最优性能也是一个值得深入研究的问题.
6 相关工作
自从 HPL 程序被提出并作为高性能计算评测标准,对其研究和改进及在不同平台上的并行方案、优化方
法及计算模型研究就未曾中断过.从早期的 Intel Paragon 平台上的实现与测试 [12] ,到现今世界最快的超级计算
机上的优化与开拓 [13] ,对 HPL 算法及优化的研究一直在影响着计算机软硬件设计与发展.异构平台上的 HPL 一
般是主要由速度较快的加速器来完成矩阵更新操作,CPU 负责通信及 Panel 分解 [6,7] .Wang 等为 GPU+多核 CPU
[8]
平台设计了分阶段动态任务划分的方法及软件流水线,以充分利用计算和通信资源 .Heinecke 等人针对带有
[9]
MIC 加速卡的平台,做了细粒度多层次的任务划分,从而实现对各部件的充分合理使用 .Gan 等面向 HPL 在国
产加速器 China accelerator 上对 dgemm 进行了优化,并使用静态与动态相结合的调度方式来协调 CPU 与加速
[3]
器之间的工作 .对多 GPU 平台上的 HPL 研究,陈任之等人工作采用了与本文工作类似的单进程控制多协处理
器案 [14] .但是由于其并没有将尾子矩阵驻留于 Device 端,因此数据在 Host 端和 Device 端的来回传输对整体性
能产生了负面影响.相似的方案也被 AMD 公司采用,为 HPL 中的 dgemm 实现了单进程多设备版本 [11] .与上述
两个方案不同的是 Hetero-HPL 在多协处理器环境中也实现了全局数据的驻留,根本上避免了尾子矩阵的搬移.
Jia 等人提出了与 Hetero-HPL 类似的解决方案,确保了数据多设备端的驻留并采用了按列块循环卷帘数据结构
[6]
确保数据负载均衡 .但值得指出的是,Jia 等人没有考虑到锁页内存分配大小限制小于 Device 端所有设备内存
总量这一情况.在如本文所述的平台上,该方案只能处理较小阶数的矩阵,因而无法充分反映平台性能,因此其
单节点性能仅达到机器峰值性能的 46.06%.另外,由于其方案采用了激进的动态调度策略,其复杂性也进一步降
低了该方案在多进程环境中的可行性.在以上两方面,本文工作更为深入.
7 总结与未来的工作
面向当今主流的异构高性能计算平台,本文提出了 Hetero-HPL 测试程序.整体上,Hetero-HPL 所依赖的数
据对协处理器的映射规则,并行策略等并不依赖于具体的硬件架构及基础软件,因此有能力在现有多种主流众
核架构上进行部署.Hetero-HPL 还从根本上突破了进程数量与协处理器数量必须相等的限制,更进一步提高了
其实用性.在执行过程中,单个进程携带多个协处理器的配置有利于在 Panel 分解和分布式行交换过程中利用更
多了的计算资源,有利于执行效率的提高.Hetero-HPL 基于 MD_Mapping 框架和 MD_Primitive 库,使占主要计
算量的尾子矩阵更新步骤完全利用多个协处理器提供的大规模并行计算能力,同时也避免了同一进程中多个
协处理器间相互数据交换并确保各协处理器间计算量的均衡.面向多设备异构平台,我们突破了锁页内存分配
限制,利用多块锁页内存在逻辑上替代原始非锁页内存,使 Hetero-HPL Device 端与 Host 端的内存交换仅发生在
锁页内存中,确保了执行的高效.在本文中,我们面向多设备异构系统尝试了一些基础但必要的优化手段,其中
包括 Panel 分解与尾子矩阵 dgemm 更新的异步并行,同一协处理器上相同计算的归并及行交换相关操作在协处
理器端的并行化实现.实验结果表明,在单节点条件下 Hetero-HPL 达到了实验平台峰值性能的 76.53%(dgemm
实测性能的 91.1%).Hetero-HPL 还展示了基于单进程控制多设备技术的 HPL 算法在多节点分布式环境下的可
行性.但目前由于网络通信及 PCI-e 数据交换的开销比例过大,程序执行效率还需进一步提高,这是我们将要深
入研究的一个重要方面.
基于 Hetero-HPL,我们未来将主要开展两方面的工作.一方面,进一步在目标平台上深入优化 Hetero-HPL
程序.其中包括深入挖掘 Hetero-HPL 程序中的并行性,使更多关键步骤,如 Panel 在 Host 端及 Device 端的来回
传递、跨进程的广播和分布式行交换等得以并行执行;在此基础上,分析各个步骤在各次迭代中的时间占比,基
于动态信息反馈安排不同的异步并行方案.另一方面,我们可以在若干不同的平台上实现 Hetero-HPL,梳理制约
Hetero-HPL 性能的一般性因素,为 Hetero-HPL 的性能表现建立数学模型.