1

h5py および mpi4py を介して並列 HDF5 を使用して大規模なデータセットをファイルに書き込む場合 (また、C から直接 HDF5 および MPI を使用する場合も可能です)、単一のプロセスで mpio ドライバーを使用すると、次のエラーが発生します。

OSError: データ書き込みの準備ができません (サイズから size_i に変換できません)

少なくともコンテンツが double 配列の場合、許可されるデータセットの制限は 4GB のようです。より多くのプロセスを使用してワークロードを共有する場合、または mpio ドライバーを使用せずに単一の CPU で実行する場合、より大きなデータセットは正常に機能します。

どうしてこれなの?sizeとはsize_iポインタ型であり、前者は 4GB に対応するものよりも大きなアドレスを保持できませんdouble[]か? 一般に複数のプロセスを使用するため、このエラーはおそらく最終的には深刻な問題にはなりませんが、単一のプロセスのみを使用してもコードが機能するようにしたいと考えています。

4

1 に答える 1

1

私は最近同じ問題に直面し、掘り下げてこの点にたどり着きました:

https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.1/src/unpacked/src/H5FDmpio.c

エラーが発生している場所。簡単に言えば、配列のサイズ (バイト単位) が 2GB を超えると、エラーが発生します。

さらに掘り下げて、ここに来ました: https://www.hdfgroup.org/hdf5-quest.html#p2gb

問題と回避策が記述されている場所。

ご覧ください。

于 2016-02-09T17:09:15.857 に答える