Skip to main content
QUICK REVIEW

[論文レビュー] Implementing Strassen's Algorithm with CUTLASS on NVIDIA Volta GPUs

Jianyu Huang, Chenhan D. Yu|arXiv (Cornell University)|Aug 24, 2018
Parallel Computing and Optimization Techniques参考文献 21被引用数 9
ひとこと要約

本稿では、CUTLASSを用いてNVIDIA Volta GPU上でStrassenのアルゴリズムを新規に実装し、GEMMカーネルの共有メモリおよびレジスタファイルを再利用することで、追加のワークスペースを回避する、記憶容量効率の高い実装を提示する。融合演算、タスクベース並列処理、および予測性能モデルを活用することで、1レベルStrassenでは1,536のブレークイーブンポイントでcublasSgemmを最大1.11倍高速化し、2レベルStrassenでは7,680のブレークイーブンポイントで1.19倍の高速化を達成する。

ABSTRACT

Conventional GPU implementations of Strassen's algorithm (Strassen) typically rely on the existing high-performance matrix multiplication (GEMM), trading space for time. As a result, such approaches can only achieve practical speedup for relatively large, "squarish" matrices due to the extra memory overhead, and their usages are limited due to the considerable workspace. We present novel Strassen primitives for GPUs that can be composed to generate a family of Strassen algorithms. Our algorithms utilize both the memory and thread hierarchies on GPUs, reusing shared memory and register files inherited from GEMM, fusing additional operations, and avoiding extra workspace. We further exploit intra- and inter-kernel parallelism by batching, streaming, and employing atomic operations. We also develop a performance model for NVIDIA Volta GPUs to select the appropriate blocking parameters and predict the performance for GEMM and Strassen. Overall, our 1-level Strassen can achieve up to 1.11x speedup with a crossover point as small as 1,536 compared to cublasSgemm on a NVIDIA Tesla V100 GPU. With additional workspace, our 2-level Strassen can achieve 1.19x speedup with a crossover point at 7,680.

研究の動機と目的

  • GPU上でのStrassenのアルゴリズムの実用的制限、特にワークスペース要件に起因する高いメモリオーバーヘッドと限られた問題サイズを克服すること。
  • 追加のグローバルメモリおよび共有メモリ使用を排除することで、小規模かつ非正方行列に対しても従来のGEMMを上回るStrassenの実装を可能にすること。
  • カーネル内およびカーネル間の並列処理を、バッチ処理、ストリーミング、およびアトミック操作を用いて活用し、カーネル起動オーバーヘッドを増加させずに実現すること。
  • 最適なブロッキングパラメータ選択を支援し、実行時間性能を予測するための、Vola GPU用の正確な性能モデルを開発すること。
  • 現代のGPU上で、最小限のメモリフットプリントと高い演算強度を実現し、小規模な問題サイズでも効率的に実装可能なStrassenの実装の実現可能性を示すこと。

提案手法

  • GEMMパイプラインに直接メモリ操作と算術演算を統合し、既存の共有メモリおよびレジスタファイルを再利用することで、追加のワークスペースを排除する新しいGPU用Strassenカーネルの設計。
  • カーネル特化と演算統合によるレジスタ使用の最適化により、レジスタ圧力を低減しながらも高い占有率を維持すること。
  • スレッドブロック、ワープ、スレッド間のカーネル内並列処理と、バッチ処理およびストリーミングによるカーネル間並列処理を活用し、計算とメモリ帯域幅のオーバーラップを実現すること。
  • アトミック操作を用いてStrassen計算グラフ内の同時更新を管理し、拡張可能なタスクベース並列処理を可能にすること。
  • 算術強度、メモリ操作、レジスタ使用に基づくVola GPU用の性能モデルを構築し、性能予測と最適なブロックサイズ選択を可能にすること。
  • メモリアクセスパターンとオペランドプリフェッチを注意深く設計し、遅延を最小限に抑え、オーバーラップを最大化する1レベルおよび2レベルStrassen実装を実装すること。

実験結果

リサーチクエスチョン

  • RQ1GPU上に、標準GEMMに追加するグローバルメモリまたは共有メモリのワークスペースを必要とせずに、Strassenのアルゴリズムを実装できるか?
  • RQ2追加メモリを使用しない場合、現代のVola GPU上でStrassenがcublasSgemmを上回る最小の行列サイズは何か?
  • RQ3Strassenにおいて、カーネル内およびカーネル間の並列処理を効果的に活用することで、高い占有率を維持し、メモリ遅延を隠蔽できるか?
  • RQ4算術強度およびメモリ操作に基づく性能モデルが、Vola GPU上でのStrassen性能をどれほど正確に予測できるか?
  • RQ5ブロッキングパラメータの選択が、GEMMに対するStrassen性能に与える影響は何か?また、それらを最適化するにはどうすればよいか?

主な発見

  • 1レベルStrassen実装は、Tesla V100 GPU上で1,536のブレークイーブンポイントを達成し、1,536×1,536の行列に対してもcublasSgemmを上回る性能を発揮する。
  • 2レベルStrassen実装は、ブレークイーブンポイントが7,680に達し、cublasSgemmを最大1.19倍の高速化を達成する。これは、先行する最先端手法が要請する13,312よりも顕著に低い値である。
  • 本実装は、標準GEMMと同一の追加グローバルメモリおよび共有メモリを消費するため、ワークスペース関連のメモリバッティングを完全に排除する。
  • 性能モデルは、実行時間性能を正確に予測し、GEMMおよびStrassenカーネルの最適なブロッキングパラメータ選択を支援する。
  • 演算の統合とメモリフェーズおよび計算フェーズのオーバーラップにより、高い算術強度を達成し、メモリ帯域幅制限の影響を低減する。
  • 本手法は、従来の実装がメモリおよび性能オーバーヘッドのため競争力がなかった小規模かつ非正方行列においても、GPU上でのStrassenの実用的実装の可能性を示している。

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

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

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

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