H5CPP Headers#

For Debian and Red Hat based systems there are packages available, or you can check out the latest version from GitHUB. The headers have no other dependencies than an C++17 capable compiler. However H5CPP often installed along a linear algebra library full list is here

HDF5#

Often the simplest is to use the one provided with your computer, however it may be outdated, for best result download and compile the latest version from The HDFGroup website or use the provided binary packages. The minimum version requirements for HDF5 CAPI is set to v1.10.2.

Parallel HDF5#

Compiler#

LLVM 7.0.0 and Clang is required to compile and run the h5cpp source code transformation tool. Be certain there is 50GB free disk and 16GB memory space on the system you compiling to prevent spurious error messages in the compile or linking phase. AWS EC2 m3.2xlarge instance has suitable local disk and memory space.

git clone https://git.llvm.org/git/llvm.git/
cd llvm/tools
git clone https://git.llvm.org/git/clang.git/
# begin-optional
cd ../projects
git clone https://git.llvm.org/git/openmp.git/
git clone https://git.llvm.org/git/libcxx.git/
git clone https://git.llvm.org/git/libcxxabi.git/
# end-optional
cd ../../ && mkdir build && cd build
3.0 (quilt)cmake  -DCMAKE_INSTALL_PREFIX=/usr/local CMAKE_BUILD_TYPE=MinSizeRel -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_USE_LINKER=gold ../llvm
nohup make -j8&
sudo make install build-essential gcc-8 g++-8

Parallel FS and MPI#

OrangeFS is a good FSF alternative to commercial solutions, and is a requirement for Parallel HDF5.

sudo apt-get install -y gcc flex bison libssl-dev libdb-dev linux-source perl make autoconf linux-headers-`uname -r` zip openssl automake autoconf patch g++ libattr1-dev
./configure --with-kernel=/usr/src/linux-headers-$(uname -r) --prefix=/usr/local --enable-shared
make -j4 && sudo make install
make kmod # to build kernel module
sudo make kmod_install
# load module
sudo insmod /lib/modules/4.4.0-1062-aws/kernel/fs/pvfs2/pvfs2.ko

MPI is industry standard for HPC clusters and super computers, current version of OpenMPI 4.0.1 is confirmed to work with HDF5 1.10.5 series and s a building block of H5CLUSTER reference platform.

./autogen.pl && ./configure --prefix=/usr/local --with-slurm --with-pmix=/usr/local --enable-mpi1-compatibility --with-libevent=/usr/local --with-hwloc=/usr/local 
--with-ompi-pmix-rte

Linear Algebra#

The best practice is to install all linear algebra systems from sources, starting with BLAS/LAPACK: INTEL MKL | AMD CML | ATLAS | openBLAS | NETLIB Then following with your C++ LinearAlgebra/scientific library. Be sure that the optimized BLAS/LAPACK is picked up during configuration. In addition to standard functionality you may be interested in SuperLU, Metis, Pardiso, SuiteSparse, UmfPack, Cholmod.

Here is the list of C++ supported Scientific/Linear Algebra libraries: armadillo eigen3 blitz blaze dlib itpp boost: ublas. ETL will be added soon.

Intel MKL#

download intel MKL from their website, and follow instructions, don't forget to set the environment variables by adding source /opt/intel/bin/compilervars.sh intel64 to .bashrc.