引言
在过去的很长一段时间中,SpMV都是科学计算和工程应用领域中大规模稀疏性系统问题求解的常用方法,也因此其实现和优化一直是高性能领域研究中的重点。SpMV计算简化为一个大小为m×n的稀疏矩阵A与长度为n的密集向量x相乘,从而得到一个长度为m的向量y。
随着稀疏矩阵规模的扩大,同时又因为其数据具有着分布稀疏无规则的问题,普通的顺序计算和简单的并行优化无法满足现阶段科学计算和工程应用领域的要求,所以人们尝试使用更快速的并行优化算法以及提出更优质的压缩存储格式来加速大规模的SpMV计算。根据稀疏矩阵稀疏性、不规则性的特点,加速SpMV算法的难点主要集中在解决以下几个问题上:(1)并行单元上负载不均衡导致的线程发散;(2)数据存储不规则导致的频繁访存所产生的额外开销;(3)低效矢量化产生的内存访问冲突和数据依赖性。现阶段许多的压缩存储格式也从这几个方面入手加速大规模SpMV运算,例如BELLPACK、CVR、BCCOO、ACSR、CSR5[1-4]等。
本文也从这上述几个方面入手,提出了一种新的格式名为VCSR,VCSR格式以CSR格式作为基础,根据各行非零元素分布的统计特性,将数据以负载均衡的方式分发给各个线程。在这个过程中,将行作为数据分配的基础单元,保证了线程与线程之间数据处理的相互独立,不会产生数据依赖以及访问冲突。最后,在每个并行单元中,使用快速分段求和的策略和矢量化的方式来加速SpMV内核程序的计算性能。
本文详细内容请下载:
https://www.chinaaet.com/resource/share/2000006202
作者信息:
陈闽昊,边浩东
(青海大学 计算机技术与应用学院,青海 西宁 810016)
