HDF5

About

HDF5 is among the most widely used libraries for creating, managing, and reading file containers with data sets. Discoverer HPC public software repository provides access to a variety of HDF5 builds supported by out HPC support team.

Supported versions

To check which HDF5 versions and build types are currently supported on Discoverer, execute on the login node:

module avail hdf5

Important

Do not stick to the builds which names include the word api unless you are very familiar with the API version backward compatibility in HDF5, or your executable code needs any of these modules, as specified by its developers.

If you wish to check or use the recipe we followed to compile the HDF5 source code, visit:

https://gitlab.discoverer.bg/vkolev/recipes/-/tree/main/hdf5/

User-supported versions

Users are welcome to bring, compile, and use their own builds of HDF5, but those builds will not be supported by the Discoverer HPC team.

Supported filters

The following filters are supported (as embedded) for all versions of HDF5 installed in the public software repository:

  • deflate
  • bz2
  • szip (provided by Libaec)
  • zstd

Important

HDF5 plugin support is not enabled. If its presence is absolutely necessary, inform the HPC support staff (see Getting help).

Compiler and MPI library affinity

Compiler affinity

Each version of HDF5 installed in the public software repository is built against four compiler sets: (i) Intel oneAPI, (ii) NVIDIA HPC SDK, (iii) AMD Optimized Compiler Collection (AOCC), (iv) GNU Compiler Collection (GCC). The corresponding HDF5 environment module names contain the name of the compiler set employed for building the HDF5 code. Loading the selected module triggers loading the corresponding compiler environment.

MPI library affinity

The name of the adopted MPI library is part of the HDF5 environment module name. Loading the selected module triggers loading the corresponding MPI and compiler environment.

The following MPI libraries are supported by the HDF5 builds installed in the public software repository:

Note

Intel oneAPI MPI library is not yet supported. The preliminary tests detected severe run-time problems (like “Segmentation fault”) on AMD Zen2 processors.

Non-MPI (serial) builds

Apart from the MPI-based HDF5 builds, there are also serial builds for each of the employed compiler sets. If the name of the HDF5 environment module does not contain MPI library name, that module set access to a HDF5 serial build.

Where is h5pfc

Warning

The offical HDF5 builds available in the public software repository of Discoverer HPC do not provide h5pfc parallel compiler wrapper. It is because in the latest HDF5 versions, the h5fc compiler wrapper inherits the MPI afinity defined for the compilation of the HDF5 programming code. In other words, the h5fc compiler wrapper included in the MPI-based HDF5 builds acts exactly the way h5pfc does. For example, the module hdf5/1/1.14/1.14.0-intel-openmpi, when loaded, provides access to a h5fc compiler wrapper, which you can employ for compiling any compatible Fortran code against the corresponding Open MPI library.

See also the following discussion:

https://forum.hdfgroup.org/t/can-h4fc-and-h5pfc-be-built-with-cmake/8825

Getting help

See Getting help