![]() |
HDF5
1.13.0
|
Functions | |
herr_t | H5Pset_layout (hid_t plist_id, H5D_layout_t layout) |
Sets the type of storage used to store the raw data for a dataset. More... | |
H5D_layout_t | H5Pget_layout (hid_t plist_id) |
Returns the layout of the raw data for a dataset. More... | |
herr_t | H5Pset_chunk (hid_t plist_id, int ndims, const hsize_t dim[]) |
Sets the size of the chunks used to store a chunked layout dataset. More... | |
int | H5Pget_chunk (hid_t plist_id, int max_ndims, hsize_t dim[]) |
Retrieves the size of chunks for the raw data of a chunked layout dataset. More... | |
herr_t | H5Pset_szip (hid_t plist_id, unsigned options_mask, unsigned pixels_per_block) |
Sets up use of the SZIP compression filter. More... | |
Retrieves the size of chunks for the raw data of a chunked layout dataset.
[in] | plist_id | Dataset creation property list identifier |
[in] | max_ndims | Size of the dims array |
[out] | dims | Array to store the chunk dimensions |
H5Pget_chunk() retrieves the size of chunks for the raw data of a chunked layout dataset. This function is only valid for dataset creation property lists. At most, max_ndims
elements of dims
will be initialized.
H5D_layout_t H5Pget_layout | ( | hid_t | plist_id | ) |
Returns the layout of the raw data for a dataset.
[in] | plist_id | Dataset creation property list identifier |
H5Pget_layout() returns the layout of the raw data for a dataset. This function is only valid for dataset creation property lists.
Note that a compact storage layout may affect writing data to the dataset with parallel applications. See the H5Dwrite() documentation for details.
Sets the size of the chunks used to store a chunked layout dataset.
[in] | plist_id | Dataset creation property list identifier |
[in] | ndims | The number of dimensions of each chunk |
[in] | dim | An array defining the size, in dataset elements, of each chunk |
H5Pset_chunk() sets the size of the chunks used to store a chunked layout dataset. This function is only valid for dataset creation property lists.
The ndims
parameter currently must be the same size as the rank of the dataset.
The values of the dim
array define the size of the chunks to store the dataset's raw data. The unit of measure for dim
values is dataset elements.
As a side-effect of this function, the layout of the dataset is changed to H5D_CHUNKED, if it is not already so set.
herr_t H5Pset_layout | ( | hid_t | plist_id, |
H5D_layout_t | layout | ||
) |
Sets the type of storage used to store the raw data for a dataset.
[in] | plist_id | Dataset creation property list identifier |
[in] | layout | Type of storage layout for raw data |
H5Pset_layout() sets the type of storage used to store the raw data for a dataset. This function is only valid for dataset creation property lists.
Valid values for layout
are:
Note that a compact storage layout may affect writing data to the dataset with parallel applications. See the note in H5Dwrite() documentation for details.
Sets up use of the SZIP compression filter.
[in] | plist_id | Dataset creation property list identifier |
[in] | options_mask | A bit-mask conveying the desired SZIP options; Valid values are H5_SZIP_EC_OPTION_MASK and H5_SZIP_NN_OPTION_MASK. |
[in] | pixels_per_block | The number of pixels or data elements in each data block |
H5Pset_szip() sets an SZIP compression filter, H5Z_FILTER_SZIP, for a dataset. SZIP is a compression method designed for use with scientific data.
Before proceeding, all users should review the “Limitations” section below.
Users familiar with SZIP outside the HDF5 context may benefit from reviewing the Note “For Users Familiar with SZIP in Other Contexts” below.
In the text below, the term pixel refers to an HDF5 data element. This terminology derives from SZIP compression's use with image data, where pixel referred to an image pixel.
The SZIP bits_per_pixel
value (see Note, below) is automatically set, based on the HDF5 datatype. SZIP can be used with atomic datatypes that may have size of 8, 16, 32, or 64 bits. Specifically, a dataset with a datatype that is 8-, 16-, 32-, or 64-bit signed or unsigned integer; char; or 32- or 64-bit float can be compressed with SZIP. See Note, below, for further discussion of the the SZIP bits_per_pixel
setting.
SZIP options are passed in an options mask, options_mask
, as follows.
Option | Description (Mutually exclusive; select one.) |
---|---|
H5_SZIP_EC_OPTION_MASK | Selects entropy coding method |
H5_SZIP_NN_OPTION_MASK | Selects nearest neighbor coding method |
The following guidelines can be used in determining which option to select:
Other factors may affect results, but the above criteria provides a good starting point for optimizing data compression.
SZIP compresses data block by block, with a user-tunable block size. This block size is passed in the parameter pixels_per_block
and must be even and not greater than 32, with typical values being 8, 10, 16, or 32. This parameter affects compression ratio; the more pixel values vary, the smaller this number should be to achieve better performance.
In HDF5, compression can be applied only to chunked datasets. If pixels_per_block
is bigger than the total number of elements in a dataset chunk, H5Pset_szip() will succeed but the subsequent call to H5Dcreate() will fail; the conflict can be detected only when the property list is used.
To achieve optimal performance for SZIP compression, it is recommended that a chunk's fastest-changing dimension be equal to N times pixels_per_block
where N is the maximum number of blocks per scan line allowed by the SZIP library. In the current version of SZIP, N is set to 128.
SZIP compression is an optional HDF5 filter.
Limitations:
pixels_in_object
, the number of pixels in the object to be compressedbits_per_pixel
, the number of bits per pixelpixels_per_scanline
, the number of pixels per scan linepixels_in_object
to the number of elements in a chunk and bits_per_pixel
to the size of the element or pixel datatype.pixels_per_scanline:
pixels_per_scanline
to 128 times pixels_per_block
.pixels_per_block
, set pixels_per_scanline
to the minimum of size and 128 times pixels_per_block
.pixels_per_block
but greater than the number elements in the chunk, set pixels_per_scanline
to the minimum of the number elements in the chunk and 128 times pixels_per_block
.bits_per_pixel
is set to the precision of the HDF5 datatype.bits_per_pixel
will be set to the number of bits in the full size of the data element.bits_per_pixel
will be set to 32.bits_per_pixel
will be set to 64.