Skip to main content
QUICK REVIEW

[論文レビュー] Implementing Strassen's Algorithm with BLIS

Jianyu Huang, Tyler Smith|arXiv (Cornell University)|May 3, 2016
Parallel Computing and Optimization Techniques参考文献 14被引用数 6
ひとこと要約

本論文は、BLISフレームワーク内でのストラッセン行列乗算アルゴリズムの新規で高性能な実装を提示しており、外部のワークスペースを必要とせず、標準BLASインタフェースを変更せずに、小規模な行列やランク-k更新(LAPACKで一般的)に対しても、古典的DGEMMを上回る性能を達成している。このアプローチは最適化されたメモリタイリングと再帰的サブマトリクス操作を活用し、データ移動のオーバーヘッドを低減することで、Intel Xeon Phiを含むマルチコアおよびマニーコアアーキテクチャ上で顕著なスループット向上を実現している。

ABSTRACT

We dispel with "street wisdom" regarding the practical implementation of Strassen's algorithm for matrix-matrix multiplication (DGEMM). Conventional wisdom: it is only practical for very large matrices. Our implementation is practical for small matrices. Conventional wisdom: the matrices being multiplied should be relatively square. Our implementation is practical for rank-k updates, where k is relatively small (a shape of importance for libraries like LAPACK). Conventional wisdom: it inherently requires substantial workspace. Our implementation requires no workspace beyond buffers already incorporated into conventional high-performance DGEMM implementations. Conventional wisdom: a Strassen DGEMM interface must pass in workspace. Our implementation requires no such workspace and can be plug-compatible with the standard DGEMM interface. Conventional wisdom: it is hard to demonstrate speedup on multi-core architectures. Our implementation demonstrates speedup over conventional DGEMM even on an Intel(R) Xeon Phi(TM) coprocessor utilizing 240 threads. We show how a distributed memory matrix-matrix multiplication also benefits from these advances.

研究の動機と目的

  • ストラッセンのアルゴリズムが小規模な行列や非正方形状に対して実用的でないという一般的な常識を挑戦し、覆すこと。
  • ストラッセンベースのDGEMMが標準BLASインタフェースと直接互換可能であるようにすることにより、明示的なワークスペース引数の必要性を排除すること。
  • Intel Xeon Phiを含む現代のマルチコアおよびマニーコアシステムで高い性能を発揮することを目的とし、追加のメモリ割り当てを伴わないこと。
  • SUMMAベースの実装との統合を通じて、分散メモリ環境へのストラッセンのアルゴリズムの応用を拡張すること。
  • ストラッセンがLAPACKのような高性能線形代数ライブラリで効果的に利用可能であることを示し、特にランク-k更新において優れた性能を発揮すること。

提案手法

  • 著者らは、サブマトリクス分割を用いた再帰的ストラッセンスタイルの行列乗算を可能にするために、BLISフレームワークのマイクロカーネルおよびパッケージングルーチンを変更した。
  • 2×2ブロック分割を用いた再帰的で分割統治型のアプローチを採用し、サブマトリクスに対してストラッセンの7つの乗算式を適用した。
  • ABCストラッセンバージョンを採用することで、一時的なストレージを最小限に抑え、高性能DGEMM実装に既に存在するバッファのみを必要とした。
  • 従来のDGEMMで用いられるマルチスレッディングおよびキャッシュブロッキング戦略と、シームレスに統合された。
  • メモリレベル間のデータ移動を再編成することで性能を最適化し、追加の算術演算およびメモリトラフィックの影響を低減した。
  • 単一レベルおよび複数レベルの再帰をサポートし、パフォーマンスは予測コストモデルを用いてチューニングされた。

実験結果

リサーチクエスチョン

  • RQ1ストラッセンのアルゴリズムは、ランク-k更新で生じるような小規模な行列や非正方形状に対しても実用的であるか?
  • RQ2高性能DGEMMで既に使用されているメモリ領域を超えて追加のワークスペースを必要とせずに、ストラッセンのアルゴリズムを実装することは可能か?
  • RQ3Intel Xeon Phiのようなマルチコアおよびマニーコアアーキテクチャ上で、インタフェースの変更なしにストラッセンベースの乗算が高速化を達成できるか?
  • RQ4ストラッセンの性能は、LAPACKおよびScaLAPACKで一般的な行列形状を含め、さまざまな行列形状において古典的DGEMMと比較してどのように異なるか?
  • RQ5スケーラビリティを損なわずに、SUMMAのような分散メモリ並列実装にストラッセンのアルゴリズムを効率的に統合できるか?

主な発見

  • ABCストラッセン実装は、1600×1600の行列ですら、ストラッセンが大規模な行列にのみ有用であるという一般的な信念に反して、古典的DGEMMを上回る性能を発揮した。
  • 小さな内次元(例:k=1024)を持つランク-k更新では、ABCストラッセンアルゴリズムが古典的DGEMMを上回る性能を発揮し、LAPACKスタイルの計算に最適であることが示された。
  • 高性能DGEMMで既に使用されているメモリ領域を超えて追加のワークスペースを必要としないため、標準BLASインタフェースと直接互換可能な統合が可能となった。
  • 240スレッドを備えたIntel Xeon Phi上で、ストラッセン実装は古典的DGEMMに対して測定可能な高速化を示し、マニーコアシステム上での実用性を裏付けた。
  • SUMMAを用いた分散メモリ環境では、ABCストラッセンアルゴリズムがローカルgemmカーネルとして使用された際、ランク-k更新に有利な行列形状において最良のパフォーマンスを発揮した。
  • 予測コストモデルは、異なる行列サイズおよび再帰レベルにおけるパフォーマンスを正確に予測でき、設計選択の妥当性を検証するとともに最適化を可能にした。

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

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

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

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