摘要

稀疏矩阵向量乘法(Sparse Matrix-Vector Multiplication,SpMV)是科学与工程领域中一个至关重要的计算过程,CSR(Compressed Sparse Row)格式是最常用的稀疏矩阵存储格式之一,在图形处理器(Graphics Processing Unit,GPU)平台上实现并行SpMV的过程中,其只存储稀疏矩阵的非零元,避免零元素填充所带来的计算冗余,节约存储空间,但存在着负载不均衡的问题,浪费了计算资源。针对上述问题,对近年来效果良好的存储格式进行了研究,提出了一种逐行分解重组存储格式——TEB(Threshold-ExchangeOrder Block)格式。该格式首先采用启发式阈值选择算法确定合适分割阈值,并结合基于重排序的行归并算法,对稀疏矩阵进行重构分解,使得块与块之间非零元个数尽可能的相近,其次结合CUDA(Computer Unified Device Architecture)线程技术,提出了基于TEB存储格式的子块间并行SpMV算法,能够合理分配计算资源,解决负载不均衡问题,从而提高SpMV并行计算效率。为了验证TEB存储格式的有效性,在NVIDIA Tesla V100平台上进行实验,结果表明TEB相较于PBC(Partition-Block-CSR)、AMF-CSR(Adaptive Multi-Row Folding of CSR)、CSR-Scalar(Compressed Sparse Row-Scalar)和CSR5(Compressed Sparse Row 5)存储格式,在SpMV的执行时间方面平均可缩减3.23、5.83、2.33和2.21倍。在浮点计算性能方面,平均可提高3.36、5.95、2.29和2.13倍。