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

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

                 accelerators, as well as a contiguous row-swap algorithm, enabling the parallelism among CPU, accelerators, and network. Besides, new
                 panel factorization and row-swap implementations have been designed for the system with accelerators, improving the effectiveness and
                 efficiency of the usage of accelerators. With the configuration of 4 GPUs on each computing node, HPL efficiency of 79.51% on a single
                 node.
                 Key words:    complex heterogeneous system; balance point theory; panel factorization acceleration; contiguous row-swap algorithm

                    HPL(high performance Linpack)是评测计算系统性能的程序,是早期 Linpack 评测程序的并行版本,支持大
                                   [1]
                 规模并行超级计算系统 ,其报告的每秒浮点运算次数(floating-point operations per second,简称 FLOPS)是世界
                 超级计算机 Top500 列表排名的依据.
                    基于 Linpack 的 Top500 排名开始于 1993 年,每年发表两次.2007 年 11 月及之前的列表,排名前 10 位的超
                 级计算机的计算能力全部由同构 CPU提供.2008年 6月 Top500首台性能超过 1 PFLOPS 的超计算机 Roadrunner
                 使用异构 CPU 结构,通用 CPU 执行调度、管理等任务,加速 CPU 主要负责计算密集任务.2009 年 11 月排名第
                 5 位的 Tianhe-1 使用了 CPU+GPU 的异构架构.此后榜单上排名前 10 的系统 CPU+加速器的架构成为趋势.2019
                 年 6 月最新的排名显示,前 10 位中有 7 台系统使用 CPU+加速器架构,其中使用 GPU 加速器的 5 台,使用 XEON
                                             [2]
                 Phi 的 1 台,使用 Matrix-2000 的 1 台 .
                    HPL 浮点计算集中在 BLAS 函数,特别是 DGEMM.对于同构 CPU 架构,优化 BLAS 函数特别是 DGEMM
                                                         [1]
                 性能是提高 HPL 的浮点效率的关键.Dongarra 等人 总结了 2002 年之前 Linpack 发展历史和 BLAS 函数的优
                 化方法.
                    对于 CPU+加速器架构,优化方向集中于 CPU 端 BLAS 函数、加速器端 BLAS 函数、CPU 与加速器之间
                                             [3]
                 负载分配和数据传输等.Kurzak 等人 优化多核 CPU 多 GPU 的 HPL,其 4 个 GPU 的 DGEMM 浮点性能达到
                                      [4]
                 1 200  GFLOPS.Bach 等人 面向 AMD CPU 与 Cypress GPU 架构优化了 DGEMM 和 HPL,HPL 效率达到
                             [5]
                 70%.Wang 等人 采用自适应负载分配方法优化 CPU 与 GPU 混合系统 HPL 性能,并调优 HPL 参数,目标系统
                                                           [6]
                 Tianhe1A 浮点性能达到 0.563 PFLOPS.Heinecke 等人 基于 Intel Xeon Phi Knights Corner 优化了 DGEMM,使
                                                                                        [7]
                 用动态调度和改进的 look-ahead 优化 HPL,100 节点集群 HPL 效率达到 76%.Gan 等人 优化基于加速器的
                 DGEMM,并应用于 Tianhe-2 HPL 评测.
                    随着以 GPU 为代表的加速器技术的发展,加速器浮点性能越来越高,CPU 与加速器的浮点性能差距越来越
                                                       [8]
                 大.2019 年 6 月,Top500 排名第一的 Summit 系统 的 1 个节点装备 2 个 CPU,理论浮点性能 1 TFLOPS,装备 6
                 个 GPU,理论浮点性能 42 TFLOPS.本文研究的目标系统使用 CPU+GPU 异构架构,每个节点装备 1 个 32 核 CPU,
                 4 个 GPU,CPU 浮点计算性能约是 GPU 的 1/61.同时加速器本身的结构也变得越来越复杂,通过增加特定的硬件
                 满足特定领域的需求,如 Nvidia GPU 的 Tensor Core 等.已有研究使用 Tensor Core 的强大的半精度运算能力混
                                        [9]
                 合双精度计算开发了 HPL-AI ,报告 Summit 的 HPL-AI 性能是全双精度 HPL 的 2.9 倍.并且已有应用采用混合
                 精度算法加速计算,从 HPL 和应用角度来看,混合精度都是值得研究的方向.面对这种新的计算架构,内存、总
                 线、网络以及系统设计都要与之相适应,形成复杂的异构计算系统,这为 HPL 评测带来很多机遇与挑战.
                    本文在基础 HPL 代码之上,针对目标系统实现 HPL 并研究其优化方法.第 1 节简要介绍基础算法.第 2 节
                 介绍目标系统基本情况.第 3 节描述复杂异构系统 HPL 平衡点理论.第 4 节介绍复杂异构系统 HPL 高效并行算
                 法.第 5 节介绍基础模块的性能优化,包括 panel 分解优化和行交换 long 算法的优化.第 6 节介绍目标系统 HPL
                 实验和结果分析.第 7 节总结并展望未来的工作.

                 1    基础算法

                    HPL 算法使用 64 位浮点精度矩阵行偏主元 LU 分解加回代求解线性系统.矩阵是稠密实矩阵,矩阵单元由
                 伪随机数生成器产生,符合正态分布.
                    线性系统定义为:
                                                   Axb=  ; A R∈  NN×  ; x ,b R∈  N .
   21   22   23   24   25   26   27   28   29   30   31