next up previous contents
Next: Installing netCDF 4.0 Up: NetCDF performance and installation Previous: Installing zlib 1.2.3   Contents


Installing HDF5 1.8.1

HDF5 is a set of tools and libraries that allows extremely large and complicated data collections to be managed. The file format used by HDF5 is designed to be portable. Further information on HDF5 can be found at [8].

HDF5 can be installed both with and without parallel I/O (i.e. MPI-IO) capabilities. The following options were used to compile a serial (i.e. without parallel I/O) version of HDF5 1.8.1 on HECToR.

export FC='ftn -O2'
export F90='ftn -O2'
export F95='ftn -O2'
export CC='cc -O2'
export CXX='CC -O2'
export RUNSERIAL="aprun -q"
export LOGFILE=build_hdf5-1.8.1_noparallel.txt

./configure --prefix=/work/n01/n01/fionanem/local/noparallel \
--disable-shared --enable-static-exec  --enable-fortran \ 
--disable-stream-vfd  --disable-parallel \
--with-zlib=/work/n01/n01/fionanem/local 
--with-szlib=/work/n01/n01/fionanem/local  &> $LOGFILE

Some of the executables need to be executed on the backend (due to issues with the getpwuid function causing a segmentation violation when executed on the login nodes). Therefore, the make, make check and make install commands are all run via the batch system running on a single processor. The RUNSERIAL environment variable is used to tell the build that aprun must be used to launch executables. Initial attempts to build the library failed with a number of errors relating to libtool. The error message is of the form:

../libtool: line 1531: 0: Bad file descriptor
libtool: link: `H5.lo' is not a valid libtool object
make[2]: *** [libhdf5.la] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

The addition of #!/bin/bash to the batch script seems to resolve this problem. The following commands are executed via a batchscript:

# Ensure we don't run out of space for compile
export TMPDIR=/work/n01/n01/fionanem/tmp   
export LOGFILE=build_hdf5-1.8.1_noparallel.txt 
export CHECKFILE=check_hdf5-1.8.1_noparallel.txt
make >> $LOGFILE
make check > $CHECKFILE
make install >> $LOGFILE

The TMPDIR variable is set to ensure that we don't run out of tmp space during the build. After the build is complete the output from make check is examined to ensure that all the testers pass. One of the testers fails - this is a known issue on the Cray X1 and assumed to also be an issue on the Cray XT4. The error message reported by the make check is as follows:

Testing h5dump --xml -X : tempty.h5              *FAILED*

The failed tester is invoked by the testh5dumpxml.sh script in tools/h5dump. This error is reported in the release notes supplied with the snapshot release and version 1.8.1, see [9] for further details. Essentially the error occurs because a single colon is misinterpreted by the operating system. If the command is run via the command line, e.g. ./h5dump -xml -X : tempty.h then the tester runs successfully.

To compile a parallel version of HFD5 1.8.1 the following options were used.

make distclean
export FC='ftn -O2'
export F90='ftn -O2'
export CC='cc -O2'
export CXX='CC -O2'
export RUNSERIAL="aprun -q"
export RUNPARALLEL="aprun -n 4"
export LOGFILE=build_hdf5-1.8.1_parallel.txt

./configure --prefix=/work/n01/n01/fionanem/local/parallel \
--disable-shared --enable-static-exec  --enable-fortran \
--disable-stream-vfd  --enable-parallel \
--with-zlib=/work/n01/n01/fionanem/local \
--with-szlib=/work/n01/n01/fionanem/local &> $LOGFILE

As with the serial build the make, make check and make install are performed on the backend. The RUNPARALLEL environment variable ensures that the parallel runs are performed on 4 processors. The following commands are executed via a batchscript:

# Ensure we don't run out of space for compile
export TMPDIR=/work/n01/n01/fionanem/tmp	
export LOGFILE=build_hdf5-1.8.1_parallel.txt
export CHECKFILE=check_hdf5-1.8.1_parallel.txt
make >> $LOGFILE
make check > $CHECKFILE
make install >> $LOGFILE

All the test codes pass with the exception of -xml -X : tempty.h5 as described above.


next up previous contents
Next: Installing netCDF 4.0 Up: NetCDF performance and installation Previous: Installing zlib 1.2.3   Contents