0

Linux ノードのグループで実行されている MPI プログラムに問題があります。グループは現在 NFS でセットアップされており、/home/mpi がすべてのノードにマウントされています。問題は、プログラムがすべてのノードでファイル システム内のファイルを書き込みモードで開き (/home/mpi/file で fopen を使用)、計算中に書き込みを行う必要があることです。1 つのノードはそれを開くことができますが、他のノードは開くことができず、エラーがスローされます。代わりに、各ノードに書き込み先の独自のファイルが必要です。

これを回避する方法はないかと考えていました。ノードランクをファイル名に追加して、ノードごとに個別のファイルを作成することを考えていましたが、この問題を回避する簡単な方法があるかどうか疑問に思っていました。すべてのワーカー ノードが、マスター ノードがそのコピーに対して行った変更で自動更新される /home/mpi ディレクトリの独自のコピーを持つように、グループを設定する方法はありますか?

ありがとう。

4

1 に答える 1

0

私の知る限り、物事を行う標準的な方法は、ノードごとに1つのファイルを開き、説明したようにランクでインデックス付けすることです。これらのファイルの用途 (ロギングなど) に応じて、計算の最後にそれらを再結合するスクリプトを作成する必要があります。

すべてのプロセスがファイルシステム上の同じファイルに書き込む必要がある場合は、ファイルに書き込みたいすべてのプロセスからの同時出力を何らかの方法で調整する必要があります。

私の知る限り、ファイルシステム レベルでこれを行う方法はありませんが、MPI コード内でこれを行うことができます。これの標準的で歴史的な実装は、すべての MPI プロセスがメッセージをランク 0 に送信するようにすることです。

もう 1 つのオプションは、MPI2 で導入された IO 機能を調べることです。これにより、すべてのプロセスが同じファイルの異なる部分で動作できるようになります。

于 2013-06-04T06:49:35.590 に答える