NLMech  0.1.0
Installation

This tutorial guides you how to install NLMech from scratch. In addition, we provide some Docker files to build the code on Fedora, since we use the same OS on Circle-CI. In addition, we provide some bash script to install the code in one step.

In this installation guide, we will use a set of scripts to build the code on HPC clusters.

Prerequisites

Tools

To compile NLMech and its dependencies the following tools are needed:

Dependencies

We recommend to install these libraries using the package manager. Bewlow you can find some examples to install them using apt and dnf

apt-get install build-essential git wget cmake libssl-dev libblas-dev liblapack-dev autoconf freeglut3-dev
dnf install @development-tools cmake git wget blas-devel lapack-devel freeglut-devel

Using the HPCBuildInfrastructure

First, we clone the HPCBuildInfrastructure

git clone https://github.com/nonlocalmodels/HPCBuildInfrastructure.git
cd HPCBuildInfrastructure/

The uses version of each library is defined in the config.sh, if you need to change them.

Build cmake

To build all dependencies, the script build-all.sh is used and the last argument is always the dependency to be build.

./build-all.sh Release without-gcc cmake

The first command Release specifies the CMAKE_BUILD_TYPE of the build. Note that you should use the same build type for all of the dependencies. The second command specifies if you use the gcc from the system in /usr/bin by using without-gcc. If you do not have access to gcc > 4.9 on your system, we provide the option with-gcc to use your own build of gcc. Note you have to run ./build-all.sh Release with-gcc gcc first to build your gcc.

Build HPX

./build-all.sh Release without-gcc hwloc
./build-all.sh Release without-gcc jemalloc
./build-all.sh Release without-gcc boost
./build-all.sh Release without-gcc hpx

Build Blaze and blaze_iterative

./build-all.sh Release without-gcc blaze
./build-all.sh Release without-gcc blazeIterative

Build VTK

./build-all.sh Release without-gcc vtk

Build yampl-cpp

./build-all.sh Release without-gcc yamlcpp

Build NLMech

./build-all.sh Release without-gcc NLMech

All these instructions are available in a single bash script and a Dockerfile.