Gamma: Leveraging Gustavson’s Algorithm to Accelerate Sparse Matrix Multiplication, Guowei Zhang Nithya Attaluri Joel S. Emer Daniel Sanchez, ASPLOS '21
1. 问题背景
SpMSpM的应用场景
- 深度学习(大模型,模型压缩)
- 线性代数(专用指令集,Tensor Core)
- 图分析
SpMSpM(稀疏乘稀疏)的两个困难
- 减少数据搬运:算力扩张是容易的,提高并行度是困难的,主要受限于稀疏矩阵的存储格式是压缩的(跳过0值),而SpMxSpM意味着需要对两个乘数的下标进行对齐(Intersection),才能确定是否需要乘累加,因此相比于简单复制乘加单元来增加算力(在稠密场景下比较有收益),如何提高这种压缩后的数据的复用性是整个架构效率的关键
- 适应算法多样性:不同的数据pattern(稀疏度高低、结构化稀疏等)可能对应不同的tradeoff,也就产生了不同场景下的多种“最优”算法,如果加速器架构只能适应其中的一小部分,而在另一部分上表现较差,并不能算很好的设计,为了尽可能提高通用性,从SpMxSpM的底层dataflow进行思考是必要的,例如GAMMA对内外积和Gustavson的列举和分析