文章目錄
- VectorSparse 方法
- Outer Product方法
- row-wise product方法
- 題目: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:一列乘以一列,累加後可以得到一列的計算結果