2016-10-14 4 views
2

私はMPIが初めてのので、私のシステムの性能を推論するためにMPI(および特にOpenMPI)がどのように機能するのかを理解しようとしています。OpenMPIはどのように機能しますか?

私は物事を少し良く理解するのに役立つオンライン資料を探してみましたが、運があまりありませんでした。私はここに来ると思った。

私は3ノード(1マスター、2クライアント)があり、MPI_Gatherを発行すると、ルートプロセスが受信データを順次または同時に処理するのですか?言い換えれば、プロセス1がプロセス0と最初に接続する場合、プロセス1はデータの送信を開始する前にプロセス1が完了するまで待機する必要がありますか?

ありがとうございます!

答えて

1

OpenMPIには、集合演算を実装する複数のコンポーネントがあり、その中には、各演算の実装に複数のアルゴリズムを提供するものがあります。

collフレームワークのtunedコンポーネントは、Open MPIがデフォルトで使用するフレームワークです。 tunedは、ポイントツーポイント演算を使用して、すべての集団を実装し、収集するためのいくつかのアルゴリズムを提供する:同期と

  • リニア - メッセージは、二項
  • 中型に大きいときに使用される - プロセスの数が多い場合に使用します他のすべての場合

各アルゴリズムの性能は、メッセージサイズとランクの数の特定の組み合わせに強く依存して使用、したがって、ライブラリCOM - またはメッセージのサイズは小さく

  • 基本的な線形であります上記のように、データサイズとコミュニケータのサイズに基づいて最適なアルゴリズムを決定しようとする一連のヒューリスティックを使用します。ヒューリスティックを無効にし、特定のアルゴリズムを強制するか、カスタムアルゴリズム選択ルールのリストを提供するためのメカニズムがいくつかあります。

    基本的な線形アルゴリズムは、メッセージを順番に受信する他のすべてのランクよりも単純にルートループを持ちます。その場合、ランク2は、ランク1よりも先にそのチャンクを送信することができない。なぜなら、ルートは最初にランク1からメッセージを受信し、次にランク2に移動するからである。

    リニア同期アルゴリズムは、それぞれ2つに分かれています。最初の部分は、基本線形アルゴリズムと同様に順番に収集されます。第2の部分は、ノンブロッキング受信を使用して非同期的に収集されます。

    2項アルゴリズムは、ランクを2項ツリーとして整列させます。ツリーのノードのプロセスは、下位レベルからのチャンクを受け取り、それらをより大きなチャンクに集約し、ルート・ランクに達するまで上位レベルに渡されます。

    tunedモジュールのソースコードはOpen MPI source treeompi/mca/coll/tunedフォルダにあります。開発ブランチでは、tunedコンポーネントの一部が集合フレームワークの基本実装に昇格し、ギャザーのコードは代わりにompi/mca/coll/baseにあります。

  • +0

    驚くべき回答!ありがとう、トン! –

    -1

    もちろん、Hristoの答えは優れていますが、私は異なる視点を提供したいと思います。

    あなたの期待に反して、質問は簡潔ではありません。 Hristo氏が指摘したように、システムの詳細を知らなくても具体的に答えることさえできません。それは質問が無効であることを意味するわけではありませんが、異なるレベルでパフォーマンスについて推論する必要があります。

    最初に、収集操作の複雑さを考慮してください。ルートへのネットワーク転送とメモリ要件は、コミュニケータのプロセス数とともに直線的に増加します。これは当然スケーラビリティを制限します。より良いあなたが手でそれを行うことよりも -

    第二に、あなたはあなたのMPIの実装が可能な限り最も効率的な方法でMPI_Gatherを実装しないと仮定してよいです。この仮定は非常に間違っているかもしれませんが、あなたのプログラムを書いておくのが最良の出発点です。

    あなたのプログラムをお持ちの場合は、どこで時間が費やされたか、または無駄になったかを測定して見てください。そのためには、MPI performanceanalysis toolsとする必要があります。 Gatherがパフォーマンスに重大な影響を与えていることが分かった場合は、先に進んで最適化を試みることができます。まず、コミュニケーションを概念的によりうまく構築できるかどうかを検討してください。何らかの形で計算を一括して削除するか、代わりに巧妙な削減を使用してください。まだ収集に固執する必要がある場合は、まずMPI実装を調整してください。その後、最適化が実際に特定のシステムのパフォーマンスを向上させたことを確認します。

    +0

    誰もがdownvoteを説明する気に? – Zulan

    関連する問題