- 题目:Sparse Tensor Core: Algorithm and Hardware Co-Design for Vector-wise Sparse Neural Networks on Modern GPUs
- 时间:2019
- 会议:MICRO
- 研究机构:阿里巴巴/UCSB
VectorSparse 方法
在神经网络中,稀疏剪枝很常见,但是GPU的Tensor Core主要是面向密集矩阵乘优化的,对于稀疏矩阵的优化还不够
本篇论文的主要贡献:
- 证明GPU在运行稀疏神经网络时的低效率
- 在神经网络训练中,利用向量解析进行稀疏化训练,提高神经网络的稀疏性
- 与算法优化相对应,扩展了Volta GPU的指令集,微架构设计优化以提升稀疏矩阵性能
为什么稀疏矩阵在GPU上性能不足够好呢
- 负载不均匀
- 非零元素的数量未知,难以选择最佳的切片方案
- 高度稀疏矩阵的计算量不足以隐藏长的存储器访问延迟
如何解决负载不均匀的问题呢?
将权重矩阵拆分成不同的向量,并在剪枝的时候强行要求每个向量的稀疏度相同
在矩阵运算过程中,我们假设是稀疏矩阵乘密集矩阵,对于C的每一行,都是稀疏向量乘以密集矩阵的结果,而对于一个稀疏向量,只有个别元素是非零的,只需要和密集矩阵的对应行相乘即可。
对于下图,A矩阵的第一行只有A11和A16是非零的,那么只需要A11乘以B的第1行加上A16乘以B的第6行就是C的第一行结果
- 题目:OuterSPACE: An Outer Product Based Sparse Matrix Multiplication Accelerator
- 时间:2018
- 会议:HPCA
- 研究机构:密歇根大学
Outer Product方法
传统的矩阵乘都是乘累加,本质上是输出不变,输出复用度较高;这里换一种方式,先计算得到多个部分和矩阵,再将部分和矩阵对应相乘即可,这样做的好处是输入矩阵A的复用度较高
- 题目:MatRaptor: A Sparse-Sparse Matrix Multiplication Accelerator Based on Row-Wise Product
- 时间:2020
- 会议:MICRO
- 研究机构:康奈尔大学
row-wise product方法
本篇论文的主要贡献:
- 系统的分析了稀疏矩阵乘的各种数据流,提出了row-wise product方法
- 提出了C2SR的数据存储格式
- 基于上述的数据流与数据存储格式,设计了稀疏卷积加速单元,相比于OuterSPACE提升明显
所有的稀疏矩阵乘可以分成四种不同的数据流:
- 内积:一行乘以一列乘累加,输出不变
- 外积:一列乘以一行,得到多个部分和矩阵
- row-wise product:一行乘以一行,类似VectorSparse,累加后可以得到一行的计算结果
- column-wise product:一列乘以一列,累加后可以得到一列的计算结果