diff --git a/docs/technologies/libraries.md b/docs/technologies/libraries.md index d8e5050863..fa773c2e99 100644 --- a/docs/technologies/libraries.md +++ b/docs/technologies/libraries.md @@ -17,9 +17,11 @@ latest versions available, use the interfaces matching your compiler, and downlo Please note that the BLAS/LAPACK implementation used by CP2K needs to be thread-safe (OpenMP). Examples are the sequential variant of the Intel MKL, the Cray libsci, the OpenBLAS OpenMP variant -and the reference BLAS/LAPACK packages. If compiling with MKL, users must pass -`-DCP2K_BLAS_VENDOR=MKL -DCP2K_SCALAPACK_VENDOR=MKL` to CMake to ensure the code is thread-safe. MKL -with multiple OpenMP threads in CP2K requires that CP2K was compiled with the Intel compiler. +and the reference BLAS/LAPACK packages. Usually the CMake step of CP2K will auto-detect the type of +BLAS and SCALAPACK and then use the right configuration to ensure the code is thread-safe; however, +if you encounter problems when compiling with MKL, try passing +`-DCP2K_BLAS_VENDOR=MKL -DCP2K_SCALAPACK_VENDOR=MKL` to CMake. MKL with multiple OpenMP threads in +CP2K requires that CP2K was compiled with the Intel compiler. On the Mac, BLAS and LAPACK may be provided by Apple's Accelerate framework. If using this framework, `-DCP2K_BLAS_VENDOR=Apple` must be passed to CMake to account for some interface @@ -27,19 +29,21 @@ incompatibilities between Accelerate and reference BLAS/LAPACK. ## MPI and ScaLAPACK (required for MPI parallel builds) -MPI (version 3) and SCALAPACK are needed for parallel code. (Use the latest versions available and -download all patches!). +MPI (version 3 or later) and SCALAPACK are needed for parallel code. (Use the latest versions +available and download all patches!). :warning: Note that your MPI installation must match the used Fortran compiler. If your computing platform does not provide MPI, there are several freely available alternatives: -- MPICH2 MPI: (may require `-fallow-argument-mismatch` when - building with GCC 10) +- MPICH MPI: (may require `-fallow-argument-mismatch` when building with + GCC 10) (Note that latest version 5.0.0 has a bug, and if you want to use it you should manually + apply [this fix](https://github.com/pmodels/mpich/pull/7722)) - OpenMPI MPI: - ScaLAPACK: - - - - ScaLAPACK can be part of ACML or cluster MKL. These libraries are recommended if available. + - ScaLAPACK can be part of ACML (AMD) or cluster MKL (Intel). These libraries are recommended on + the corresponding machines if available. - Recently a [ScaLAPACK installer](http://www.netlib.org/scalapack/scalapack_installer.tgz) has been added that simplifies the installation. @@ -51,29 +55,32 @@ are not supported. CP2K can make use of the mpi_f08 module. If its use is reques FFTW can be used to improve FFT speed on a wide range of architectures. It is strongly recommended to install and use FFTW3. The current version of CP2K works with FFTW 3.X (pass -`-DCP2K_USE_FFTW3=ON` to CMake). It can be downloaded from +`-DCP2K_USE_FFTW3=ON` to CMake). It can be downloaded from . -FFTW is also provided by MKL. Pass `-DCP2K_USE_FFTW3_WITH_MKL=ON` to CMake. +FFTW is also provided by MKL. If you have MKL but still want to use standalone FFTW3, pass +`-DCP2K_USE_FFTW3_WITH_MKL=ON` to CMake. :warning: Note that FFTW must know the Fortran compiler you will use in order to install properly (e.g., `export F77=gfortran` before configure if you intend to use gfortran). -Since CP2K is OpenMP parallelized, the FFTW3 threading library libfftw3_threads (or libfftw3_omp) is -required. Pass `-DCP2K_ENABLE_FFTW3_THREADS_SUPPORT=ON` or `-DCP2K_ENABLE_FFTW3_OPENMP_SUPPORT=ON` +Since CP2K is OpenMP parallelized, the FFTW3 threading library libfftw3_omp (or libfftw3_threads) is +required. Pass `-DCP2K_ENABLE_FFTW3_OPENMP_SUPPORT=ON` or `-DCP2K_ENABLE_FFTW3_THREADS_SUPPORT=ON` respectivly to CMake. ## LIBINT (enables methods including HF exchange) -- Hartree-Fock exchange requires the LIBINT package to be installed. +- Hartree-Fock exchange requires the LIBINT package to calculate ERI. - Pass `-DCP2K_USE_LIBINT2=ON` to CMake to enable LIBINT. -- Recommended way to build LIBINT: Download a CP2K-configured LIBINT library from - [libint-cp2k](https://github.com/cp2k/libint-cp2k). Build and install LIBINT by following the - instructions provided there. Note that using a library configured for higher maximum angular - momentum will increase build time and binary size of CP2K binary (assuming static linking). +- It's always suggested to build LIBINT with toolchain or Spack. If you want to build it yourself, + download a CP2K-configured LIBINT library from our + [CP2K server](https://www.cp2k.org/static/downloads/), then build and install LIBINT by following + the instructions provided [here](https://github.com/cp2k/cp2k/blob/master/tools/libint/README.md). + Note that using a library configured for higher maximum angular momentum will increase build time + and binary size of CP2K binary (assuming static linking). - CP2K is not hardwired to these provided libraries and any other LIBINT library (version >= 2.5.0) should be compatible as long as it was compiled with `--enable-eri=1` and default ordering. -- Avoid debugging information (`-g` flag) for compiling LIBINT since this will increase library size - by a large factor. +- Avoid debugging information (`-g` or `-g2` flag) for compiling LIBINT since this will increase + library size by a large factor. ## LIBXSMM (improved performance for matrix multiplication) @@ -84,8 +91,7 @@ respectivly to CMake. ## LIBXC (wider choice of xc functionals) -- The version 5.1.0 (or later) of LIBXC can be downloaded from - +- The latest version of LIBXC can be downloaded from - CP2K does not make use of fourth derivates such that LIBXC may be configured with `./configure --disable-lxc `. - During the installation, the directories `$(LIBXC_DIR)/lib` and `$(LIBXC_DIR)/include` are @@ -233,6 +239,7 @@ greenX - Open-source file format and library. Support for greenX can be enabled ## TBLITE (semiempirical method) - tblite - Light-weight tight-binding framework +- With tblite you can calculate using GFN2-xTB method. - For more information see - Pass `-DCP2K_USE_TBLITE=ON` to CMake. diff --git a/tools/libint/README.md b/tools/libint/README.md index 075c956ead..9dc897b256 100644 --- a/tools/libint/README.md +++ b/tools/libint/README.md @@ -10,3 +10,29 @@ The bundles can be downloaded from https://www.cp2k.org/static/downloads/. docker build -t bundles_img . docker run -v "$(pwd)":/mnt bundles_img cp -rv /opt/libint-bundles /mnt/ ``` + +## Use pre-built libint-cp2k source to build and install libint + +1. First, ensure `boost` and `eigen3` are installed on your system. For Ubuntu/Debian users, run: + +``` +sudo apt install libboost-dev libeigen3-dev +``` + +For Fedora or RHEL (CRB repo required) users: + +``` +sudo dnf install boost-devel eigen3-devel +``` + +2. Build libint-cp2k with below cmake commands: + +``` +cd /path/to/libint-cp2k +mkdir build && cd build +CXXFLAGS="-g1" cmake .. \ + -DCMAKE_INSTALL_PREFIX=/path/to/your/installation \ + -DLIBINT2_INSTALL_LIBDIR=/path/to/your/installation/lib \ + -DLIBINT2_ENABLE_FORTRAN=ON +make install -j N +```