一般的に、バイナリファイルに書かれているものの種類と数がわかります(例:すべての整数、1など)。あなたはバイト数で読むことができますが、MPIバイナリファイルは、通常、あなたのケース9の整数で、タイプの整数として読み書きされます(桁数は重要ではありません)。あなたは、サイズを取得し、読むためにどのように多くの要素のうち動作するようにMPI_File_get_size
のようなものを使用することができ、変数行列のサイズについては
call MPI_FILE_OPEN(MPI_COMM_WORLD, filename, &
MPI_MODE_RDONLY , MPI_INFO_NULL, fh, ierr)
bufsize = 3*3
allocate(buf(bufsize))
call MPI_FILE_READ_ALL(fh, buf, bufsize, MPI_integer, &
MPI_STATUS_IGNORE, ierr)
、ファイルを開いて、何かのようで読み取ります。混合データの場合は、バイナリファイルの最初(または最後)の部分をヘッダとして持つことができます。ヘッダは最初に読み込み、残りのファイルをデコードするために使用します。それでもヘッダーの形式を知る必要があり、コード/ヘッダー形式を変更したときに下位互換性を失うと問題になることがあります。これは、HDF5のようなデータフォーマットの理由の一部です。https://support.hdfgroup.org/HDF5/
なぜMPI-IOを使いたい/必要がありますか?マトリックスのどの部分が読み取り/管理されるべきなのか? – Gilles
@Gilles各プロセスは、連続した行ブロックを取得します。これは割り当てなので、MPI-IOを使用する必要があります。 (私は解決策ではなくアプローチを求めているので、宿題の助けが欲求不満だと知っています!) – Moody