Skip to main content
QUICK REVIEW

[論文レビュー] Automating the Last-Mile for High Performance Dense Linear Algebra

Richard Veras, Tze Meng Low|arXiv (Cornell University)|Nov 24, 2016
Parallel Computing and Optimization Techniques参考文献 18被引用数 6
ひとこと要約

本論文は、密行列積(Gemm)カーネルのコアとなる外積計算に焦点を当て、分析的でモデル駆動のアプローチを提案し、高パフォーマンスなSIMDマイクロカーネルを自動生成する。命令レベル並列性とレジスタ使用のモデル化により、経験的チューニングを必要とせず、複数のアーキテクチャでOpenBLAS性能の95–100%を達成しながらTLB効率を維持する。

ABSTRACT

High performance dense linear algebra (DLA) libraries often rely on a general matrix multiply (Gemm) kernel that is implemented using assembly or with vector intrinsics. In particular, the real-valued Gemm kernels provide the overwhelming fraction of performance for the complex-valued Gemm kernels, along with the entire level-3 BLAS and many of the real and complex LAPACK routines. Thus,achieving high performance for the Gemm kernel translates into a high performance linear algebra stack above this kernel. However, it is a monumental task for a domain expert to manually implement the kernel for every library-supported architecture. This leads to the belief that the craft of a Gemm kernel is more dark art than science. It is this premise that drives the popularity of autotuning with code generation in the domain of DLA. This paper, instead, focuses on an analytical approach to code generation of the Gemm kernel for different architecture, in order to shed light on the details or voo-doo required for implementing a high performance Gemm kernel. We distill the implementation of the kernel into an even smaller kernel, an outer-product, and analytically determine how available SIMD instructions can be used to compute the outer-product efficiently. We codify this approach into a system to automatically generate a high performance SIMD implementation of the Gemm kernel. Experimental results demonstrate that our approach yields generated kernels with performance that is competitive with kernels implemented manually or using empirical search.

研究の動機と目的

  • アーキテクチャ固有のGemmマイクロカーネルを手作業で実装するという、伝統的に『暗黒の芸術』と見なされてきた『最後のマイル』の課題に対処すること。
  • 経験的自動チューニングから、特に外積計算と命令レベル並列性に焦点を当てたマイクロカーネルパフォーマンスの分析的モデル化へのシフトを図ること。
  • レジスタのオーバーフローを避けることで、大規模なGemmアルゴリズムにおけるTLBミス回避の特性を損なわない高パフォーマンスなマイクロカーネルを生成すること。
  • 分析的モデル化が、OpenBLASのような手作業で最適化された実装と同等のパフォーマンスを達成できるマイクロカーネルを生成できることを示すこと。

提案手法

  • マイクロカーネルを外積計算を表す原子的「ユニット更新」に分解し、分析的モデルを用いてパフォーマンスを分析する。
  • 命令レベル並列性は、フェッチ/デコード段階と実行段階のボトルネックを最小限に抑えるようにSIMD命令をスケジューリングする分析によりモデル化する。
  • ソフトウェアパイipelニングにおけるN更新のオーバーラップを変化させることで、レジスタ圧力とオーバーフローを分析的に評価し、PAPIを用いてパフォーマンスとTLBミス数を測定する。
  • 静的スケジューリングモデルを用いて、各マイクロカーネルバリアントの実行時間を推定し、経験的探索を伴わずに最適な構成を選択する。
  • 生成されたマイクロカーネルは、GotoBLAS/BLISアルゴリズムに埋め込まれ、データ移動効率と最小限のTLBミスを保証する。
  • 本アプローチは、マイクロカーネルが大規模なGemmスタックに適合し、特にTLB挙動においてそのパフォーマンス特性を損なわないことを保証する。

実験結果

リサーチクエスチョン

  • RQ1経験的チューニングに依存せずに、分析的モデルがSIMD最適化Gemmマイクロカーネルのパフォーマンスを正確に予測できるか?
  • RQ2マイクロカーネル内のレジスタオーバーフローが、GotoBLAS/BLISフレームワークにおけるTLBミス率と全体的なGemmパフォーマンスに与える影響は何か?
  • RQ3外積計算に最適な命令スケジューリング戦略は何か? これにより、SIMDユニットの利用度を最大化し、パイプラインのボトルネックを最小限に抑えることができるか?
  • RQ4モデルベースのコード生成システムが、OpenBLASのような専門家が最適化した実装と同等のパフォーマンスを達成するマイクロカーネルを生成できるか?

主な発見

  • 分析的モデルは、網羅的探索や自動チューニングを必要とせず、高パフォーマンスなマイクロカーネル構成を的確に同定できた。
  • 生成されたマイクロカーネルは、複数のアーキテクチャでOpenBLAS性能の95–100%を達成し、専門家が最適化した実装と同等の競争力を持つことが示された。
  • レジスタオーバーフローは、メモリ遅延による影響に加え、TLBミスを増加させることで、全体のGemmパフォーマンスを顕著に低下させる。これは、アルゴリズムがTLB効率を最適化するように設計されていることと対照的である。
  • 非一様なN更新サイズは、フェッチおよびデコード段階のボトルネックを引き起こす大きな命令クラスタを生じさせ、パフォーマンスを低下させる。
  • モデルベースのアプローチは、GotoBLAS/BLISアルゴリズムのTLBミス回避特性を保持しており、エンドツーエンドのパフォーマンスにとって極めて重要である。
  • Xeon PhiのようなSMPシステムで並列化された場合、生成されたマイクロカーネルはOpenBLASと同程度にスケーリングされ、優れた移植性とパフォーマンスの移植性を示した。

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

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

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

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