Skip to main content
QUICK REVIEW

[論文レビュー] SpArch: Efficient Architecture for Sparse Matrix Multiplication

Zhekai Zhang, Hanrui Wang|arXiv (Cornell University)|Feb 20, 2020
Parallel Computing and Optimization Techniques参考文献 64被引用数 13
ひとこと要約

SpArch は、ストリーミングベースのマージャー、圧縮行列表現、ハフマン木スケジューラー、および行プリフェッチャーを用いて、スパース行列乗算(SpGEMM)における入力および出力データ再利用を統合最適化するドメイン特化アクセラレータである。20の実世界ベンチマークにおいて、DRAMアクセスを 2.8× 減少させ、最新のプラットフォーム比で最大 1285× のスループット向上と 62× のエネルギー効率向上を達成した。

ABSTRACT

Generalized Sparse Matrix-Matrix Multiplication (SpGEMM) is a ubiquitous task in various engineering and scientific applications. However, inner product based SpGENN introduces redundant input fetches for mismatched nonzero operands, while outer product based approach suffers from poor output locality due to numerous partial product matrices. Inefficiency in the reuse of either inputs or outputs data leads to extensive and expensive DRAM access. To address this problem, this paper proposes an efficient sparse matrix multiplication accelerator architecture, SpArch, which jointly optimizes the data locality for both input and output matrices. We first design a highly parallelized streaming-based merger to pipeline the multiply and merge stage of partial matrices so that partial matrices are merged on chip immediately after produced. We then propose a condensed matrix representation that reduces the number of partial matrices by three orders of magnitude and thus reduces DRAM access by 5.4x. We further develop a Huffman tree scheduler to improve the scalability of the merger for larger sparse matrices, which reduces the DRAM access by another 1.8x. We also resolve the increased input matrix read induced by the new representation using a row prefetcher with near-optimal buffer replacement policy, further reducing the DRAM access by 1.5x. Evaluated on 20 benchmarks, SpArch reduces the total DRAM access by 2.8x over previous state-of-the-art. On average, SpArch achieves 4x, 19x, 18x, 17x, 1285x speedup and 6x, 164x, 435x, 307x, 62x energy savings over OuterSPACE, MKL, cuSPARSE, CUSP, and ARM Armadillo, respectively.

研究の動機と目的

  • スパース行列における不規則なアクセスパターンと低いデータ局所性が引き起こす SpGEMM のメモリウォール問題に対処する。
  • 外積ベースの SpGEMM における制限を克服する。これは、DRAM に過剰に部分行列を保存することで出力再利用が著しく劣化するためである。
  • 入力および出力データ再利用を統合最適化することで、DRAM帯域幅を削減し、パフォーマンスとエネルギー効率を向上させる。
  • 大規模なスパース行列を最小限のメモリオーバーヘッドで扱えるスケーラブルでハードウェア最適化されたアーキテクチャを設計する。

提案手法

  • 乗算とマージのステージをパイプライン化するストリーミングベースの高度並列マージャーを提案し、部分行列を生成した直後にオンチップでマージを可能にする。
  • 非ゼロ要素をより密集した列にグループ化することで、最初の入力行列を再編集する圧縮行列表現を導入し、部分行列の数を 3 時代減少させる。
  • スパースな部分行列を最初にマージするように優先順位を設定することで、合計DRAMアクセスを最小化する最適なマージ順序を決定するハフマン木スケジューラーを設計する。
  • 圧縮表現に起因する入力行列の読み取りトラフィックを低減するため、ニアオプティマルなバッファ置換ポリシーを備えた行プリフェッチャーを実装する。
  • すべてのモジュールを統合したドメイン特化アーキテクチャ(SpArch)を構築し、SpGEMMワークロードにおける高スループットと低メモリ帯域幅を実現する。
  • 2番目の行列には CSR 形式を、1番目の行列には圧縮列アクセスを用いることで、効率的なストリーミングとオンチップデータ再利用を可能にする。

実験結果

リサーチクエスチョン

  • RQ1外積ベースの SpGEMM において、入力および出力データ再利用を統合最適化することで、DRAM帯域幅をどのように削減できるか?
  • RQ2大規模 SpGEMM において、部分行列の保存量とDRAMアクセスを最小化するための表現形式とスケジューリング戦略は何か?
  • RQ3パイプライン化された乗算・マージ処理を備えたストリーミングマージャーは、SpGEMMアクセラレータにおけるメモリボトルネックをどのように軽減できるか?
  • RQ4圧縮行列表現は、入力アクセスを増加させることなく、部分行列の数をどれほど削減できるか?
  • RQ5ハフマン木ベースのスケジューラーは、スパース性が異なる SpGEMM において、スケーラビリティとメモリアクセスにどのような影響を与えるか?

主な発見

  • SpArch は、20の実世界ベンチマークにおいて、前回の最先端技術比で合計DRAMアクセスを 2.8× 削減した。
  • アーキテクチャは、ARM Armadillo に対して最大 1285× のスループット向上、MKL に対して平均 19× のスループット向上を達成した。
  • 圧縮行列表現により、部分行列の数が 3 時代減少し、DRAMアクセスが 5.4× 削減された。
  • ハフマン木スケジューラーにより、部分的にマージされた結果の間接的保存を最小限に抑え、DRAMアクセスがさらに 1.8× 削減された。
  • 行プリフェッチャーにより、入力読み取りトラフィックが 1.5× 減少し、圧縮行列アクセスパターンに対してニアオプティマルなバッファ置換が実現された。
  • テストワークロードにおいて、OuterSPACE に対して 6× のエネルギー効率向上、CUSP に対して最大 435× のエネルギー効率向上を達成した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。