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

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


                    行偏主元 LU 分解 N×(N+1)系数矩阵[A,b]:
                                              [, ] [[b =
                                            PA      L U⋅  ],]; , ,y P L U ∈  R NN×  ; y∈  R N .
                                                            r
                                             r
                 其中,P r 表示行主元交换矩阵,分解过程中下三角矩阵因子 L 已经作用于 b,解 x 通过求解上三角矩阵系统得到:
                                                          Ux=y
                                             2  3  1  2                  2
                    HPL 中 LU 分解浮点运算次数         N −   N ,回代浮点运算次数 2N .
                                             3    2
                    HPL 采用分块 LU 算法,每个分块是一个 NB 列的细长矩阵,称为 panel.LU 分解主循环采用 right-looking 算
                 法,单步循环计算 panel 的 LU 分解和更新剩余矩阵.基本算法如图 1 所示,其中 A 1,1 和 A 2,1 表示 panel 数据.需要
                 特别说明的是,图示矩阵是行主顺序,HPL 代码中矩阵是列主存储的.














                                                  Fig.1    Block LU algorithm
                                                    图 1   分块 LU 算法
                    计算公式如下:
                                                    ⎡  L 1,1  ⎤  ⎛  A 1,1 ⎞
                                                    ⎢  ,U 1,1 =  LU ⎜  , ⎟
                                                           ⎥
                                                    ⎣ L 2,1  ⎦  ⎝  A 2,1 ⎠
                                                             −
                                                              1
                                                       U 1,2  =  L A  ,
                                                             1,1 1,2
                                                     A update  =  A −  2,2  L U 1,2 .
                                                                2,1
                                                      2,2
                    第 1 个公式表示 panel 的 LU 分解,第 2 个公式表示求解 U,一般使用 DTRSM 函数,第 3 个公式表示矩阵更
                 新,一般使用 DGEMM 函数.
                    对于分布式内存计算系统,HPL 并行计算模式基于 MPI,每个进程是基本计算单元.进程组织成二维网格.
                 矩阵 A 被划分为 NB×NB 的逻辑块,以 Block-Cycle 方式分配到二维进程网格,数据布局示例如图 2 所示.















                                                 Fig.2   Block-Cycle algorithm
                                                   图 2   Block-Cycle 算法

                    对于具有多列的进程网格,单步循环只有一列进程执行 panel 分解计算,panel 分解过程中每一列执行一次
   22   23   24   25   26   27   28   29   30   31   32