[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: h5py and hdf5-mpi



On 2019-08-15 15:02, Drew Parsons wrote:
On 2019-08-14 20:46, James Tocknell wrote:
The main difference between h5py build against a serial version of
HDF5 vs the mpi version is that h5py built against mpi HDF5 can use
the mpi-specific tooling (such as collective IO) - you can use a
serial h5py with MPI and there's no problems other than constraints
that MPI imposes on any IO, so the big difference would be writing to
files not reading reading them. I'd suggest switching on the MPI
support and checking back in a year to see if there have been any
major issues (the MPI tooling is currently not tested that well
currently, so there may be bugs), and making a longer term call then.
Last time I looked at the state of h5py and HDF5 across the different
distros, most only packaged one version of HDF5 (either serial or
mpi), and RedHat (and derivs) used their module system (which handled
moving between different backends, and with different installs of
h5py). I'd keep one version of h5py in the archive, and chose a HDF5
to build against, rather than try playing with alternatives or
anything.

James (one of the h5py devs)


Thanks James.  Sounds like just building against libhdf5-mpi is the
the thing to do.  Hopefully no dire bugs.


I've uploaded h5py 2.9.0-5 to unstable.

There was an error in tests with mpi:
$ mpirun -n 2 python3 -c "import h5py.tests; h5py.tests.run_tests(verbosity=2)"
...
test_close_multiple_default_driver (h5py.tests.old.test_file.TestClose) ... ok
test_close_multiple_mpio_driver (h5py.tests.old.test_file.TestClose)
MPIO driver and options ... mca_fbtl_posix_pwritev: error in writev:Bad file descriptor


It happens because mktemp() is used to generate a test file name, but the name is not parallelised. So a different name was given to the h5py File object on each process, confusing the File when it's set for mpio.

I reported with a patch at https://github.com/h5py/h5py/issues/1285

Drew


Reply to: