[論文レビュー] SMASH: Sparse Matrix Atomic Scratchpad Hashing
SMASHは、PIUMAアーキテクチャ向けに、アトミックハッシュ化、トークン化、メモリ断片化を活用した新しいSpGEMMカーネルを導入し、ベースライン実装比で9.4倍の高速化を達成した。PIUMAの分散グローバルアドレス空間、DMAエンジン、マルチスレッドコアを活用することで、SMASH V3はDRAM帯域幅の95.9%を活用し、動的ワークロードバランスと部分積のメモリ内ハッシュテーブルマージにより、ほぼ100%のコア利用率を達成した。
Sparse matrices, more specifically SpGEMM kernels, are commonly found in a wide range of applications, spanning graph-based path-finding to machine learning algorithms (e.g., neural networks). A particular challenge in implementing SpGEMM kernels has been the pressure placed on DRAM memory. One approach to tackle this problem is to use an inner product method for the SpGEMM kernel implementation. While the inner product produces fewer intermediate results, it can end up saturating the memory bandwidth, given the high number of redundant fetches of the input matrix elements. Using an outer product-based SpGEMM kernel can reduce redundant fetches, but at the cost of increased overhead due to extra computation and memory accesses for producing/managing partial products. In this thesis, we introduce a novel SpGEMM kernel implementation based on the row-wise product approach. We leverage atomic instructions to merge intermediate partial products as they are generated. The use of atomic instructions eliminates the need to create partial product matrices. To evaluate our row-wise product approach, we map an optimized SpGEMM kernel to a custom accelerator designed to accelerate graph-based applications. The targeted accelerator is an experimental system named PIUMA, being developed by Intel. PIUMA provides several attractive features, including fast context switching, user-configurable caches, globally addressable memory, non-coherent caches, and asynchronous pipelines. We tailor our SpGEMM kernel to exploit many of the features of the PIUMA fabric. This thesis compares our SpGEMM implementation against prior solutions, all mapped to the PIUMA framework. We briefly describe some of the PIUMA architecture features and then delve into the details of our optimized SpGEMM kernel. Our SpGEMM kernel can achieve 9.4x speedup as compared to competing approaches.
研究の動機と目的
- 不規則なメモリアクセスとワークロードの不均衡による、一般用途アーキテクチャ上でのSpGEMMの性能ボトルネックを解消すること。
- DGAS、DMAエンジン、マルチスレッドコアといった独自の特徴を活用できる、ドメイン特化型PIUMAアーキテクチャにおけるSpGEMMカーネルマッピングを最適化すること。
- 行単位のSpGEMM手法に起因する中間部分積行列に起因する重複するDRAMアクセスを排除すること。
- スレッド間での動的ワークロードバランスとアイドルサイクルの最小化により、ハードウェアの高利用率を達成すること。
- 中間部分積行列のためのオンチップスクラッチパッド制限を回避し、データ再利用を向上させるために、メモリ内ハッシュテーブルを用いたマージの可能性を検討すること。
提案手法
- 部分積を中間行列として保存せず、グローバルハッシュテーブルに直接格納するためのアトミックハッシュ化を用いてSMASH V1を実装し、中間保存領域と重複するDRAM読み込みを回避した。
- 各行あたりの推定FLOPsに基づいて動的に作業を割り当てるトークン化を導入し、スレッドの利用効率を向上させるためにSMASH V2を提案した。
- メモリ断片化とプロデューサ・コンシューマーモデルを適用し、メモリアクセスのオーバーヘッドを低減し、データ局所性を向上させた。
- PIUMAのDMAエンジンを活用して、計算コアからのデータ移動をオフロードし、MTCを計算に専念させ、命令サイクルオーバーヘッドを削減した。
- オンチップSPADではなくDRAMにハッシュテーブルを格納することで、オンチップメモリの圧迫を軽減し、大規模なスパース行列演算を可能にした。
- 高ビットと低ビットの両方のハッシュ化を組み合わせて衝突解決を実現し、動的ロードバランスによりホットスポット問題を緩和した。
実験結果
リサーチクエスチョン
- RQ1ドメイン特化型アクセラレータ上で、SpGEMMカーネルをどのように最適化すれば、DRAM帯域幅をほぼ飽和状態に近づけますか?
- RQ2動的ワークロードバランスは、不規則なSpGEMMワークロードにおけるマルチスレッドコアの利用効率を向上させる上で、どのような役割を果たしますか?
- RQ3メモリ内ハッシュテーブルを用いたマージは、中間部分積行列の必要性を排除し、重複するメモリアクセスを削減できますか?
- RQ4DGAS、DMAエンジン、ネットワーク指令といったアーキテクチャ的特徴は、PIUMA上でのSpGEMM性能にどのように影響を与えますか?
- RQ5部分積のためのDRAM上に配置されたハッシュテーブルとオンチップスクラッチパッドの両者を比較した場合、性能上のトレードオフはどのようなものですか?
主な発見
- SMASH V3は、動的ロードバランス、メモリ断片化、効率的なDMA使用を組み合わせることで、SMASH V1比で9.4倍の高速化を達成した。
- SMASH V3は、入力データと部分積の両方の共有アクセスにもかかわらず、利用可能なDRAM帯域幅の95.9%を活用し、メモリサブシステムをほぼ飽和状態に近づけた。
- SMASH V3では、V1と比較して命令スループットが155%向上し、計算効率が向上し、アイドルサイクルが削減された。
- プロデューサ・コンシューマーモデルによる効果的なワークロードバランスのおかげで、SMASH V3ではスレッド利用率がほぼ100%に達した。これは、バランスの取れていないV1と比べて顕著な性能向上を示した。
- メモリ内ハッシュテーブルの使用により、部分積の即時マージが可能になり、中間保存領域の必要性が排除され、メモリフットプリントとアクセスオーバーヘッドが削減された。
- ハッシュ化の衝突によるホットスポットリスクはあり得るが、帯域幅の飽和とロードバランスの恩恵が、衝突解決のオーバーヘッドを上回る性能向上をもたらした。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。