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

黎雷生  等:复杂异构计算系统 HPL 的优化                                                         2313


                 4.2   行交换连续流水线算法
                    矩阵行交换的前提是已接收 panel 分解计算的行交换索引数据(包含在 panel 广播数据中),并且上一次迭代
                 矩阵更新已完成.HPL 基础代码中,行交换完成后启动矩阵更新计算,如果采用这种算法,GPU 在行交换执行的
                 过程是空闲的.文献[6]提出行交换流水线算法优化行交换流程.在使用 GPU 的环境,也可以采用这一算法.使用
                 行交换流水线算法,对矩阵更新的行分段,首先执行第 1 段的行交换,然后 GPU 执行第 1 段的矩阵更新,同时执
                 行第 2 段的行交换,依次类推.采用这种算法,GPU 计算与行交换数据传输重叠执行,减少了 GPU 的空闲时间.但
                 是,单步循环执行第 1 段行交换的这段时间内 GPU 是空闲的.
                    为了避免 GPU 等待,提出了连续流水线算法.算法中,第 1 个分段完成上一次循环矩阵更新和当前进程接收
                 到下一次循环的行交换信息之后,不需要等待上一次循环矩阵更新全部完成,就执行第 1 分段的下一次循环的
                 行交换.采用这种算法,下一次循环第 1 分段的行交换被上一次循环矩阵更新隐藏,下一次循环第 1 分段的矩阵
                 更新隐藏第 2 分段的行交换,后续分段继续流水.
                    使用连续流水算法避免单步循环的流水线启动过程,如果接收到行交换信息早于矩阵更新,则 GPU 可以一
                 直处于工作状态.从第 3.4 节可以看出,行交换信息在平衡点之前是早于矩阵更新的,而这一阶段正是浮点运算
                 量较大的情况,在这一阶段充分发挥 GPU 计算能力,可以提高整体的计算效率.
                    行交换分段方法选择倍数递增,也就是第 2 段列数是第 1 段列数的倍数,依次类推,增长因子可调.  连续行
                 交换流水算法下实现 look-ahead 算法,对于当前 panel 分解,增加 panel 分解数据提前行交换和矩阵更新的分段.

                 5    基础模块性能优化

                    从平衡点理论来看,平衡点之前的部分 GPU 计算时间可以隐藏 panel 分解和行交换时间.随着计算的推
                 进,panel 分解和行交换成为系统性能的瓶颈.为了进一步提高效率,需要针对 panel 分解和行交换进行优化.

                 5.1   Panel分解优化
                 5.1.1   基本参数调优
                    Panel 分解浮点计算集中在 BLAS 函数,使用针对目标系统优化的 Hygon OpenBLIS 库.Panel 分解使用递归
                 算法,中间递归层次的浮点运算集中在 BLAS 的 DTRSM 和 DGEMM 两个函数.当递归层次包含的列数小于等
                 于阈值时,使用非递归算法,浮点运算集中在 BLAS 的 DGEMV、DTRSV、DSCAL、IDAMAX 等函数.对于每
                 一列的 LU 分解,需要通过交换和广播通信主元所在的 panel 行,并记录主元行交换信息.交换和广播通信使用
                 binary-exchange 算法.
                    Panel 分解计算有关参数有 NB、NBMIN、PFACT、RFACT、DIV 等.NB 取决于 GPU 执行矩阵更新的效率,
                 同时考虑 CPU 与 GPU 计算的平衡.当节点规模较小时,NB=384;当节点规模较大时,NB=256.通过参数调优,选
                 择优化的参数组合,见表 1.
                                            Table 1  Parameters of panel factorization
                                                    表 1   Panel 分解参数
                                                  参数                值
                                                  NB             384 或 256
                                                 NBMIN              8
                                                 PFACT             Left
                                                 RFACT             Left
                                                  DIV               2

                    进一步分析 panel 分解各部分时间,0 号进程主要计算函数时间见表 2.
   26   27   28   29   30   31   32   33   34   35   36