We are aware that some of the limits questions below do not yet have answers. We will update this page as the information is obtained.
There are no limitations on the file size.
The library currently allows up to 32 dimension dataspaces, and each dimension can have up to an unsigned 64-bit value. Each datatype can be somewhat arbitrarily large, since you can have array datatypes or compound datatypes that are very large. Multiplying those two factors together gives a theoretical upper limit probably in the thousands of bits of for a dataset's size. However, the library currently only supports 64-bit offsets (although that is easily adjustable when files over 16 exabytes are needed!), so that is the practical upper limit.
The library currently allows up to 32 dimension dataspaces, and each dimension can have up to an unsigned 64-bit value.
Attributes have the same limitations as Datasets.
By default attributes are stored in the Object Header if they are small enough to fit. If they become too large to fit in the Object Header, they will be stored as dense attributes outside of the Object Header.
No specific limit.
No specific limit.
As an example, grplots.c and grplots.f90 each create a file with 100,000 groups in the root group.
The size of the compound datatype must not exceed 64KB (the limit of the object header, which is where the datatype is stored).
The current maximum number of bytes in a chunk is 2^32-1 (4 GB). As a result of this restriction, the number of elements in a chunk cannot be greater than 4 GB. You must also account for the datatype size of each element.
The chunk size can be larger than a dataset's dimension if the dataset's maximum dimension sizes are declared as unlimited or if the chunk size is less than the maximum dimension size. The chunk size for fixed-size datasets cannot exceed the size of a fixed-size dataset. For example, a dataset consisting of a 5 x 4 fixed-size array cannot be defined with 10 x 10 chunks, as the following error will occur:
#010: H5Dchunk.c line 550 in H5D__chunk_construct(): chunk size must be <= maximum dimension size for fixed-sized dimensions major: Dataset minor: Unable to initialize object
There is no internal limit.
There is a limit (in HDF5-1.8) of the object header, which is 64 KB. The datatype for a dataset is stored in the object header, so there is therefore a limit on the size of the datatype that you can have. (See HDFFV-1089)
No, not from HDF5's perspective.
The limit is 2 GB because the MPI standard specifies that the 'count' parameter passed to MPI_File_read() be a 32-bit integer.