Page 9 - 《软件学报》2021年第8期
P. 9
蔡雨 等:异构 HPL 算法中 CPU 端高性能 BLAS 库优化 2291
本文在 BLIS 算法库基础上,分析异构 HPL 算法中调用的各级 BLAS 函数,针对体系结构特点,利用访存优
化、指令集优化和多线程并行等技术手段形成了优化的 HBLIS 库,提高了异构系统中 CPU 端的计算效率,后文
详细分析了优化策略和方法.本文第 1 节首先对异构 HPL 的 BLIS 库进行分析,特别是异构环境的 HPL 特点以
及各个数学库函数调用关系.第 2 节~第 4 节对高性能 BLIS 库的优化策略做详细的分析和介绍,优化 HPL 中涉
及的各级 BLAS 函数,实现高性能的 HBLIS 算法库.第 5 节在异构平台上做详细的性能测试与分析,通过性能对
比,验证优化的 HBLIS 库性能有大幅度的提高.第 6 节对全文进行总结和展望.
1 算法分析和 CPU 微体系结构
1.1 HPL算法与BLAS函数
HPL 算法核心计算公式如式(1)所示,其求解过程实际是对系数矩阵[A,b]使用高斯消元法进行 LU 分解,变
成[A,b]=[[L,U],Y],其中 L 是下三角矩阵,U 为上三角矩阵,随着因式分解的进行,方程等价于求解 Ux=Y.LU 分解
过程中每一次迭代计算都要经过 panel 分解、panel 广播、行交换和尾矩阵更新.HPL 程序在进程通信和矩阵计
算上需要 MPI [19] 库和 BLAS 或 VSIPL [20] 库的支持,除基本算法不可以改变外,可以通过配置文件调节问题规模
N(矩阵大小)、进程数等测试参数,以及使用各种优化方法来执行 HPL 程序,以获取最佳的性能.当求解问题规模
2
3
为 N 时,浮点运算次数为 2/3×N –2×N .因此,给出问题规模 N,测得系统计算时间 T,计算系统的浮点计算能力=
2
3
计算量(2/3×N –2×N )/计算时间(T),测试结果以每秒浮点运算次数(FLOPS)为单位.
×
Ax = ( b A R∈ nn , x∈ R n ,b∈ R n ) (1)
HPL 算法过程分为 LU 分解和回代过程.异构 HPL 环境下,LU 分解过程中大量计算要在 CPU 和协处理器
之间进行任务分配,CPU 负责调度和适当的辅助计算,而主要计算要在加速部件上进行.当问题规模 N 非常大
时,HPL 的最大计算量是更新尾矩阵的计算,包括双精度的三角矩阵求解和稠密矩阵乘 DGEMM,因此将
DGEMM 放在协处理器上计算,CPU 负责计算量不大的 panel 分解、panel 广播和行交换.异构高性能计算系统
优化的难点主要是在主从芯片对计算任务的划分和通信开销这两个方面,一些学者从任务静态划分和动态划
分实现负载均衡 [12,21−23] ,还有学者在数据重用、存储优化、软件流水和应用双缓冲等方面深入研究 [24−26] ,达到
实现更高效的通信隐藏的目的.异构 HPL 主程序算法中任务分配调用加速部件专用编程接口进行计算,CPU 端
则调用 BLAS 库进行选主元、panel 分解计算.
本文针对的异构 HPL 算法由中国科学院软件研究所开发 [27] ,其 LU 分解过程会将 panel 的一部分矩阵
(N×NBMIN)分解为单位下三角 L1、上三角 U 和 L2,这 3 个部分的运算在 CPU 上进行,主要涉及一级 BLAS 函
数中的 DCOPY、IDMAX、DSCAL;二级 BLAS 函数中的 DTRSM、DTRSV、DGEMV;三级 BLAS 函数中的
DGEMM.各个 BLAS 函数作用如下:
(1) DCOPY 执行数据拷贝操作,将一个向量拷贝到另一个向量.
(2) IDMAX 用于选主元操作,在一列元素中选择最大的元素.
(3) DSCAL 用于向量更新,用一个标量乘以一个向量.
(4) DTRSM 用于三角矩阵求解操作.
(5) DTRSV 用于求解三角方程操作.
(6) DGEMV 用于计算向量矩阵乘法.
(7) DGEMM 用于每个进程上剩余矩阵数据更新.
同时,panel 分解的递归部分也会调用三级 BLAS 函数 DGEMM 加速 panel 分解过程.因此 DGEMM 的效率
极大地影响了 panel 分解的效率.在异构 HPL 算法中,参数 NBMIN 表示递归分解算法可以分解到的最小方阵大
小,随着它的增大,一级 BLAS 在整体过程中的操作次数与规模不变,二级 BLAS 操作次数保持不变,而运算规模
将增加,导致 panel 分解非递归部分的整体时间延长.当 NBMIN 减小时,HPL_pdpanllN [28] 函数的耗时将减少,但
是也会增加外层非递归部分对三级 BLAS 的调用次数.因此需要通过权衡三级与二级 BLAS 的调用次数与效率
来调整 NBMIN 的大小,获得更好的性能.另一方面,通过 DGEMV 的优化可以增大 NBMIN 来减少三级 BLAS 的