4

これは、MPI の特定の技術コーディングの側面に関する質問ではありません。私は MPI の初心者であり、ライブラリを間違った方法で使用して自分を馬鹿にしたくないので、ここに質問を投稿します。

私の知る限り、MPI は分散メモリ モデルで並列アプリケーションを構築するための環境です。

非常に時間のかかる操作を行うためだけに、Infiniband と相互接続されたシステムがあります。私はすでにそれを並行して実行するアルゴリズムを作成しているので、実際には MPI を使用して Infiniband を介して複数のノード間でデータ (中間ステップの結果) を送信しているだけです。

MPI を正しい方法で使用していますか? それとも、システムの本来の意図を曲げていますか?

4

3 に答える 3

5

アルゴリズムで MPI_Send と MPI_Recv だけを使用しても問題ありません。アルゴリズムが進化するにつれて、より多くの経験が得られます。Gather、Reduce などのバリアや集団通信など、より「高度な」MPI 機能の用途が見つかるかもしれません。

于 2011-09-22T22:27:36.013 に答える
4

作業を完了するために使用する必要のあるMPI構造が少なくて単純であればあるほど、問題に適したMPIが得られます。ほとんどのライブラリと言語については、実際問題として、そして間違いなく抽象化の問題として言えます。

はい、生のOpenIB呼び出しを記述して作業を行うこともできますが、イーサネットクラスター、巨大な共有メモリマシン、または次の大きな相互接続に移行する必要がある場合はどうなりますか?MPIはミドルウェアであるため、その大きなセールスポイントの1つは、ネットワークレベルのコードの記述に時間を費やす必要がないことです。

于 2011-09-28T12:59:15.203 に答える
0

複雑さの範囲の反対側で、MPI を使用しないのは、問題または解決手法が、MPI の使用 (最も具体的にはそのプロセス モデル) が妨げとなるほどのダイナミズムを示す場合です。Charm++のようなシステム(開示: 私は Charm++ の開発者です) を使用すると、より細かい単位で問題を分解できます。そのランタイム システムは、これらの単位をプロセッサに分散して負荷分散を確保し、それらがどこにあるかを追跡します。コミュニケーションを適切に指示することです。

もう 1 つの珍しくない問題は、動的データ アクセス パターンです。グローバル配列や PGAS 言語などのコードの方がはるかに簡単です。

于 2012-05-14T15:05:55.070 に答える