writing data with zero memspace size on some processors

I am trying to write data in parallel to an HDF5 file using collective I/O. The data is a contiguous chunk and each processor has its own local memspace, but the field does not span the entire domain so some processors contribute 0 bytes of information. It is straightforward to create the filespace and select the hyperslab, but when I try to create the memspace on processors that have a size of zero I get the error:

H5Screate_simple(): zero sized dimension for non-unlimited dimension

The implementation works fine when all processors contribute more than 0 bytes.

I assume it is possible to do a collective write on a chunk of data in which some processors contribute 0 bytes of information. How do I create the filespace and memspace to do this?

Thanks,
Brad Aagaard

I finally found a discussion of this issue in the HDF5 documentation in the Questions section under "How do you write data when one process doesn't have or need to write data ?". The example shows how to use H5Sselect_none() with a memspace and filespace for the case when processors do not write data.

It would be helpful if the documentation for H5Screate_simple() had a note on this usage and its relationship with H5Sselect_none() along with a link or reference to the coll_test.c example.

Thanks,
Brad Aagaard

···

On 01/28/2011 10:21 AM, Brad Aagaard wrote:

I am trying to write data in parallel to an HDF5 file using collective
I/O. The data is a contiguous chunk and each processor has its own local
memspace, but the field does not span the entire domain so some
processors contribute 0 bytes of information. It is straightforward to
create the filespace and select the hyperslab, but when I try to create
the memspace on processors that have a size of zero I get the error:

H5Screate_simple(): zero sized dimension for non-unlimited dimension

The implementation works fine when all processors contribute more than 0
bytes.

I assume it is possible to do a collective write on a chunk of data in
which some processors contribute 0 bytes of information. How do I create
the filespace and memspace to do this?

Thanks,
Brad Aagaard

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

1 Like