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 进程布局,图