Hi,
I'm writing this because several PyTables users complained about an
issue in HDF5. The thing boils down to, apparently, HDF5 taking a lot
of space to represent large datatypes. For example, in order to create
a compound datatype with a single component of ARRAY type of a certain
length, when this length exceeds some value, it gives the next error:
#005: ../../../src/H5O.c line 2204 in H5O_new_mesg(): object header
message is too large (16k max)
major(12): Object header layer
minor(29): Unable to initialize object
[This was using HDF5 1.6.5]
Apparently, it seems like the ARRAY type cannot be represented by
keeping just its definition and length, but by replicating the type
description along the object header (otherwise I cannot understand the
above error).
Also, it seems that different HDF5 versions have different limits for
the object header message. With 1.6.5 the limit seems to be 64k
(despite the error message shown above, claiming to be 16k), but with
HDF5 1.6.6 (and some users reported 1.8.0 having this behaviour too),
the datatypes can be much more larger (122k or more). With 1.8.2, the
limit seems to be 64k again. I'm curious about why this limit is
changing from version to version.
For your reference, here it is the kind of datatypes that trigger the
problem (h5ls output):
Type: struct {
"signal" +0 [32768] native signed char
} 32768 bytes
For ARRAY types with 2^15 elements (32768), HDF5 can create it.
However, for ARRAY types with 2^16, some versions (not all) of HDF5
cannot.
My question is: is there a way to avoid this problem and define
potentially large ARRAY types without exceeding the object header
capacity? In case this is not going to be possible, is there a way to
query the HDF5 library to guess the maximum type sizes? I'd like to do
this in order to be able to raise a specific Python exception whenever
this happens.
Thanks,
···
--
Francesc Alted
----------------------------------------------------------------------
This mailing list is for HDF software users discussion.
To subscribe to this list, send a message to hdf-forum-subscribe@hdfgroup.org.
To unsubscribe, send a message to hdf-forum-unsubscribe@hdfgroup.org.