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

孙乔  等:面向异构计算机平台的 HPL 方案                                                         2333


                 身的尾子矩阵调用 dgemm(矩阵乘法)完成更新.
                    不论进程与 CPU 以怎样的方式对应,HPL 算法中占据绝大部分计算量的尾子矩阵更新操作都能完全利用
                 所有协处理器完成.在该过程通过协处理进行充分加速之后,其余的零散计算的资源使用率将成为性能瓶颈.其
                 中典型的有 Panel 分解操作及处于 Update 阶段的分布式行交换操作.从算法流程上,在 HPL 的每一次迭代步骤
                 中,只有特定 P-Fact 列进程完成本次迭代所需的 Panel 分解操作,同时也只有 U 行进程参与矩阵 U 的广播.因此
                 不同的进程与处理器的映射关系会导致不同的资源使用情况.图 3 展示了一个由 4 个实验节点(具体参数介绍
                 见第 5.1 节)组成的分布式环境.图 3 左侧展示了进程与 Socket 一一对应的情况.由于每一个 Socket 仅管理 8 个
                 CPU 核心和一个协处理设备.因此在 P-Fact 过程中只有共计 8×4=32 个 CPU 核心参与 Panel 分解运算,而在
                 Update 阶段的行交换过程中,仅有 4 个协处理器完成对 U 矩阵的打包并由对应的 4 道 PCI-e 总线进行传输.若
                 采用图 3 右侧进程与节点(node)一一对应的方式执行 HPL 程序,每个进程管控 4 个协处理器设备,则在 Panel 分
                 解部分将有 8×4×2=64 个 CPU 核心参与计算,而在 Update 阶段的行交换过程中会有 8 个协处理器及其 PCI-e
                 总线参与.随着协处理器运算能力的进一步增长,占绝大部分计算量的 BLAS 3 级函数能够很快完成,而诸如
                 Panel 分解,数据打包等必要步骤的运行时间比重将进一步加大,因此应在这些步骤中应尽可能地充分利用各种
                 硬件资源.


























                                       Fig.3    Different mappings between processes and nodes
                                               图 3   进程与节点的不同对应关系

                 3    Hetero-HPL 总体结构

                    为了提高 HPL 各个阶段的资源利用率.本文提出 Hetero-HPL 方案.总体上,Hetero-HPL 中每一个进程能够
                 管理任意数量的协处理器,在大幅度提高上述关键计算步骤的资源利用率的前提下,以协处理器间高度负载均
                 衡的方式完成 HPL 计算.Hetero-HPL 对原始 HPL 算法做出的改动可归纳为数据映射及操作映射两个方面,分别
                 对应于如图 4 所示的 MD_Mapping 框架及 MD_Primitive 算法库.它们将在本节中分别予以介绍.
   46   47   48   49   50   51   52   53   54   55   56