|
1 |
| -# Prerequisites |
| 1 | +## Prerequisites |
2 | 2 |
|
3 | 3 | * CMake (>= 3.12.0)
|
4 | 4 | * GCC >= 7.0, Clang >= 3.9, or Intel C++ 18.0
|
5 |
| -* Optional: MATLAB R2009a or greater |
6 | 5 | * Optional: Git
|
7 | 6 |
|
8 | 7 | Assumed directory structure:
|
9 | 8 |
|
10 | 9 | <pre>
|
11 |
| -<ROOT> |
12 |
| - |-libs |
13 |
| - | |- sundials |
14 |
| - | |- hdf5 |
15 |
| - | |- superlu |
16 |
| - | |- suitesparse |
17 |
| - |-code |
18 |
| - |-cadet |
19 |
| - |-build |
| 10 | +|- CADET |
| 11 | +| - src |
| 12 | +| - include |
| 13 | +| - [...] |
| 14 | +| - build |
| 15 | +| - install |
20 | 16 | </pre>
|
21 | 17 |
|
22 |
| -Note that the version numbers of the files and packages below are subject to change and will not always reflect the most recent version. |
| 18 | +Note that the version numbers of the files and packages below are subject to change and will not always reflect the most |
| 19 | +recent version. |
23 | 20 |
|
24 |
| -# Build dependencies |
| 21 | +## Install dependencies |
25 | 22 |
|
26 |
| -## HDF5 |
| 23 | +``` |
| 24 | +sudo apt-get update |
| 25 | +sudo apt -y install build-essential cmake libhdf5-dev libtbb-dev libsuperlu-dev libeigen3-dev |
| 26 | +``` |
27 | 27 |
|
28 |
| -You can either build HDF5 yourself or rely on the packages provided by your Linux distribution. |
| 28 | +sudo apt -y install build-essential libhdf5-dev libsuperlu-dev libeigen3-dev intel-mkl |
29 | 29 |
|
30 |
| -Obtain HDF5 from your distribution: |
31 |
| -* Install the development package of your distribution (e.g., `libhdf5-dev` for Ubuntu and Debian, `hdf5-devel` OpenSUSE) |
32 |
| -* 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. |
| 30 | +### LAPACK |
33 | 31 |
|
34 |
| -Build HDF5 yourself: |
35 |
| -* Download CMake-enabled source from https://www.hdfgroup.org/downloads/hdf5/source-code/ |
36 |
| -* Unzip and make sure that the directory path does not contain blank spaces |
37 |
| -* Open a terminal and change to the unzipped directory |
38 |
| -* Execute `ctest -S HDF5config.cmake,BUILD_GENERATOR=Unix,INSTALLDIR="<ROOT>/Libs/hdf5" -C Release -V` |
39 |
| -* Extract the created `HDF5-1.10.0-patch1-Linux.tar.gz` file to `<ROOT>/Libs/hdf5` such that you have `<ROOT>/Libs/hdf5/lib` |
| 32 | +You can either use a LAPACK implementation provided by your distribution or install the freely available Intel MKL |
40 | 33 |
|
41 |
| -## SUNDIALS (Optional) |
| 34 | +for Intel run |
42 | 35 |
|
43 |
| -* Download SUNDIALS source from http://computation.llnl.gov/projects/sundials/sundials-software (version <= 3.2.1) |
44 |
| -* Unzip |
45 |
| -* Open a terminal and change to the parent directory of the unzipped directory |
46 |
| -* Create a new folder `sundialsbuild` and change to it |
47 |
| -* 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/` |
48 |
| -* Execute `make install` |
49 |
| -* Delete the folder `sundialsbuild` (e.g., execute `rm -rf sundialsbuild` in the parent directory of `sundialsbuild`) |
| 36 | +``` |
| 37 | +sudo apt -y install intel-mkl |
| 38 | +``` |
50 | 39 |
|
51 |
| -## LAPACK |
| 40 | +for distro defaults run |
52 | 41 |
|
53 |
| -You can either use a LAPACK implementation provided by your distribution or install the freely available [Intel MKL](https://software.intel.com/sites/campaigns/nest/) which is very fast and probably faster than your distribution's implementation. |
| 42 | +``` |
| 43 | +sudo apt -y install liblapack3 liblapack-dev libblas3 libblas-dev` |
| 44 | +``` |
54 | 45 |
|
55 |
| -Obtain LAPACK from your distribution: |
56 |
| -* 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. |
| 46 | +## Build CADET |
57 | 47 |
|
58 |
| -## SuperLU (Optional) |
| 48 | +- Clone the CADET source code `git clone https://github.com/modsim/CADET.git CADET` |
| 49 | +- Create the directories `CADET/build` and `CADET/install` |
59 | 50 |
|
60 |
| -* Download SuperLU source from https://github.com/xiaoyeli/superlu |
61 |
| -* Unzip |
62 |
| -* Open a terminal and change to the parent directory of the unzipped directory |
63 |
| -* Create a new folder `superlubuild` and change to it |
64 |
| -* 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/` |
65 |
| -* Execute `make install` |
66 |
| -* Delete the folder `superlubuild` (e.g., execute `rm -rf superlubuild` in the parent directory of `superlubuild`) |
| 51 | +- Open a terminal and change to `CADET/build` |
| 52 | +- If using MKL, execute `export MKLROOT=/opt/intel/mkl` |
| 53 | +- Using standard LAPACK: Execute `cmake -DCMAKE_INSTALL_PREFIX="../install" ../` |
67 | 54 |
|
68 |
| -## UMFPACK (Optional) |
| 55 | + - Using MKL (sequential): Execute `cmake -DCMAKE_INSTALL_PREFIX="../install" -DBLA_VENDOR=Intel10_64lp_seq ../` |
69 | 56 |
|
70 |
| -* Download SuiteSparse source from http://faculty.cse.tamu.edu/davis/suitesparse.html |
71 |
| -* Unzip |
72 |
| -* Open a terminal and change to the unzipped directory |
73 |
| -* Execute `make install INSTALL="<ROOT>/Libs/suitesparse" CHOLMOD_CONFIG=-DNPARTITION` or `make install INSTALL="<ROOT>/Libs/suitesparse" CHOLMOD_CONFIG=-DNPARTITION AUTOCC=no CC=<COMPILER> CXX=<C++COMPILER>` if you want to manually select the compiler |
74 |
| - |
75 |
| -# Build CADET |
76 |
| - |
77 |
| -* Download release of CADET or checkout from git |
78 |
| -* Place the source in `<ROOT>/code` and create the directory `<ROOT>/build` |
79 |
| -* Open a terminal and change to `<ROOT>/build` |
80 |
| -* If you have built HDF5 yourself, execute `export HDF5_ROOT=<ROOT>/Libs/hdf5` |
81 |
| -* If you have built SUNDIALS, execute `export SUNDIALS_ROOT=<ROOT>/Libs/sundials` and add `-DENABLE_PACKAGED_SUNDIALS=OFF` to the CMake command (see below) |
82 |
| -* If you have built SuperLU, execute `export SUPERLU_ROOT=<ROOT>/Libs/superlu` |
83 |
| -* If you have built UMFPACK, execute `export UMFPACK_ROOT=<ROOT>/Libs/suitesparse` |
84 |
| -* If using MKL, execute `export MKLROOT=/opt/intel/mkl` |
85 |
| -* Using standard LAPACK: Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" ../code/` |
86 |
| - |
87 |
| - Using MKL (sequential): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DBLA_VENDOR=Intel10_64lp_seq ../code/` |
88 |
| - |
89 |
| - Using MKL (parallel): Execute `cmake -DCMAKE_INSTALL_PREFIX="<ROOT>/cadet" -DBLA_VENDOR=Intel10_64lp ../code/` |
90 |
| -* If CMake was not able to locate Matlab, execute `export MATLAB_ROOT=/path/to/my/MATLAB/R2016a` and try to run CMake again |
91 |
| -* Execute `make` |
92 |
| -* Execute `make install` |
| 57 | + - Using MKL (parallel): Execute `cmake -DCMAKE_INSTALL_PREFIX="../install" -DBLA_VENDOR=Intel10_64lp ../` |
93 | 58 |
|
| 59 | +- Execute `make` |
| 60 | +- Execute `make install` |
0 commit comments