HDF5 is a data model, library, and file format for storing and managing data. It can represent very complex data objects and a wide variety of metadata.
Documentation
For a documentation visit the HDF group support portal
Installed versions
Serial HDF-5
Parallel HDF-5
Version | Compiler, MPI | Module | API |
1.10.5 | intel/18.0.6, impi/2018.5 | hdf5-parallel/impi/intel/1.10.5 | v110 |
1.10.6 | intel/18.0.6, impi/2018.5 | hdf5-parallel/impi/intel/1.10.6 | v110 |
1.10.6 | intel, openmpi/intel/3.1.6 | hdf5-parallel/ompi/intel/1.10.6 | v110 |
1.10.5 | gcc/8.3.0, openmpi/gcc.9/3.1.5 | hdf5-parallel/ompi/gcc.8/1.10.5 | v110 |
1.10.5 | gcc/9.2.0, openmpi/gcc.9/3.1.5 | hdf5-parallel/ompi/gcc.8/1.10.5 | v110 |
1.12.0 | gcc/8.3.0, openmpi/gcc.9/3.1.5 | hdf5-parallel/ompi/gcc.8/1.12.0 | v112 |
The libraries are threadsafe and can be used in omp-parallel codes. To see configure-details on the installed libraries, load a hdf5-module and issue cat $HDF5DIR/libhdf5.settings!
Modules and Prerequisites
- module avail hdf5 shows all available hdf5 versions
- module show <modulename> shows environment variables set when loading the module
- module help <modulename> shows some details on compilers and MPI
Loading a module adds the path to some hdf5-binaries to $PATH. For convenience, some other environmental variables are extended or defined, which satisfies the needs of several software packages for linking the hdf5-libraries:
PATH, LD_RUN_PATH
C_INCLUDE_PATH, CPLUS_INCLUDE_PATH,
HDF5DIR, HDF5INCLUDE, HDF5LIB
HDF5_HOME, HDF5_ROOT
The module files do not require any prerequisites. All dynamically linked libraries are found, since RPATH is defined in libraries and binaries. For an example, consider
- readelf -a $HDF5DIR/libhdf5_hl.so | grep RPATH
Linking the hdf5-libraries in user programs
Loading a hdf5-module does not link the libraries automatically, when compiling some other software. hdf5 does not deliver any standard way to detect the path to the libraries like pkg-config. So you have to configure Makefiles or install-scripts "by hand". The environment variables exported by the modules should allow short and flexible notation.
hdf5-modules do not have any effect during the runtime of your binaries. If the hdf5-libraries are linked dynamically, it is recommended to set RPATH in the binary. Otherwise the hdf5-libraries (and others) will not be found, during runtime. This can be done with the compiler option -Wl,-rpath=$LD_RUN_PATH, which passes the rpath to the linker.
hdf5 compiler wrapper
The compiler wrapper h5cc, h5fc (parallel h5pcc and h5pfc) can be used to build programs linking the hdf5-libraries. These wrappers set rpath
for all libraries to be linked dynamically for hdf5.
Installing the hdf5-libraries at HLRN
Prerequisites
- the szip library
- for parallel builds intel-MPI or openMPI.
- all other ingredients (zlib) are part of the system.
Options for running configure
version 1.10.
--with-pic
--enable-production
--enable-unsupported --enable-threadsafe
--enable-fortran --enable-fortran2003 --enable-cxx
version 1.12.
--with-pic
--enable-production --enable-optimization=high
--enable-direct-vfd --enable-preadwrite
--enable-unsupported --enable-threadsafe
--enable-fortran --enable-fortran2003 --enable-cxx