- CMake (>= 3.12.0)
- GCC >= 7.0, Clang >= 3.9, or Intel C++ 18.0
- 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.
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 oflibhdf5.*
) can cause troubles when CMake is trying to find HDF5. If this is the case, you can circumvent this by using symlinksln -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
- 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 it - Execute
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
)
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.
- 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 it - Execute
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
)
- 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
-
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
-
If you have built SUNDIALS, execute
export SUNDIALS_ROOT=<ROOT>/Libs/sundials
and add-DENABLE_PACKAGED_SUNDIALS=OFF
to the CMake command (see below) -
If you have built SuperLU, execute
export SUPERLU_ROOT=<ROOT>/Libs/superlu
-
If you have built UMFPACK, 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 again -
Execute
make
-
Execute
make install