Open MPIを使用するマルチプロセスでFortranコードを実行しています。各プロセスは、多数のファイルを開いて書き込む必要があります。実行時には、2つの異なるプロセスが同じファイル番号を持つ異なるファイルを同時に開いて書き込む可能性があります。Fortran MPIコードが同じユニット番号の別のファイルを開く
processA: open(unit=10, file1)
processB: open(unit=10, file2)
これは問題を引き起こしますか?
Open MPIを使用するマルチプロセスでFortranコードを実行しています。各プロセスは、多数のファイルを開いて書き込む必要があります。実行時には、2つの異なるプロセスが同じファイル番号を持つ異なるファイルを同時に開いて書き込む可能性があります。Fortran MPIコードが同じユニット番号の別のファイルを開く
processA: open(unit=10, file1)
processB: open(unit=10, file2)
これは問題を引き起こしますか?
はい、可能ですが、問題は発生しません。 MPIはすべて自分自身で動作し、他のプロセスのメモリ(したがってユニット番号)を認識しません。あまりにも多くのファイルを作成しないように気を付けるべきですが、何千ものプロセスを使用すると、ファイルシステムの制限に遭遇する可能性があります。
私は、異なるプロセスの変数がそれぞれのアドレス空間に存在し、MPIサブルーチンが呼び出されない限り、互いに通信しないことを理解します。システムのI/Oに関係するファイルについてはわかりません。どうやら、2つのプロセスが同じファイル(同じファイル名)を開くと、問題が発生します。ユニット番号と割り当てられたメモリの関係についてもっと詳しく話すことができますか?私は、ハードウェアレベルから徹底的に物事を理解しようとします。 –
ユニットはファイルディスクリプタの単なるハンドルに過ぎず、プロセスはファイルを参照するためにそのメモリ内に保持されます。ディスク上のものとは直接関係しません。 – haraldkl
MPIはOpenMPIと同じではありません。後者は、前者の多くの実装のほんの1つです。 –
説明をありがとう! –