Hi all,
Im trying to read large amount of data via a H5Read collective operation from one dataset.
Even though I passed the collective flag I see several MPI_File_read_at operation below (could see after an instrumentation with scorep)
So I guess H5Read does not use collective IO.
What I do:
I access one large dataset with all processes.
Each process reads a subset specified via hyperslabs (no overlaps).
The dataset is a compound dataset containing: 1x Int and 5x float values.
In memory I have a vector of struct objects:
struct {
b: int <---- *
c: int
d float[5] <---- *
}
* only theses values should be assigned in memory.
So I use H5Tcreate to create a compound memtype with the needed offsets.
I use HDF5 1.8.15
I would welcome any hint.
Thanks a lot!
Till
···
a: int
Hi Till,
There are a couple of reasons to explain the independent reads:
1. they could be metadata reads issued by the HDF5 library
2. The HDF5 library is breaking collective access because it is not supported in your scenario.
To check if 2 is the case and why the library is breaking collective, you could use the following function:
https://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-GetMpioNoCollectiveCause
Thanks,
Mohamad
···
From: Hdf-forum <hdf-forum-bounces@lists.hdfgroup.org<mailto:hdf-forum-bounces@lists.hdfgroup.org>> on behalf of Schumann Till <till.schumann@epfl.ch<mailto:till.schumann@epfl.ch>>
Reply-To: hdf-forum <hdf-forum@lists.hdfgroup.org<mailto:hdf-forum@lists.hdfgroup.org>>
Date: Tuesday, February 2, 2016 at 2:57 PM
To: hdf-forum <hdf-forum@lists.hdfgroup.org<mailto:hdf-forum@lists.hdfgroup.org>>
Cc: Kumbhar Pramod Shivaji <pramod.kumbhar@epfl.ch<mailto:pramod.kumbhar@epfl.ch>>
Subject: [Hdf-forum] Parallel H5Read no collective
Hi all,
Im trying to read large amount of data via a H5Read collective operation from one dataset.
Even though I passed the collective flag I see several MPI_File_read_at operation below (could see after an instrumentation with scorep)
So I guess H5Read does not use collective IO.
What I do:
I access one large dataset with all processes.
Each process reads a subset specified via hyperslabs (no overlaps).
The dataset is a compound dataset containing: 1x Int and 5x float values.
In memory I have a vector of struct objects:
struct {
a: int
b: int <---- *
c: int
d float[5] <---- *
}
* only theses values should be assigned in memory.
So I use H5Tcreate to create a compound memtype with the needed offsets.
I use HDF5 1.8.15
I would welcome any hint.
Thanks a lot!
Till