SPMV稀疏矩阵向量乘笔记(25)
Merge-based Parallel Sparse Matrix-Vector Multiplication 浅读 (1)
INTRODUCTION
- 表明gpu上的spmv算法已经非常多了,但是鉴于更换存储格式来提升性能的代价太大,所以基本上都还是使用通用的编码csr,因为csr没有特定于体系结构的阻塞,已经重排等等。
- 并且新的存储格式有两个问题:一是检查和格式化的预处理时间,甚至于该耗时是spmv操作的许多倍,二是因为csr格式的矩阵需要被其他程序所需要,所以需要额外的存储开销
- csrmv的并行操作,因为不规则的行长导致性能下降,尽管有各种限制不平衡的方法,但是对于samll-world或scale-free数据集表现通常不佳,因为存在少数行比平均数据长多个数量级
- 该文算法的中心思想主要是将并行CsrMV分解构建为两个列表的逻辑合并:
- A:row-offsets(The row descriptors)
- B:CSR非零元的索引(The natural numbers)
BACKGROUND
- 先介绍了通用存储格式,并且表明优缺点
- 提出特殊存储格式,并且表诉相关工作和优缺点。
- 目前的csrmv并行策略
- 行分布:将长行分配给多处理器,但是短行不处理,这样小于规定大小的行也会导致负载不均衡。长行的分割可以静态的完成,也可以动态的完成。向量化是行分割的一种常见变体,它将一组线程分配给处理每一行。(看不懂)动态变体需要运行时任务分布,这种行为可能导致处理器争用,并且在大规模并行系统上限制可伸缩性
- 非零元分布:先把非零元均匀分布给thread,然后通过row_offsets来判断属于哪一行,最后来合并