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.