3

長い背景

心臓電気生理学シミュレーション用のコードの並列化に取り組んでいます。ユーザーは組み込みのスクリプト言語を使用して独自のシミュレーションを指定できるため、通信と計算のトレードオフを管理する方法を知る方法がありません。これに対抗するために、私は一種のランタイム プロファイラーを作成しています。これは、実行するシミュレーションと動作する必要があるハードウェア環境を確認した後で、ドメイン分割の処理方法を決定します。

私の質問はこれです:

MPI I/O は舞台裏でどのように実装されていますか? 各プロセスは実際に他のノード上の単一のファイルに書き込んでいますか? それとも、各プロセスがいくつかのスパース ファイルに書き込んでいて、ファイルが閉じられたときにそれらのファイルが再び結合されるのでしょうか?

これを知ることで、I/O 操作を通信と計算のどちらと見なすかを決定し、それに応じてバランスを調整することができます…</p>

あなたが提供できる洞察を前もって感謝します。

ロス

4

1 に答える 1

3

I/O のメカニズムは実装に依存します。さらに、I/O のスタイルは 1 つではありません。一部の I/O はリモート ランクによってキャッシュされ、実行の最後に mpirun プロセスによって収集されます。一部の I/O は、必要に応じてローカル スクラッチ スペースに書き込まれます。一部の I/O は、NAS/SAN スタイルの高性能共有ファイル システムに書き込まれます。

一部の MPI は、サード パーティのライブラリを使用して並列ファイル システムへの I/O をサポートしていますが、これらの詳細は独自のものである可能性があります。一部のファイル システムはローカル ディスクであり、その他は SAN over Fiber または InfinBand です。

I/O に費やされた時間を実際にどのように測定する予定ですか? ライブラリへのすべての呼び出しをインターセプトするために pMPI インターフェイスを使用する予定はありますか?

于 2009-07-03T16:51:22.287 に答える