Page 52 - 《软件学报》2021年第8期
P. 52
2334 Journal of Software 软件学报 Vol.32, No.8, August 2021
Fig.4 Architecture of Hetero-HPL
图 4 Hetero-HPL 总体结构
3.1 Hetero-HPL数据映射
在数据映射部分,Hetero-HPL 要解决如下 3 个问题:(1) 确保 Update 中 BLAS 3 函数完全由协处理器(组)
完成,以接近计算平台的理论性能峰值;(2) 各个协处理器间计算相互独立,以避免冗余的跨协处理器的数据交
换及相互依赖;(3) 在每一次迭代过程中,各个协处理器间应保持负载均衡.为同时解决这 3 个问题,我们为稠密
矩阵在协处理器间进行数据划分提供一套框架,名为 Matrix-Device_Mapping(简称 MD_Mapping),提供高层接
口便于开发者在逻辑上访问任意子矩阵,屏蔽了数据物理分布细节.
如图 5 所示,在每一个进程中 MD_Mapping 框架将 HPL 程序生成的初始伪随机矩阵划分到各个协处理器.
由于在 Update 阶段,同一进程上的各个矩阵列间的操作是独立的,因此最自然的数据划分策略即为按矩阵列进
行划分,以 NB 为宽度形成若干个列块.由于计算过程中,尾子矩阵的规模逐渐变小,若按照列方向线性划分并指
派到各个协处理,则会导致协处理负载不均衡问题.因此,我们在 MD_Mapping 库中采用按列块循环卷帘的方式
将诸多列块平均分配到各个协处理上.MD_Mapping 库以描述符的方式选取原始矩阵的任意子矩阵,即便这些
子矩阵在物理上分布于不同的协处理器.运算围绕相关子矩阵实现.值得注意的是,假如我们对各个协处理器从
0 开始依次进行编号,并采用 MD_Mapping 中使用的列块循环卷帘数据排布方式,在同一列的不同进程上,原始
矩阵中同一列元素所在的协处理器编号是相等的.这便于今后采用协处理间直接通信机制来优化 Hetero-HPL
程序性能.
Fig.5 Matrix partition based on MD_Mapping framework
图 5 基于 MD_Mapping 框架的矩阵划分