Page 55 - 《软件学报》2021年第8期
P. 55
孙乔 等:面向异构计算机平台的 HPL 方案 2337
框所示的子矩阵,其由多个列块构成.在每一个协处理器上,我们只需调用一次 dgemm 函数就可以完成该协处
理器上所有列块的更新.类似地,同一进程中的行交换,dtrsm 等操作也可以进行归并,故不再赘述.
4.3 Panel分解与协处理器组异步并行
Panel 分解过程的各个步骤由于计算规模小,调用频繁而不利于使用协处理器进行加速.因此,在当前的
Hetero-HPL 版本中,我们将 Panel 分解放置在 CPU 端执行.如前文所述,相对于进程与协处理一一对应的方案而
言,在 Hetero-HPL 中 Panel 分解操作将有条件利用更多 CPU 核心来完成计算.在 HPL 算法中下一次迭代步的
Panel 分解可以和当前次迭代的尾子矩阵 dgemm 更新并行执行.我们结合 MD_Primitive 库中的异步函数接口,
可以很轻易地完成上述两个关键步骤的异步并行执行.
4.4 相关Kernel的优化实现.
由于待分解的矩阵被置于协处理器内存中,因此我们需要手工编写协处理器代码以实施相应运算.对于
BLAS 函数,我们可以直接调用 RocBLAS 库.而对于诸如行交换,矩阵转置等操作则需要我们手工编写计算
Kernel 完成.在此过程中,我们一方面要利用协处理器的大规模并行能力,另一方面我们也需要利用计算的可结
合性,尽量在一次 Kernel 启动中完成同一协处理器上所有数据的计算.
5 实 验
5.1 实验平台简介
Hetero-HPL 面向当前主流的多协处理器架构构建,因此我们采用一个多核 CPU+多个 GPU 的典型异构
系统作为实验平台.实验平台具有 Host 端及 Device 端.Host 端采用 4 路 8 核 Intel 指令集架构.与每路 CPU 核
心邻近的内存大小为 32GB,系统共计 128GB 内存空间.Device 端为 4 个类 GPGPU 设备,每块类 GPGPU 拥有
64 个流处理器,16GB 设备内存.实验平台 Host 端支持 Posix 标准.因此可以采用常用的并行编程模型如 MPI、
OpenMP 等.而对于 Device 端的类 GPGPU 设备,实验平台提供基础并行编程环境 Hip,并拥有开源基础并行算
法库 Rocm [10] .类似于 NVIDIA 公司推出的通用显卡计算编程环境 CUDA 及其加速算法库 CUDA Toolkit [11] ,
实验平台能够支持手工编写并编译适用于 Device 端运行的计算 kernel,还可以直接利用 Rocm 算法库中的高
性能函数实现并优化程序.另外,HPL 程序的高效执行离不开底层高效执行的基础线性代数库 BLAS.在 Host
[4]
端,实验平台采用 BLIS 数学库,其 dgemm 执行效率可以高达 CPU 理论峰值性能的 98%以上.而在 Device 端,
我们同样可以利用 Rocm 算法库中的 RocBLAS 数学库模块,其 dgemm 性能约为单块协处理器理论性能的
84%以上.
5.2 单节点实验结果
Hetero-HPL 可以支持所有 128 倍数的 NB 取值.通过实验我们发现 NB=256 能够取得较优的总体性能.另外
在 NB=256 时,Device 端矩阵乘法效率大约为机器峰值性能的 84%.我们选取 31 个 CPU 核心参与 Panel 分解计
算,也能获得较优的总体性能.
图 9 展示了 Hetero-HPL 在单节点单进程情况下的运行效率.随着矩阵规模的扩大,执行效率呈现大幅度上
升趋势.在矩阵阶数达到 88 320(4 个协处理器设备内存占用率达到 95.5%)时,Hetero-HPL 的运行效率达到了实
验平台峰值性能的 76.53%,同时也达到了 dgemm 性能的 91.11%,因此可见 Hetero-HPL 在单节点单进程情况下
能够取得较优的性能.