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

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

                 中是进程 0 的时间曲线.进程 0 在计算过程中处于不同的位置,包括当前列-当前行和非当前行-非当前列两种情
                 况,图中”A”代表当前列-当前行,”B”代表非当前行-非当前列.两种情况下执行的计算有差异,每种运算有两条时
                 间曲线.panel 分解时间在不同规模下稍有波动.可以看出,单步循环串行执行时间远大于 GPU 执行有效计算的
                 时间.那么首先必须做好矩阵更新与 panel 分解和行交换的并行,GPU 计算时间隐藏 panel 分解与和行交换时间.























                                 Fig.4  Time of panel factorization, row swap, matrix update and each loop
                                   图 4   Panel 分解、行交换、矩阵更新和三部分串行执行累加时间

                    另一方面,HPL 的 LU 分解过程分为两个阶段,矩阵更新时间大于 panel 分解和行交换的时间的阶段和矩阵
                 更新时间小于 panel 分解直至小于行交换时间的阶段.在 panel 分解与矩阵行交换并行的情况下,两个阶段的分
                 界点即矩阵更新与 panel 分解时间曲线的交点就是 CPU 与 GPU 协同计算的平衡点.
                    针对 1 节点 4 进程进行分析,N=88320 情况下,从计算规模来看,平衡点在 37.82%,LU 计算量占 76.00%,之后
                 GPU 不能充分发挥性能.有必要继续优化 panel 分解和行交换,减少执行时间,平衡点后移,延长 GPU 高效率计算
                 时间,进而提高整体的计算效率.平衡点理论可以很好地指导 HPL 的优化工作.

                 4    复杂异构系统 HPL 高效并行算法
                    根据第 3.4 节的分析,首先做好 GPU 计算与 panel 分解和行交换的并行算法,实现 GPU 计算重叠其他部分
                 的时间.
                 4.1   GPU参与计算的look-ahead算法

                    基础代码用 look-ahead 算法实现 panel 分解与 panel 广播重叠执行.计算过程中保存两个 panel 的数据结构.
                 执行当前 panel 分解的进程列,优先执行当前 panel 列数据的行交换和矩阵更新,然后执行 panel 分解计算并发
                 起 panel 广播,广播数据传输的同时更新剩余矩阵.对于当前不计算 panel 分解的进程列,执行上一次循环的行交
                 换和矩阵更新,行交换和矩阵更新计算过程中监测本次 panel 广播数据通信,数据到达后,执行广播通信流程.
                    由于加入了 GPU 计算资源,look-ahead 算法相比于基础版本有所改变.按照第 3.3 节的线程模型,在执行当
                 前 panel 分解计算的进程中,panel 分解线程 CPU 优先执行 panel 列的行交换,然后 GPU 优先更新 panel 分解的
                 列.CPU 等待 panel 数据更新后,发起 panel 数据从 GPU 内存到 CPU 内存的传输,传输结束后执行 panel 分解计
                 算,最后发起 panel 广播.矩阵更新线程在 panel 分解列行交换完成后发起剩余矩阵的行交换,然后调用 GPU 矩
                 阵更新计算.对于非当前 panel 分解计算进程,矩阵更新线程执行行交换和调用 GPU 矩阵更新.Panel 分解线程只
                 负责处理 panel 广播的操作.
   25   26   27   28   29   30   31   32   33   34   35