You're reading an old version of this documentation. For the latest released version, please have a look at v5.0.3.
Build for Linux¶
Prerequisites¶
CMake (>= 3.12.0)
GCC >= 5.0 or Clang >= 3.4
Optional: MATLAB R2009a or greater
Optional: Git
Assumed directory structure:
<ROOT> |-libs | |- sundials | |- hdf5 | |- superlu | |- suitesparse |-code |-cadet |-build
Note that the version numbers of the files and packages below are subject to change and will not always reflect the most recent version.
Build dependencies¶
HDF5¶
You can either build HDF5 yourself or rely on the packages provided by your Linux distribution.
Obtain HDF5 from your distribution: * Install the development package
of your distribution (e.g., libhdf5-dev
for Ubuntu and Debian,
hdf5-devel
OpenSUSE) * Additional postfixes or prefixes in the
library names (e.g., Debian uses libhdf5_serial.*
instead of
libhdf5.*
) can cause troubles when CMake is trying to find HDF5. If
this is the case, you can circumvent this by using symlinks
ln -s libhdf5_serial.* libhdf5.*
. However, this can later cause
troubles because other packages might contain this file.
Build HDF5 yourself: * Download CMake-enabled source from
https://www.hdfgroup.org/downloads/hdf5/source-code/ * Unzip and make
sure that the directory path does not contain blank spaces * Open a
terminal and change to the unzipped directory * Execute
ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix,INSTALLDIR="<ROOT>/Libs/hdf5" -C Release -V
* Extract the created HDF5-1.10.0-patch1-Linux.tar.gz
file to
<ROOT>/Libs/hdf5
such that you have <ROOT>/Libs/hdf5/lib
SUNDIALS¶
Download SUNDIALS source from http://computation.llnl.gov/projects/sundials/sundials-software (version <= 3.2.1)
Unzip
Open a terminal and change to the parent directory of the unzipped directory
Create a new folder
sundialsbuild
and change to itExecute
cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/Libs/sundials" -DEXAMPLES_ENABLE=OFF -DOPENMP_ENABLE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC ../sundials-3.2.1/
Execute
make install
Delete the folder
sundialsbuild
(e.g., executerm -rf sundialsbuild
in the parent directory ofsundialsbuild
)
LAPACK¶
You can either use a LAPACK implementation provided by your distribution or install the freely available Intel MKL which is very fast and probably faster than your distribution’s implementation.
Obtain LAPACK from your distribution: * Install the packages (LAPACK
and BLAS) of your distribution (e.g., liblapack3
, liblapack-dev
,
libblas3
, libblas-dev
for Ubuntu and Debian). Note that some
packages only provide reference (i.e., slow) implementations and others
(e.g., ATLAS, GOTO) perform much faster.
SuperLU¶
Download SuperLU source from https://github.com/xiaoyeli/superlu
Unzip
Open a terminal and change to the parent directory of the unzipped directory
Create a new folder
superlubuild
and change to itExecute
cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/Libs/superlu" -Denable_complex=OFF -Denable_complex16=OFF -Denable_blaslib=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=Release ../SuperLU_5.2.1/
Execute
make install
Delete the folder
superlubuild
(e.g., executerm -rf superlubuild
in the parent directory ofsuperlubuild
)
UMFPACK¶
Download SuiteSparse source from http://faculty.cse.tamu.edu/davis/suitesparse.html
Unzip
Open a terminal and change to the unzipped directory
Execute
make install INSTALL="<ROOT>/Libs/suitesparse" CHOLMOD_CONFIG=-DNPARTITION
ormake install INSTALL="<ROOT>/Libs/suitesparse" CHOLMOD_CONFIG=-DNPARTITION AUTOCC=no CC=<COMPILER> CXX=<C++COMPILER>
if you want to manually select the compiler
Build CADET¶
Download release of CADET or checkout from git
Place the source in
<ROOT>/code
and create the directory<ROOT>/build
Open a terminal and change to
<ROOT>/build
If you have built HDF5 yourself, execute
export HDF5_ROOT=<ROOT>/Libs/hdf5
Execute
export SUNDIALS_ROOT=<ROOT>/Libs/sundials
Execute
export SUPERLU_ROOT=<ROOT>/Libs/superlu
Execute
export UMFPACK_ROOT=<ROOT>/Libs/suitesparse
If using MKL, execute
export MKLROOT=/opt/intel/mkl
Using standard LAPACK: Execute
cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" ../code/
Using MKL (sequential): Execute
cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DBLA_VENDOR=Intel10_64lp_seq ../code/
Using MKL (parallel): Execute
cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DBLA_VENDOR=Intel10_64lp ../code/
If CMake was not able to locate MATLAB, execute
export MATLAB_ROOT=/path/to/my/MATLAB/R2016a
and try to run CMake againExecute
make
Execute
make install