SPMV稀疏矩阵向量乘笔记(12)
TileSpMV: A Tiled Algorithm for Sparse Matrix-V ector Multiplication on GPUs 浅读 (1)
Introduction
- 提出现在spmv面临的两个问题:
- ①因为csr和ell和它们的变种格式都没有考虑存储的空间结构,对x的重用并不充分,所以存储格式问题会导致不完全的内存带宽使用、
- ②缺乏对于能完全存储在片上内存的小型稀疏矩阵优化
- ③提出虽然机器学习能有效的提升spmv,但是那是对于整个矩阵而言,它的微观结构并没有得到优化。
- 针对上述问题,论文给出解决方案。
- ①将矩阵分为相同大小的tile(16x16)
- ②将tile视为基本工作单元,而不是行或者一组元素,并且在7种典型的格式上进行优化
- ③设计了一种选择算法,对每个tile都选择了最佳格式和spmv算法实现。
- 指出论文工作如下
- ①在现在的gpu上,提出了一种高效的spmv算法叫做tilespmv
- ②对于小型稀疏矩阵,实现了基本wrap水平的高优化spmv核心
- ③对于tile选择最好的存储格式和核心算法,提出了一种选择算法
- ④对比于前沿的spmv算法,实现了显著的加速比
BACKGROUND AND MOTIVATION
提出在gpu上优化并行SpMV的小块结构并不是一件简单的事情
- 要在GPU上使用宽向量编程模型
- 当块很大时,不应该以密集的形式保存它们,这样可能会浪费太多的空间来填充零,并可能抵消性能/空间优势
- 没有一种单一的稀疏格式和算法能够始终为任何稀疏结构的块提供最佳性能,并且总是需要一种选择方法