Skip to main content
QUICK REVIEW

[論文レビュー] Towards an Efficient Tile Matrix Inversion of Symmetric Positive Definite Matrices on Multicore Architectures

Emmanuel Agullo, Henricus Bouwmeester|arXiv (Cornell University)|Feb 22, 2010
Parallel Computing and Optimization Techniques参考文献 9被引用数 5
ひとこと要約

本稿では、動的タスクスケジューラーを用いてマルチコアアーキテクチャ上で対称正定値行列の逆行列を計算するタイルベースのアルゴリズムを提示する。配列名前の変更、ループの反転、パイプライン処理といったコンパイラ技術を用いてアンチ依存性とクリティカルパス長を低減することで、高いスケーラビリティとパフォーマンスを達成し、最大8コアのマルチコアシステムにおいて最新のライブラリを上回る性能を発揮する。

ABSTRACT

The algorithms in the current sequential numerical linear algebra libraries (e.g. LAPACK) do not parallelize well on multicore architectures. A new family of algorithms, the tile algorithms, has recently been introduced. Previous research has shown that it is possible to write efficient and scalable tile algorithms for performing a Cholesky factorization, a (pseudo) LU factorization, and a QR factorization. In this extended abstract, we attack the problem of the computation of the inverse of a symmetric positive definite matrix. We observe that, using a dynamic task scheduler, it is relatively painless to translate existing LAPACK code to obtain a ready-to-be-executed tile algorithm. However we demonstrate that non trivial compiler techniques (array renaming, loop reversal and pipelining) need then to be applied to further increase the parallelism of our application. We present preliminary experimental results.

研究の動機と目的

  • 現代のマルチコアアーキテクチャ上で、対称正定値行列の逆行列を効率的に計算する課題に対処すること。
  • タイルアルゴリズムにおける並列性を妨げるアンチ依存性を克服すること。
  • コンパイラ技術(配列名前の変更、ループの反転、パイプライン処理)がパフォーマンスとスケーラビリティに与える影響を評価すること。
  • 動的スケジューリングが、手動での静的スケジューリングなしに複数の逆行列ステップのパイプライン処理を効果的に行えることを示すこと。
  • 共有メモリ型マルチコアシステム上で、既存のライブラリを上回る高いパフォーマンスと強いスケーラビリティを達成すること。

提案手法

  • アルゴリズムは、行列を小さなブロック(例:b=200)にタイル分解することで、細粒度の並列性を実現する。
  • 実行時におけるデータ依存関係を管理するために動的タスクスケジューラーを活用し、静的スケジューリングの複雑さを回避する。
  • 配列名前の変更により、一時的なデータコピーを用いてアンチ依存性(例:読んだ後に書く)を排除し、クリティカルパス長を短縮する。
  • 可換なGEMM演算の順序を再配置するためにループの反転を適用し、各アルゴリズムステップにおけるクリティカルパスを最小化する。
  • 逆行列計算の3段階(コレスキー分解、連立一次方程式の解法、更新)にわたるパイプライン処理を適用し、タスクレベルの並列性を向上させる。
  • 実装はPLASMAライブラリに統合され、8コアのデュアルソケットクアッドコアIntel Xeonシステム上で評価された。

実験結果

リサーチクエスチョン

  • RQ1アンチ依存性が顕著に現れる行列逆行列処理において、タイルアルゴリズムをどのように拡張できるか?
  • RQ2配列名前の変更とループの反転が、行列逆行列処理における並列性の向上とクリティカルパス長の短縮にどの程度寄与するか?
  • RQ3手動での静的スケジューリングなしに、動的スケジューラーが行列逆行列処理の3段階を効果的にパイプライン処理できるか?
  • RQ4本稿で提案するアルゴリズムは、現代のマルチコアシステムにおいて、既存のライブラリと比較してどの程度のパフォーマンス向上を達成できるか?
  • RQ5ループの順序(増加順 vs 減少順)の選択が、クリティカルパスと実行時間にどのように影響するか?

主な発見

  • 配列名前の変更を適用したアウト・オブ・プレイス版は、特に小さな行列(例:N=1000)において、イン・プレース版よりも顕著に高い強力スケーラビリティを達成した。これは並列性が高いためである。
  • 4000×4000行列においては、7コアまで両バージョンのパフォーマンスは類似していたが、アウト・オブ・プレース版は8コアすべてをより効率的に活用した。
  • ループの反転により、TRTRIのクリティカルパスはO(t²)からO(t)に短縮された。特にUDU順序(増加、減少、増加)が、ナイーブなUUU順序と比較してパス長を最小化した。
  • パイプライン処理により、イン・プレースでは9t−7から9t−9タスク、アウト・オブ・プレースでは6t−3から5t−2タスクにクリティカルパスが短縮されたが、イン・プレースではオーバーヘッドが低いため、パフォーマンスへの影響は限定的であった。
  • b=2000の8000×8000行列において、パイプライン処理を無効化するとアウト・オブ・プレース版の実行時間が16%延長(25.1秒から29.2秒)された。これはパイプライン処理のパフォーマンス上の利点を確認するものであった。
  • 動的スケジューラーにより自動的なパイプライン処理が可能となったが、ループの反転や配列名前の変更は手動によるアルゴリズム変更を要した。今後の研究として、自動最適化の実装が示唆された。

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

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

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

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