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

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


                 间的数据传输通过网络接口.
                    由于矩阵数据常驻 GPU 内存,panel 分解前把当前的 panel 数据从 GPU 传输到 CPU.Panel 分解在 CPU 端
                 执行 panel 的主元选取与广播,使用基础代码的算法.已完成 panel 分解的数据,进程内部通过 PCIe 传输到 GPU.
                 进程之间通过 MPI 传输,非当前 panel 分解进程接收到 panel 数据后,再通过 PCIe 传输到 GPU.
                    相比于基础代码,矩阵更新行交换和广播增加了 CPU 与 GPU 数据传输过程.矩阵的行在 GPU 内存不连续,
                 数据传输前后需要执行封装和重排.数据传输关系如图 3 所示.






























                                                   Fig.3   Data transmisson
                                                      图 3   数据传输
                 3.3   多线程模型
                    在 1 个节点 4 个进程的架构下,每个进程使用 8 个 CPU 核心,使用多线程管理和调度这些核心.Panel 分解
                 和 panel 广播共享数据,执行顺序存在依赖关系,放在同一个线程.矩阵行交换和矩阵更新共享数据,执行顺序存
                 在依赖关系,放在同一个线程.两组操作之间相对独立,分别绑定到特定核心.两个线程之间通过信号量同步.
                    Panel 分解线程调用和管理 OpenBLIS 函数,OpenBLIS 使用 OpenMP 线程模型.Panel 分解调用 OpenBLIS
                 函数时,与 panel 分解的其他过程没有资源共享和冲突,OpenBLIS 的 OpenMP 线程绑定的核心可以包括 panel
                 分解主线程的核心,也就是最多可绑定 7 个核心.
                 3.4   复杂异构系统协同计算平衡点理论

                    目标系统是复杂异构系统,涉及 CPU、GPU、PCIe 和网络接口等部件的协同计算.为了更好分析和评测各
                 部分对 HPL 性能的影响,指导性能优化,提出平衡点理论.
                    HPL 算法中,矩阵更新的浮点计算占据绝大部分,这部分计算由 GPU 完成.性能分析过程中,矩阵更新被认
                 为是有效计算,其他功能模块包括 panel 分解和矩阵行交换的目标是为矩阵更新提供数据准备.为了获得较高的
                 效率,要尽可能保证 GPU 处于工作状态,发挥 GPU 浮点计算能力.对于 panel 分解和矩阵行交换,尽可能让它们
                 与 GPU 计算并行,使用 GPU 计算隐藏 panel 分解和矩阵行交换.
                    研究没有使用特殊优化、单步循环各部分时间以及串行执行的总时间,如图 4 所示.采用 2×2 进程布局,图
   24   25   26   27   28   29   30   31   32   33   34