diff --git a/INSTALL.md b/INSTALL.md
index 82442d5c87..8c94423697 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -161,20 +161,7 @@ the FFTW3 threading library libfftw3_threads (or libfftw3_omp) is required.
- `-D__MAX_CONTR=4` (default=2) can be used to compile efficient contraction
kernels up to l=4, but the build time will increase accordingly.
-### 2h. LIBSMM (optional, improved performance for matrix multiplication)
-
-- A library for small matrix multiplies can be built from the included source
- (see exts/dbcsr/tools/build_libsmm/README). Usually only the double precision
- real and perhaps complex types are needed. Link to the generated libraries.
- For a couple of architectures, prebuilt LIBSMMs are available at
- .
-- Add `-D__HAS_smm_dnn` to the defines to enable using the double precision
- real library. Similarly use `-D__HAS_smm_snn` for single precision real and
- `-D__HAS_smm_znn` / `-D__HAS_smm_cnn` for double / single precision complex.
-- Add `-D__HAS_smm_vec` to enable the new vectorized interfaces of LIBSMM.
-- If LIBXSMM is available, LIBSMM is not necessary or used (see LIBXSMM section).
-
-### 2i. LIBXSMM (optional, improved performance for matrix multiplication)
+### 2h. LIBXSMM (optional, improved performance for matrix multiplication)
- A library for matrix operations and deep learning primitives: .
- Add `-D__LIBXSMM` to enable it, with suitable include and library paths,
@@ -182,7 +169,7 @@ the FFTW3 threading library libfftw3_threads (or libfftw3_omp) is required.
and `LIBS += -L${LIBXSMM_DIR}/lib -lxsmmf -lxsmm -ldl`
- LIBSMM is not used if LIBXSMM is enabled.
-### 2j. CUDA (optional, improved performance on GPU systems)
+### 2i. CUDA (optional, improved performance on GPU systems)
- Specify OFFLOAD_CC (e.g. `OFFLOAD_CC = nvcc`) and
OFFLOAD_FLAGS (e.g. `OFFLOAD_FLAGS = -O3 -g -w --std=c++11`) variables.
@@ -206,7 +193,7 @@ the FFTW3 threading library libfftw3_threads (or libfftw3_omp) is required.
- Use `-D__NO_OFFLOAD_PW` to disable the GPU backend of FFTs
and associated gather/scatter operations.
-### 2k. LIBXC (optional, wider choice of xc functionals)
+### 2j. LIBXC (optional, wider choice of xc functionals)
- The version 5.1.0 (or later) of LIBXC can be downloaded from
- CP2K does not make use of fourth derivates such that LIBXC may be configured
@@ -217,7 +204,7 @@ the FFTW3 threading library libfftw3_threads (or libfftw3_omp) is required.
and `-L$(LIBXC_DIR)/lib -lxcf03 -lxc` to LIBS.
- :warning: Note that the deprecated flags `-D__LIBXC2` and `-D__LIBXC3` are ignored.
-### 2l. ELPA (optional, improved performance for diagonalization)
+### 2k. ELPA (optional, improved performance for diagonalization)
Library ELPA for the solution of the eigenvalue problem
@@ -235,7 +222,7 @@ Library ELPA for the solution of the eigenvalue problem
- For specific architectures it can be better to install specifically optimized
kernels (see BG) and/or employ a higher optimization level to compile it.
-### 2m. PEXSI (optional, low scaling SCF method)
+### 2l. PEXSI (optional, low scaling SCF method)
The Pole EXpansion and Selected Inversion (PEXSI) method requires the PEXSI
library and two dependencies (ParMETIS or PT-Scotch and SuperLU_DIST).
@@ -267,27 +254,27 @@ METISLIB = -lscotchmetis -lscotch -lscotcherr
PARMETISLIB = -lptscotchparmetis -lptscotch -lptscotcherr
```
-### 2n. QUIP (optional, wider range of interaction potentials)
+### 2m. QUIP (optional, wider range of interaction potentials)
QUIP - QUantum mechanics and Interatomic Potentials Support for QUIP can be
enabled via the flag `-D__QUIP`.
For more information see .
-### 2o. PLUMED (optional, enables various enhanced sampling methods)
+### 2n. PLUMED (optional, enables various enhanced sampling methods)
CP2K can be compiled with PLUMED 2.x (`-D__PLUMED2`).
See for full instructions.
-### 2p. spglib (optional, crystal symmetries tools)
+### 2o. spglib (optional, crystal symmetries tools)
A library for finding and handling crystal symmetries
- The spglib can be downloaded from
- For building CP2K with the spglib add `-D__SPGLIB` to DFLAGS
-### 2q. SIRIUS (optional, plane wave calculations)
+### 2p. SIRIUS (optional, plane wave calculations)
SIRIUS is a domain specific library for electronic structure calculations.
@@ -295,7 +282,7 @@ SIRIUS is a domain specific library for electronic structure calculations.
- For building CP2K with SIRIUS add `-D__SIRIUS` to DFLAGS.
- See for more information.
-### 2r. FPGA (optional, plane wave FFT calculations)
+### 2q. FPGA (optional, plane wave FFT calculations)
- Use `-D__PW_FPGA` to enable FPGA support for PW (fft) calculations.
Currently tested only for Intel Stratix 10 and Arria 10 GX1150 FPGAs.
@@ -314,14 +301,14 @@ SIRIUS is a domain specific library for electronic structure calculations.
aocl linker flags to `LDFLAGS` and aocl libs to `LIBS`.
- When building FPGA and OFFLOAD together then `-D__NO_OFFLOAD_PW` has to be used.
-### 2s. COSMA (Distributed Communication-Optimal Matrix-Matrix Multiplication Algorithm)
+### 2r. COSMA (Distributed Communication-Optimal Matrix-Matrix Multiplication Algorithm)
- COSMA is an alternative for the pdgemm routine included in ScaLAPACK.
The library supports both CPU and GPUs.
- Add `-D__COSMA` to the DFLAGS to enable support for COSMA.
- See for more information.
-### 2t. LibVori (Voronoi Integration for Electrostatic Properties from Electron Density)
+### 2s. LibVori (Voronoi Integration for Electrostatic Properties from Electron Density)
- LibVori is a library which enables the calculation of electrostatic properties
(charge, dipole vector, quadrupole tensor, etc.) via integration of the total
@@ -332,7 +319,7 @@ SIRIUS is a domain specific library for electronic structure calculations.
please see for more information as well as
the `bqbtool` to inspect BQB files.
-### 2u. ROCM/HIP (Support for AMD GPU)
+### 2t. ROCM/HIP (Support for AMD GPU)
:warning: **Experimental**, please report any problem.
@@ -363,7 +350,7 @@ should work out of the box on Nvidia hardware as well.
- Use `-D__OFFLOAD_PROFILING` to turn on the AMD ROC TX and Tracer libray.
It requires to link `-lroctx64 -lroctracer64`.
-### 2v. OpenCL Devices
+### 2u. OpenCL Devices
:warning: **Experimental**, please report any problem.
@@ -397,7 +384,7 @@ CP2K's grid backend does not yet support OpenCL devices.
- Refer to for more information, e.g.,
environment variables or how to tune kernels (auto tuned parameters).
-### 2w. matrix-matrix multiplication offloading on GPU using SPLA
+### 2v. matrix-matrix multiplication offloading on GPU using SPLA
The SPLA library is a hard dependency of SIRIUS but can also be used as a
standalone library. It provides a generic interface to the blas gemm family with
diff --git a/src/cp2k_info.F b/src/cp2k_info.F
index b5c5d6fbb5..490318f6ed 100644
--- a/src/cp2k_info.F
+++ b/src/cp2k_info.F
@@ -154,61 +154,6 @@ CONTAINS
flags = TRIM(flags)//" pw_fpga_sp"
#endif
-#if defined(__HAS_smm_vec)
- flags = TRIM(flags)//" smm_vec"
-#endif
-#if defined(__HAS_smm_snn)
- flags = TRIM(flags)//" smm_snn"
-#endif
-#if defined(__HAS_smm_snt)
- flags = TRIM(flags)//" smm_snt"
-#endif
-#if defined(__HAS_smm_stn)
- flags = TRIM(flags)//" smm_stn"
-#endif
-#if defined(__HAS_smm_stt)
- flags = TRIM(flags)//" smm_stt"
-#endif
-#if defined(__HAS_smm_znn)
- flags = TRIM(flags)//" smm_znn"
-#endif
-#if defined(__HAS_smm_znt)
- flags = TRIM(flags)//" smm_znt"
-#endif
-#if defined(__HAS_smm_ztn)
- flags = TRIM(flags)//" smm_ztn"
-#endif
-#if defined(__HAS_smm_ztt)
- flags = TRIM(flags)//" smm_ztt"
-#endif
-#if defined(__HAS_smm_cnn)
- flags = TRIM(flags)//" smm_cnn"
-#endif
-#if defined(__HAS_smm_cnt)
- flags = TRIM(flags)//" smm_cnt"
-#endif
-#if defined(__HAS_smm_ctn)
- flags = TRIM(flags)//" smm_ctn"
-#endif
-#if defined(__HAS_smm_ctt)
- flags = TRIM(flags)//" smm_ctt"
-#endif
-#if defined(__HAS_smm_dnn)
- flags = TRIM(flags)//" smm_dnn"
-#endif
-#if defined(__HAS_smm_dnt)
- flags = TRIM(flags)//" smm_dnt"
-#endif
-#if defined(__HAS_smm_dtn)
- flags = TRIM(flags)//" smm_dtn"
-#endif
-#if defined(__HAS_smm_dtt)
- flags = TRIM(flags)//" smm_dtt"
-#endif
- IF (INDEX(flags, " smm_") > 0) THEN
- flags = TRIM(flags)//" smm"
- END IF
-
#if defined(__LIBXSMM)
flags = TRIM(flags)//" xsmm"
#endif
diff --git a/tools/toolchain/README.md b/tools/toolchain/README.md
index 2f5e873306..61713e58d4 100644
--- a/tools/toolchain/README.md
+++ b/tools/toolchain/README.md
@@ -118,7 +118,6 @@ be installed separately by the user.
| gsl | [GPL](https://www.gnu.org/software/gsl/doc/html/gpl.html) | Yes |
| hdf5 | [BSD 3-Clause](https://support.hdfgroup.org/ftp/HDF5/releases/COPYING) | Yes |
| libint | [GPL](https://github.com/evaleev/libint/blob/master/LICENSE) | Yes |
-| libsmm | [GPL](https://github.com/cp2k/cp2k/blob/master/LICENSE) | Yes |
| libvori | LGPL-3 | Yes |
| libvdwxc | [GPL](https://gitlab.com/libvdwxc/libvdwxc/blob/master/LICENSE) | Yes |
| libxc | [MPL](https://gitlab.com/libxc/libxc/blob/master/COPYING) | Yes |
diff --git a/tools/toolchain/install_cp2k_toolchain.sh b/tools/toolchain/install_cp2k_toolchain.sh
index 0206304620..1f3ec6f6f4 100755
--- a/tools/toolchain/install_cp2k_toolchain.sh
+++ b/tools/toolchain/install_cp2k_toolchain.sh
@@ -186,15 +186,7 @@ The --with-PKG options follow the rules:
--with-scalapack Parallel linear algebra library, needed for parallel
calculations.
Default = install
- --with-libsmm CP2K's own small matrix multiplication library. An optimised
- libsmm should increase the code performance. If you set
- --with-libsmm=install, then instead of actually compiling
- the library (which may take a long time), the script will
- try to download a preexisting version from the CP2K website
- that is compatible with your system.
- Default = no
- --with-libxsmm Small matrix multiplication library. If the system architecture
- is x86_64, then LIBXSMM can be used instead of libsmm.
+ --with-libxsmm Small matrix multiplication library.
Default = install
--with-elpa Eigenvalue SoLvers for Petaflop-Applications library.
Fast library for large parallel jobs.
@@ -264,7 +256,7 @@ EOF
tool_list="gcc intel cmake"
mpi_list="mpich openmpi intelmpi"
math_list="mkl acml openblas"
-lib_list="fftw libint libxc libsmm libxsmm cosma scalapack elpa plumed \
+lib_list="fftw libint libxc libxsmm cosma scalapack elpa plumed \
spfft spla ptscotch superlu pexsi quip gsl spglib hdf5 libvdwxc sirius
libvori"
package_list="${tool_list} ${mpi_list} ${math_list} ${lib_list}"
@@ -568,9 +560,6 @@ while [ $# -ge 1 ]; do
--with-scalapack*)
with_scalapack=$(read_with "${1}")
;;
- --with-libsmm*)
- with_libsmm=$(read_with "${1}")
- ;;
--with-libxsmm*)
with_libxsmm=$(read_with "${1}")
;;
diff --git a/tools/toolchain/scripts/stage4/install_libsmm.sh b/tools/toolchain/scripts/stage4/install_libsmm.sh
deleted file mode 100755
index 379048a3dd..0000000000
--- a/tools/toolchain/scripts/stage4/install_libsmm.sh
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/bash -e
-
-# TODO: Review and if possible fix shellcheck errors.
-# shellcheck disable=SC1003,SC1035,SC1083,SC1090
-# shellcheck disable=SC2001,SC2002,SC2005,SC2016,SC2091,SC2034,SC2046,SC2086,SC2089,SC2090
-# shellcheck disable=SC2124,SC2129,SC2144,SC2153,SC2154,SC2155,SC2163,SC2164,SC2166
-# shellcheck disable=SC2235,SC2237
-
-[ "${BASH_SOURCE[0]}" ] && SCRIPT_NAME="${BASH_SOURCE[0]}" || SCRIPT_NAME=$0
-SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_NAME")/.." && pwd -P)"
-
-source "${SCRIPT_DIR}"/common_vars.sh
-source "${SCRIPT_DIR}"/tool_kit.sh
-source "${SCRIPT_DIR}"/signal_trap.sh
-source "${INSTALLDIR}"/toolchain.conf
-source "${INSTALLDIR}"/toolchain.env
-
-[ -f "${BUILDDIR}/setup_libsmm" ] && rm "${BUILDDIR}/setup_libsmm"
-
-LIBSMM_CFLAGS=''
-LIBSMM_LDFLAGS=''
-LIBSMM_LIBS=''
-! [ -d "${BUILDDIR}" ] && mkdir -p "${BUILDDIR}"
-cd "${BUILDDIR}"
-
-case "$with_libsmm" in
- __INSTALL__)
- echo "==================== Installing libsmm ===================="
- pkg_install_dir="${INSTALLDIR}/libsmm"
- install_lock_file="$pkg_install_dir/install_successful"
- if verify_checksums "${install_lock_file}"; then
- echo "libsmm is already installed, skipping it."
- else
- # Here we attempt to determine which precompiled libsmm binary
- # to download, and do that if such binary exists on CP2K web
- # repository. The binary is determined by the arch and
- # libcore values obtained via OpenBLAS prebuild.
- echo "Searching for an optimised libsmm binary from CP2K website"
- case ${OPENBLAS_LIBCORE} in
- haswell)
- libsmm="libsmm_dnn_haswell-2015-11-10.a"
- libsmm_sha256="a1cf9eb1bfb1bd3467024e47173a6e85881c3908961b7bb29f3348af9837018b"
- echo "An optimized libsmm $libsmm is available"
- ;;
- ivybridge)
- libsmm="libsmm_dnn_ivybridge-2015-07-02.a"
- libsmm_sha256="ef74fb7339979545f9583d9ecab52c640c4f98f9dd49f98d2b4580304d5fcf60"
- echo "An optimized libsmm $libsmm is available"
- ;;
- nehalem)
- libsmm="libsmm_dnn_nehalem-2015-07-02.a"
- libsmm_sha256="cc7e8c6623055fc6bc032dfda2d08b2201a8d86577ab72c3f66bee9b86cbebe9"
- echo "An optimized libsmm $libsmm is available"
- ;;
- sandybridge)
- libsmm="libsmm_dnn_sandybridge-2015-11-10.a"
- libsmm_sha256="56ffdafa715554ec87f20ff1e0150450209a7635b47b8a5b81970e88ec67687c"
- echo "An optimized libsmm $libsmm is available"
- ;;
- *)
- echo "No optimised binary found ..."
- echo "Searching for a generic libsmm binary from CP2K website"
- if [ "${OPENBLAS_ARCH}" = "x86_64" ]; then
- libsmm="libsmm_dnn_x86_64-latest.a"
- libsmm_sha256="dd58aee2bc5505e23b0761835bf2b9a90e5f050c6708ef68c5028373970673f8"
- echo "A generic libsmm $libsmm is available."
- echo "Consider building and contributing to CP2K an optimized"
- echo "libsmm for your $OPENBLAS_ARCH $OPENBLAS_LIBCORE using"
- echo "the toolkit in tools/build_libsmm provided in cp2k package"
- fi
- ;;
- esac
- # we know what to get, proceed with install
- if [ "x$libsmm" != "x" ]; then
- if [ -f $libsmm ]; then
- echo "$libsmm has already been downloaded."
- else
- download_pkg ${DOWNLOADER_FLAGS} $libsmm_sha256 https://www.cp2k.org/static/downloads/libsmm/$libsmm
- fi
- # install manually
- ! [ -d "${pkg_install_dir}/lib" ] && mkdir -p "${pkg_install_dir}/lib"
- cp $libsmm "${pkg_install_dir}/lib"
- ln -sf "${pkg_install_dir}/lib/$libsmm" "${pkg_install_dir}/lib/libsmm_dnn.a"
- else
- echo "No libsmm is available"
- echo "Consider building an optimized libsmm on your system yourself"
- echo "using the toolkid in tools/build_libsmm provided in cp2k package"
- cat << EOF > "${BUILDDIR}/setup_libsmm"
-with_libsmm="__DONTUSE__"
-EOF
- exit 0
- fi
- write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage4/$(basename ${SCRIPT_NAME})"
- fi
- LIBSMM_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath='${pkg_install_dir}/lib'"
- ;;
- __SYSTEM__)
- echo "==================== Finding Libsmm from system paths ===================="
- check_lib -lsmm_dnn "libsmm"
- add_lib_from_paths LIBSMM_LDFLAGS "libsmm_dnn.*" $LIB_PATHS
- ;;
- __DONTUSE__) ;;
-
- *)
- echo "==================== Linking Libsmm to user paths ===================="
- pkg_install_dir="$with_libsmm"
- check_dir "${pkg_install_dir}/lib"
- LIBSMM_LDFLAGS="-L'${pkg_install_dir}/lib' -Wl,-rpath='${pkg_install_dir}/lib'"
- ;;
-esac
-if [ "$with_libsmm" != "__DONTUSE__" ]; then
- LIBSMM_LIBS="-lsmm_dnn"
- if [ "$with_libsmm" != "__SYSTEM__" ]; then
- cat << EOF > "${BUILDDIR}/setup_libsmm"
-prepend_path LD_LIBRARY_PATH "${pkg_install_dir}/lib"
-prepend_path LD_RUN_PATH "${pkg_install_dir}/lib"
-prepend_path LIBRARY_PATH "${pkg_install_dir}/lib"
-EOF
- cat "${BUILDDIR}/setup_libsmm" >> $SETUPFILE
- fi
- cat << EOF >> "${BUILDDIR}/setup_libsmm"
-export LIBSMM_LDFLAGS="${LIBSMM_LDFLAGS}"
-export LIBSMM_LIBS="${LIBSMM_LIBS}"
-export CP_DFLAGS="\${CP_DFLAGS} IF_VALGRIND(|-D__HAS_smm_dnn)"
-export CP_LDFLAGS="\${CP_LDFLAGS} ${LIBSMM_LDFLAGS}"
-export CP_LIBS="IF_VALGRIND(|${LIBSMM_LIBS}) \${CP_LIBS}"
-EOF
-fi
-
-load "${BUILDDIR}/setup_libsmm"
-write_toolchain_env "${INSTALLDIR}"
-
-cd "${ROOTDIR}"
-report_timing "libsmm"
diff --git a/tools/toolchain/scripts/stage4/install_stage4.sh b/tools/toolchain/scripts/stage4/install_stage4.sh
index f9a9eb7f03..718c6c0034 100755
--- a/tools/toolchain/scripts/stage4/install_stage4.sh
+++ b/tools/toolchain/scripts/stage4/install_stage4.sh
@@ -6,7 +6,6 @@
# shellcheck disable=SC2124,SC2129,SC2144,SC2153,SC2154,SC2155,SC2163,SC2164,SC2166
# shellcheck disable=SC2235,SC2237
-./scripts/stage4/install_libsmm.sh
./scripts/stage4/install_libxsmm.sh
./scripts/stage4/install_scalapack.sh
./scripts/stage4/install_cosma.sh