Skip to main content
QUICK REVIEW

[論文レビュー] Tuning MPI Collectives by Verifying Performance Guidelines

Sascha Hunold, Alexandra Carpen-Amarie|arXiv (Cornell University)|Jul 31, 2017
Parallel Computing and Optimization Techniques参考文献 3被引用数 4
ひとこと要約

本稿では、自己整合性のあるパフォーマンス指針に基づき、非効率なMPI集約関数を意味的に同等のモックアップ関数に置き換えることで、MPI集約演算を自動的にチューニングするランタイムライブラリであるPGMPITuneLibを提案する。実際のMPIパフォーマンスとこれらの指針を比較することで、システムはより高速なアルゴリズム的パターンを特定・適用し、チューナブルパラメータを持たないMPIライブラリですら、多様なMPIライブラリにおいて顕著な遅延低減を実現する。

ABSTRACT

MPI collective operations provide a standardized interface for performing data movements within a group of processes. The efficiency of collective communication operations depends on the actual algorithm, its implementation, and the specific communication problem (type of communication, message size, number of processes). Many MPI libraries provide numerous algorithms for specific collective operations. The strategy for selecting an efficient algorithm is often times predefined (hard-coded) in MPI libraries, but some of them, such as Open MPI, allow users to change the algorithm manually. Finding the best algorithm for each case is a hard problem, and several approaches to tune these algorithmic parameters have been proposed. We use an orthogonal approach to the parameter-tuning of MPI collectives, that is, instead of testing individual algorithmic choices provided by an MPI library, we compare the latency of a specific MPI collective operation to the latency of semantically equivalent functions, which we call the mock-up implementations. The structure of the mock-up implementations is defined by self-consistent performance guidelines. The advantage of this approach is that tuning using mock-up implementations is always possible, whether or not an MPI library allows users to select a specific algorithm at run-time. We implement this concept in a library called PGMPITuneLib, which is layered between the user code and the actual MPI implementation. This library selects the best-performing algorithmic pattern of an MPI collective by intercepting MPI calls and redirecting them to our mock-up implementations. Experimental results show that PGMPITuneLib can significantly reduce the latency of MPI collectives, and also equally important, that it can help identifying the tuning potential of MPI libraries.

研究の動機と目的

  • 従来のパrameterチューニングが、公開されたパラメータの欠如や複雑な探索空間のため実行不可能な場合に、MPIコラボレーティブのパフォーマンス最適化の課題に対処すること。
  • ライブラリ固有のハードコードされたアルゴリズム選択戦略に依存する既存のチューニング手法の制限を克服すること。
  • 自己整合性のあるパフォーランス指針を用いて、MPIライブラリのパフォーマンス劣化を検出・是正する、ポータブルでライブラリに依存しない手法を提供すること。
  • 意味的に同等の最適化されたモックアップ関数と比較することで、非最適なMPI実装を自動的に特定すること。
  • Open MPIのような広く使われているMPIライブラリでも、アルゴリズム選択がユーザーで設定できない状況においても、パフォーマンス向上が達成可能であることを示すこと。

提案手法

  • 特定のMPI集約関数(例:MPI_Allgather)は、より一般的な同等関数(例:MPI_Allgatherv)よりも遅くならないという自己整合性のあるパフォーマンス指針を定義する。
  • 各指針を、より効率的なアルゴリズム的パターンを用いて対応するMPI集約関数の動作をエミュレートするモックアップ関数として実装する。
  • MPI関数呼び出しをインターセプトし、パフォーマンスプロファイリングに基づいて最適なモックアップバージョンにリダイレクトするランタイムライブラリとしてPGMPITuneLibを構築する。
  • 実行時における各モックアップバージョンのパフォーマンスをプロファイリングし、メッセージサイズおよびプロセス数に応じた最速の実装を特定する。
  • パフォーマンスプロファイルを用いて、実行時にデフォルトのMPI実装を最適なモックアップバージョンに動的に置き換える。
  • 元のMPI関数とモックアップ実装との間で意味的同等性を維持することで正しさを保証する。

実験結果

リサーチクエスチョン

  • RQ1パフォーマンス指針は、MPI集約実装における非効率性を検出する信頼性の高い基準として機能するか?
  • RQ2パフォーマンス指針に基づくモックアップ実装は、デフォルトのMPIライブラリ実装をどの程度上回るか?
  • RQ3このアプローチは、アルゴリズムチューニングパラメータを公開しないMPIライブラリにも適用可能か?
  • RQ4この方法は、Open MPIのような実世界のMPIライブラリにおいて、指針違反の特定・是正にどの程度有効か?
  • RQ5この自動チューニング戦略を用いることで、さまざまなハードウェアプラットフォームでどの程度のパフォーマンス向上が達成できるか?

主な発見

  • PGMPITuneLibは、複雑なメモリ階層を持つすべてのテスト対象システムにおいて、MPI集約演算の遅延を顕著に低減した。
  • Open MPIのようなライブラリにおいても、デフォルト実装が意味的に同等の代替実装よりも遅いという指針違反を同定・是正した。
  • ユーザーがチューニング可能なパラメータを持たないライブラリに対しても、PGMPITuneLibは非効率なアルゴリズムを最適化されたモックアップに置き換えることで顕著なパフォーマンス向上を達成した。
  • 一部のMPIライブラリが、より良い代替アルゴリズムが存在するにもかかわらず、非最適なアルゴリズムを使用していることが明らかになった。これは、自動チューニングの必要性を浮き彫りにした。
  • PGMPITuneLibが生成するパフォーマンスプロファイルは、実行間で再利用可能であり、一貫性があり再現可能なパフォーマンス向上を実現した。
  • この方法は、基盤となるMPIライブラリがアルゴリズム設定オプションを公開しているかどうかに関係なく、ポータブルかつ効果的である。

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

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

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

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