论文阅读:稀疏矩阵向量乘法在申威众核架构上的性能优化
稀疏矩阵向量乘法在申威众核架构上的性能优化
文章链接:
稀疏矩阵向量乘法在申威众核架构上的性能优化 - 中国知网 (cnki.net)
文章总结
固定划分方法
- 所有计算完再写回
- 子矩阵(任务)->子矩阵小块(核心计算)
- 将子矩阵小块中的非零元存储在一起,以适应申威处理器上的DMA操作。(Packing)
- 核心:寄存器通信->RMA
- 根据LDM大小提前计算,充分利用LDM空间,换句话说就是保证计算所需都在LDM中
- 加载冗余X,避免DMA隔断
一维负载均衡划分方法
- 尽量使从核处理非零元数量相当
- 4个层次:原矩阵->矩阵带->子矩阵->小块
- 交替分配矩阵带给从核行
- 核心计算依然是子矩阵小块,同固定划分方法
二维负载均衡划分方法
- 矩阵带分配采取贪心的方法,尽可能保证不同行之间的负载均衡
- 解决一维负载均衡方法带来的细粒度同步问题
- 非零元过少的矩阵带,交给一个从核完成,而不再均分给同行上的几个从核
- 一维和二维主要解决预处理,计算还是固定划分中的子矩阵小块
- 排序->根据矩阵带非零元数量从大到小排序(逻辑排序)
- Select函数会在所有ROWS行的从核中,选择出目前非零元数量最少的一行,并将当前的矩阵带i分配给它
1 |
|
这里注意,我们在固定划分那里解决了数据局部性差等问题,之后的一二维划分,都是在做任务分配,核心计算子矩阵小块一直未改变
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!