[論文レビュー] A Class of Parallel Tiled Linear Algebra Algorithms for Multicore Architectures
本稿では、細粒度のタスク並列処理と非同期実行を活用することで、マルチコアアーキテクチャ上で高いパフォーマンスを達成する、タイリング処理を施したデータ駆動型線形代数アルゴリズムのクラスを提示する。コレスキー、LU、QR分解を正方形のブロック上で動作する小さな動的スケジューリングタスクに分解することで、順序処理のボトルネックを隠蔽し、ベンダーオプティマイズ済みBLASベースの実装および従来のフォーク・ジョインモデルと比較して最大50%の性能向上を達成する。
As multicore systems continue to gain ground in the High Performance Computing world, linear algebra algorithms have to be reformulated or new algorithms have to be developed in order to take advantage of the architectural features on these new processors. Fine grain parallelism becomes a major requirement and introduces the necessity of loose synchronization in the parallel execution of an operation. This paper presents an algorithm for the Cholesky, LU and QR factorization where the operations can be represented as a sequence of small tasks that operate on square blocks of data. These tasks can be dynamically scheduled for execution based on the dependencies among them and on the availability of computational resources. This may result in an out of order execution of the tasks which will completely hide the presence of intrinsically sequential tasks in the factorization. Performance comparisons are presented with the LAPACK algorithms where parallelism can only be exploited at the level of the BLAS operations and vendor implementations.
研究の動機と目的
- マルチコアアーキテクチャにおける従来のLAPACKおよびScaLAPACKライブラリの拡張性の制限を解消すること。特に、並列化がBLASレベルの操作に限定されている点を改善する。
- 従来のブロックアルゴリズムにおける粗粒度並列処理と同期オーバーヘッドが引き起こすパフォーマンスボトルネックを克服すること。
- 細粒度並列処理と非同期実行を活用して、マルチコアシステムにおけるデータ局所性の向上とメモリ遅延の隠蔽を実現すること。
- タイリング処理と動的タスクスケジューリングを用いたアルゴリズムが、標準LAPACK実装およびIntel MKLのような最適化済みベンダーライブラリを上回る性能を発揮することを実証すること。
提案手法
- 密行列線形代数分解(コレスキー、LU、QR)を、正方形のタイルデータ上で動作する小さな独立タスクのシーケンスに分解する。
- タスクの依存関係を明示的に表現することで、動的スケジューリングを支援する有向無閉路グラフ(DAG)として計算をモデル化する。
- 実行時システムを用いて、データの可用性とリソースの可用性に基づきタスクを非同期にスケジューリングし、順不同実行を可能にする。
- データ再利用、負荷分散、BLAS効率のバランスを取るために、タイルサイズおよび内部ブロッキングサイズを最適化し、オーバーヘッドを最小限に抑える。
- ハードウェア特性とワークロード分布に適応可能なランタイムによる変更を可能にするタスクベースプログラミングモデルを採用する。
- PLASMAベースの実行時システムを用いてパフォーマンスを評価し、タイリング処理アルゴリズムをLAPACKブロックアルゴリズムおよびベンダーオプティマイズ済みBLASライブラリと比較する。
実験結果
リサーチクエスチョン
- RQ1細粒度でタイリング処理されたアルゴリズムに動的タスクスケジューリングを適用した場合、マルチコアシステム上で従来のBLASベースでフォーク・ジョイン並列処理を行うものと比較して、性能が向上するか?
- RQ2非同期実行と順不同タスクスケジューリングは、分解アルゴリズムにおける本質的に順序処理である操作の遅延をどの程度隠蔽できるか?
- RQ3タイルサイズおよび内部ブロッキングサイズの選定が、タイリング処理された線形代数カーネルのパフォーマンスおよび数値的安定性に与える影響はいかほどか?
- RQ4特に小規模な問題サイズにおいて、タイリング処理アルゴリズムがIntel MKLのようなベンダーオプティマイズ済みBLASライブラリを上回るパフォーマンスを発揮できるか?
- RQ5問題サイズおよびコア数の変化に伴うタイリング処理アルゴリズムのスケーラビリティ特性はどのようなものか?
主な発見
- 非同期実行を伴うタイリング処理アルゴリズムは、マルチスレッドBLASを用いたLAPACKブロックアルゴリズムと比較して約50%の高いパフォーマンスを達成し、同様の操作を最適化済みベンダーライブラリを上回った。
- コレスキー分解において、タイリング処理アプローチは、効率の悪い行入れ替えにより性能が著しく低下するLAPACKのleft-lookingバージョンを顕著に上回った。
- LU分解において、タイリング処理アプローチはLAPACKおよびMKLよりも速やかに漸近的パフォーマンスに到達し、並列化オーバーヘッドが低減されたことにより、小規模な問題サイズで顕著な高速化を達成した。
- LU分解におけるタイリング処理アルゴリズムとIntel MKL-9.1とのパフォーマンス差は、主に非効率なペアワイズピボット処理と最適でない内部ブロッキングサイズに起因し、計算オーバーヘッドが増加していた。
- タイリング処理アルゴリズムのフロップ数は、1 + s/(2b) の要因で増加したが、内部ブロッキングサイズ s を小さくすることでこのコストを最小限に抑え、高い効率を維持できた。
- 弱スケーラビリティの結果から、コア数の増加に伴ってもタイリング処理アルゴリズムは高いパフォーマンスを維持した。これは、効果的な負荷分散とリソース利用の高さを示している。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。