Page 35 - 《软件学报》2021年第8期
P. 35
黎雷生 等:复杂异构计算系统 HPL 的优化 2317
可以看出,图 6 优化版本的平衡点是 56.09%,图 4 未优化版本版本是 37.82%.从 LU 分解的计算量来看,前
56.09%占总的 LU 分解计算量的 91.53%,大部分时间充分发挥了 GPU 的计算能力.优化后单节点 HPL 效率达
到了 79.51%.
和优化有关的参数主要是 GPU 加速 DGEMM 和 panel 广播流水的层次,这里都是 3.行交换非当前列第 1
段列数是待更新列数的 1/8,增长因子是 2.Panel 分解参数和表 1 一致.
6.2 可扩展分析
多节点 HPL 较大规模可扩展,目前最大规模 4 096 个节点.HPL 较大规模并行有关的参数和效率见表 4,表
中列出了针对相应节点数执行的实验中效率最高的配置.
Table 4 Parameters and efficiency of multi-nodes HPL
表 4 多节点 HPL 参数和效率
节点数 N NB P Q SWAP BCAST HPL 效率(%)
1 88 320 384 2 2 优化 long 流水 1ring 79.51
4 176 640 384 4 4 优化 long 流水 2ringM 80.01
16 353 280 384 8 8 优化 long 流水 2ringM 77.69
64 706 560 384 16 16 优化 long 流水 2ringM 74.89
256 1 376 256 384 32 32 优化 long 流水 2ringM 73.72
1 024 2 752 512 384 64 64 优化 long 流水 2ringM 72.00
1 936 3 784 704 384 88 88 优化 long 流水 2ringM 70.87
4 096 5 505 024 256 64 64 优化 long 流水 2ringM 67.50
参数 N 是较大规模节点 HPL 评测中比较重要的参数,每个节点计算的矩阵列数一般是 NB 的倍数,多节点
的 N 正比于节点数平方根.N 值越大,计算效率较高的矩阵更新占比越大,一般来说 HPL 效率越高,但 N 受限于
GPU 的内存容量,同时还要考虑系统的负载.NB 使用 384 或 256.P 和 Q 确定二维进程网格的组织方式,经过验
证,P=Q 时目标系统性能最优.Panel 广播和矩阵行交换分别使用优化的 long 算法和广播流水算法.
从 HPL 效率来看,4 节点效率高于单节点效率,原因在于 4 节点矩阵规模大于单节点,效率较高的计算占比
较大,并且可以抵消 4 节点规模下网络传输路径增加带来的性能损失.随着规模的扩大,网络传输对性能的影响
增大,HPL 效率逐步降低,但降低的趋势比较平缓.
7 结论与未来的工作
针对复杂异构系统,分析 HPL 算法的特点,提出 CPU 与 GPU 协同计算方法,提出平衡点理论指导各方面优
化.实现 CPU 与 GPU 协同计算的 look-ahead、行交换连续流水线算法隐藏 panel 分解和行交换时间,并优化
panel 分解和行交换算法,延长 GPU 计算占优的时间,最终提高整个系统的 HPL 效率,单节点效率 79.51%.
当前的超级计算机正向百亿亿级迈进,目标系统采用的节点内通用 CPU 装备加速器,配合高速的节点内总
线被认为是较有潜力的一种架构.未来工作主要是针对百亿亿级计算架构,开展加速器 DGEMM 优化、CPU 与
加速器协同计算和混合精度等相关研究.同时,百亿亿级超级计算机节点规模继续增加,节点数量有可能达到数
万甚至更多,节点间的互连也更加重要.需要进一步研究 HPL 大规模可扩展能力,评测行交换算法和广播算法的
性能,并进行相应的优化.
References:
[1] Dongarra J J, Luszczek P, Petitet A. The LINPACK Benchmark: Past, present and future. Concurrency and Computation: Practice
and Experience, 2003,15(9):803−820.
[2] Official website. 2020. http://www.top500.org
[3] Kurzak J, Luszczek P, Faverge M, Jack Dongarra. Programming the LU factorization for a multicore system with accelerators. In:
Proc. of the Int’l Conf. on High Performance Computing for Computational Science. Berlin, Heidelberg, 2013. 28−35.