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)

  • libxsmm (libxsmm_gemm_generator) for small matrix multiplications

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

  • CMake (>= 3.20) for the compilation of SeisSol

For run-time partitioning you need to choose one of the following libraries:



  • ParHIP

The partitioning of SeisSol meshes with ParMETIS was tested in large simulations and is generally recommended for academic users. SCOTCH and ParHIP are free and open-source alternatives to ParMETIS and should be used by users from industry or for-profit institutions (cf. ParMETIS license). A study comparing partition quality for SeisSol meshes can be found here.

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.3, 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.20.0 for GNU Compiler Collection
(cd $(mktemp -d) && wget -qO- | tar -xvz -C "." && mv "./cmake-3.20.0-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

You may install PSpaMM as a Python package.

pip3 install --user git+

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.