Page 38 - 《软件学报》2021年第8期
P. 38

2320                                   Journal of Software  软件学报 Vol.32, No.8,  August 2021

                 program achieves 2.3 PFLOPS on 512 nodes, with floating-point efficiency 71.1%.
                 Key words:    HPL; heterogeneous system; cross-platform; performance modeling; exascale computing

                    HPL(high performance linpack)是目前 HPC 领域中最重要的基准测试程序之一,其性能被用作 TOP500 的排
                 名依据  [1,2] .HPL 可以从超级计算机的计算性能、访存性能、网络性能、可用性和稳定性等各个方面给予超级
                 计算机综合评价.HPL 的优化具有重要意义,在学界长期受到关注和研究.HPL 的优化可以为其他科学计算应用
                 的并行优化提供有价值的参考.
                                   [3]
                    自 1993 年 TOP500 排名开始,榜单中的超级计算机的体系结构一直在发生变化.图 1 展示了排名第一的计
                 算机的体系结构的变化.从图 1 中我们可以看到超算的体系结构从早期的向量处理器和单核通用 CPU 时代开
                                                                              始,然后演进到多核 CPU 时代,超
                                                                              级 计 算 机的计 算能 力也从
                                                                              GFLOPS 提升到 TFLOPS.2008 年
                                                                                             [4]
                                                                              的超算 Roadrunner 标志着异构
                                                                              架构的超级计算机体系结构的兴
                                                                              起,随后异构架构开始频繁涌现,
                                                                              超级计算机进入了 PFLOPS 的时
                                                                              代.各种加速器,如 GPU、DSP、
                                                                              FPGA、MIC 等都作为加速卡出
                                                                              现在各种超算中,我国有也了自
                                                                              己的国产加速器和国产处理器.
                     Fig.1    History of supercomputer architecture and computing power
                                                                              伴 随 着 超算体 系结 构的变 化 ,
                             图 1   超级计算机体系结构与计算能力发展历史
                                                                              HPL 算法的设计与实现也应该适
                 应新的体系结构.在这种背景下,本文建立了国产处理器-国产加速器异构架构上的 HPL 性能模型,重点研究了
                 国产处理器-国产加速器异构架构下的 HPL 算法的设计与实现.本文的主要贡献如下:
                    •   本文建立了一个 HPL 性能模型.
                    •   针对国产处理器-国产加速器异构架构,本文设计了一种多线程细粒度流水 HPL 算法,充分利用异构系
                 统中的多种硬件,取得了超过同类系统其他实现的效率.
                    •   本文实现了轻量级跨平台的异构加速框架 HPCX.
                    本文第 1 节分析相关研究.第 2 节介绍 HPL 的性能模型.第 3 节给出针对异构架构的多线程细粒度流水 HPL
                 算法及异构加速框架 HPCX.第 4 节呈现新 HPL 算法的性能以及分析.第 5 节总结全文.
                 1    相关研究

                    HPL 是横量超算性能最重要的基准测试程序之一,其性能作为 TOP500 排名的依据.由于 HPL 的重要地位,
                 国内外有许多针对 Linpack 的优化工作.这些工作主要集中在 HPL 算法优化,双精度矩阵乘法效率优化和 HPL
                 性能模型 3 个方面.
                    在 Linpack 算法优化方面,Dongarra 等人基于消息通信接口(message pass interface,简称 MPI)和基本线性数
                                                                                         [1]
                 学库(basic linear arithmetic subroutine,简称 BLAS)的 Level 3 函数实现了分布式的 HPL 算法 .在此基础上,文献
                 [5]提出了一种单边通信和动态 look-ahead 算法,通过重叠第 i+1 轮迭代的 panel 分解与第 i 轮迭代的尾矩阵更
                 新来实现部分通信与计算的重叠.针对异构架构,Fatica 通过将尾矩阵划分为固定比例的两块分别分配给加速
                                                    [6]
                 器和 CPU 以实现 CPU 和加速器的协同计算 .Yang 扩展了 Fatica 的工作实现了动态的 CPU 和加速器计算任
                                                                                      [7]
                 务划分,采取根据上一次计算的 CPU/加速器性能比决定下一轮任务划分比例的策略 .文献[8]实现了一种
                 work-stealing 的策略来实现 CPU 和加速器的计算任务动态平衡,并且利用有向无环图来维护算法中的计算依
                 赖关系.通过这种对依赖关系的分析,文献[8]将行交换的过程分成几个部分,通过行交换和尾矩阵更新的相互重
   33   34   35   36   37   38   39   40   41   42   43