Installing Dependencies

In order to run SeisSol, you need to first install:

  • Python (>= 3.5)

  • Numpy (>= 1.12.0)

  • hdf5 (>= 1.8, for instructions see below)

  • netcdf (C-Release) (>= 4.4, for instructions see below)

  • Intel compiler (>= 2021, icc, icpc, ifort) or GCC (>= 9.0, gcc, g++, gfortran)

  • Some MPI implementation (e.g. OpenMPI)

  • ParMETIS for partitioning

  • libxsmm (libxsmm_gemm_generator) for small matrix multiplications

  • PSpaMM ( for small sparse matrix multiplications (required only on Knights Landing or Skylake)

  • CMake (>3.10) for the compilation of SeisSol

In addition, the following packages need to be installed for the GPU version of SeisSol:

  • CUDA (>= 11.0) for Nvidia GPUs, or HIP (ROCm>= 5.2.0) for AMD GPUs

  • SYCL: either hipSYCL >= 0.9.3 or DPC++

  • gemmforge (>= 0.0.207)

  • chainforge (>= 0.0.2, for Nvidia and AMD GPUs)

These dependencies can be installed automatically with spack or can be installed manually one by one.

Spack installation

Spack is a HPC software package manager. It automates the process of installing, upgrading, configuring, and removing computer programs. In particular, our spack package seissol-env allows automatically installing all dependencies of SeisSol (e.g. mpi, hdf5, netcdf, easi, asagi, etc). See for details on the installation with spack. See also for reference our documentation on how to compile seissol-env on SuperMUC-NG, Shaheen (Cray system) and Frontera.

Manual installation

Initial Adjustments to .bashrc

Add the following lines to your .bashrc (vi ~/.bashrc).

# For intel compiler
# source /opt/intel/compiler/VERSION/bin/ intel64

export PATH=$HOME/bin:$PATH
export EDITOR=vi
export CPATH=$HOME/include:$CPATH

# run "exec bash" or "source ~/.bashrc" to apply environment to the current shell

Installing CMake

# you will need at least version 3.10.2 for GNU Compiler Collection
(cd $(mktemp -d) && wget -qO- | tar -xvz -C "." && mv "./cmake-3.10.2-Linux-x86_64" "${HOME}/bin/cmake")

# use version 3.16.2 for Intel Compiler Collection
(cd $(mktemp -d) && wget -qO- | tar -xvz -C "." && mv "./cmake-3.16.2-Linux-x86_64" "${HOME}/bin/cmake")

ln -s ${HOME}/bin/cmake/bin/cmake ${HOME}/bin

Note that this extracts CMake to the directory ${HOME}/bin/cmake, if you wish you can adjust that path.

Installing HDF5

tar -xaf hdf5-1.10.8.tar.bz2
cd hdf5-1.10.8
CPPFLAGS="-fPIC ${CPPFLAGS}" CC=mpicc FC=mpif90 ./configure --enable-parallel --prefix=$HOME --with-zlib --disable-shared --enable-fortran
make -j8
make install
cd ..

Installing netCDF

tar -xaf netcdf-4.6.1.tar.gz
cd netcdf-4.6.1
CFLAGS="-fPIC ${CFLAGS}" CC=h5pcc ./configure --enable-shared=no --prefix=$HOME --disable-dap
#NOTE: Check for this line to make sure netCDF is built with parallel I/O:
#"checking whether parallel I/O features are to be included... yes" This line comes at the very end (last 50 lines of configure run)!
make -j8
make install
cd ..

Installing Eigen3

tar -xf eigen-3.4.0.tar.gz
cd eigen-3.4.0
mkdir build && cd build
make install
cd ../..

Installing Libxsmm

git clone --branch 1.17
cd libxsmm
make generator
cp bin/libxsmm_gemm_generator $HOME/bin
cd ..

Installing PSpaMM

git clone
# make sure $HOME/bin exists or create it with "mkdir ~/bin"
ln -s $(pwd)/PSpaMM/ $HOME/bin/

Instead of linking, you could also add the following line to your .bashrc:

export PATH=<Your_Path_to_PSpaMM>:$PATH

Installing ParMetis

tar -xvf parmetis-4.0.3.tar.gz
cd parmetis-4.0.3
#edit ./metis/include/metis.h IDXTYPEWIDTH to be 64 (default is 32).
make config cc=mpicc cxx=mpiCC prefix=$HOME
make install
cp build/Linux-x86_64/libmetis/libmetis.a $HOME/lib
cp metis/include/metis.h $HOME/include
cd ..

(Make sure $HOME/include contains metis.h and $HOME/lib contains libmetis.a. Otherwise, compile error: cannot find parmetis.)

Installing ASAGI (Optional)

See section Installing ASAGI.

Installing easi

Follow the installation instructions.

Installing GemmForge, ChainForge (for GPUs)

pip3 install --user git+
pip3 install --user git+

Installing SYCL (for GPUs)

See section Installing SYCL.