Gromacs 2025.2

Webpage

http://www.gromacs.org/

Version

2025.2

Build Environment

  • GCC 13.3.1 (gcc-toolset-13)
  • Open MPI 4.1.8
  • CP2K 2024.3 (only for MPI double precision version)
  • cmake 3.31.6
  • python 3.12.9 (from conda env. prepared on Mar 10, 2025)
  • openblas 0.3.29-lp64

Files Required

  • gromacs-2025.2.tar.gz
  • regressiontests-2025.2.tar.gz
  • installed CP2K 2024.3 (only for MPI double precision version)
  • (Some of files will be downloaded during the installation.)

Build Procedure

LibTorch 2.7.0 (briefly)

(Official binary version of libtorch 2.7.0 does not work in our system due to the required glibc version...)

[user@ccfep ~]$ module purge
[user@ccfep ~]$ . /apl/conda/20250310/conda_init.sh
(base) [user@ccfep ~]$ module load openblas/0.3.29-lp64
(base) [user@ccfep ~]$ module load gcc-toolset/13
(base) [user@ccfep ~]$ git clone https://github.com/pytorch/pytorch -b v2.7.0
(base) [user@ccfep 2.7.0]$ cd pytorch/
(base) [user@ccfep pytorch]$ mkdir build
(base) [user@ccfep pytorch]$ cd build/
(base) [user@ccfep build]$ cmake .. \
      -GNinja \
      -DBLAS=OpenBLAS \
      -DBUILD_FUNCTORCH=OFF \
      -DBUILD_PYTHON=False \
      -DBUILD_TEST=True \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=/apl/libtorch/2.7.0/cpu \
      -DCMAKE_PREFIX_PATH="/lustre/rccs/apl/ap/conda/20250310/lib/python3.12/site-packages;/apl/openblas/0.3.29/lp64" \
      -DPython_EXECUTABLE=/lustre/rccs/apl/ap/conda/20250310/bin/python \
      -DTORCH_BUILD_VERSION=2.7.0a0+git1341794 \
      -DUSE_CUDA=0 \
      -DUSE_NUMPY=True \
      -DINSTALL_TEST=False
(base) [user@ccfep build]$ ninja -j32
(base) [user@ccfep build]$ ninja -j32 test
(base) [user@ccfep build]$ ninja -j32 install

  • cmake options above were based on those from setup.py.
  • Following tests have failed.
    • 48 - vec_test_all_types_AVX512 (ILLEGAL) => most probably due to the hardware specifications
    • 49 - vec_test_all_types_AVX2 (Failed) => ?

Gromacs 2025.2

#!/bin/sh

VERSION=2025.2
INSTALL_PREFIX=/apl/gromacs/${VERSION}

BASEDIR=/home/users/${USER}/Software/Gromacs/${VERSION}/
GROMACS_TARBALL=${BASEDIR}/gromacs-${VERSION}.tar.gz
REGRESSION_TARBALL=${BASEDIR}/regressiontests-${VERSION}.tar.gz
WORKDIR=/gwork/users/${USER}
REGRESSION_PATH=${WORKDIR}/regressiontests-${VERSION}

TORCH_DIR=/apl/libtorch/2.7.0/cpu

PARALLEL=12
export LANG=C

#---------------------------------------------------------------------
umask 0022

module -s purge
module -s load gcc-toolset/13
module -s load openmpi/4.1.8/gcc13
module -s load cmake/3.31.6

cd ${WORKDIR}
if [ -d gromacs-${VERSION} ]; then
 mv gromacs-${VERSION} gromacs_erase
 rm -rf gromacs_erase &
fi

if [ -d regressiontests-${VERSION} ]; then
 mv regressiontests-${VERSION} regressiontests_erase
 rm -rf regressiontests_erase &
fi

tar xzf ${GROMACS_TARBALL}
tar xzf ${REGRESSION_TARBALL}
cd gromacs-${VERSION}

# single precision, no MPI
mkdir rccs-s
cd rccs-s
cmake .. \
  -DCMAKE_PREFIX_PATH="${TORCH_DIR}" \
  -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCMAKE_C_COMPILER=gcc \
  -DCMAKE_CXX_COMPILER=g++ \
  -DGMX_MPI=OFF \
  -DGMX_GPU=OFF \
  -DGMX_DOUBLE=OFF \
  -DGMX_THREAD_MPI=ON \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_NNPOT=TORCH \
  -DREGRESSIONTEST_DOWNLOAD=OFF \
  -DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check && make install
cd ..

# double precision, no MPI
mkdir rccs-d
cd rccs-d
cmake .. \
  -DCMAKE_PREFIX_PATH="${TORCH_DIR}" \
  -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCMAKE_C_COMPILER=gcc \
  -DCMAKE_CXX_COMPILER=g++ \
  -DGMX_MPI=OFF \
  -DGMX_GPU=OFF \
  -DGMX_DOUBLE=ON \
  -DGMX_THREAD_MPI=ON \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_NNPOT=TORCH \
  -DREGRESSIONTEST_DOWNLOAD=OFF \
  -DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check
make install
cd ..

# single precision, with MPI
mkdir rccs-mpi-s
cd rccs-mpi-s
cmake .. \
  -DCMAKE_PREFIX_PATH="${TORCH_DIR}" \
  -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCMAKE_C_COMPILER=mpicc \
  -DCMAKE_CXX_COMPILER=mpicxx \
  -DGMX_MPI=ON \
  -DGMX_GPU=OFF \
  -DGMX_DOUBLE=OFF \
  -DGMX_THREAD_MPI=OFF \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_USE_PLUMED=ON \
  -DGMX_NNPOT=TORCH \
  -DREGRESSIONTEST_DOWNLOAD=OFF \
  -DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check && make install
cd ..

# double precision, with MPI
mkdir rccs-mpi-d
cd rccs-mpi-d
cmake .. \
  -DCMAKE_PREFIX_PATH="${TORCH_DIR}" \
  -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCMAKE_C_COMPILER=mpicc \
  -DCMAKE_CXX_COMPILER=mpicxx \
  -DGMX_MPI=ON \
  -DGMX_GPU=OFF \
  -DGMX_DOUBLE=ON \
  -DGMX_THREAD_MPI=OFF \
  -DGMX_BUILD_OWN_FFTW=ON \
  -DGMX_USE_PLUMED=ON \
  -DGMX_NNPOT=TORCH \
  -DREGRESSIONTEST_DOWNLOAD=OFF \
  -DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check && make install
cd ..

# double precision, with MPI + CP2K
CP2KROOT=/apl/cp2k/2024.3
CP2KROOT_TC=${CP2KROOT}/tools/toolchain

mkdir rccs-mpi-d-cp2k
cd rccs-mpi-d-cp2k
cmake .. \
  -DCMAKE_PREFIX_PATH="${CP2KROOT_TC}/install/fftw-3.3.10" \
  -DGMX_DEFAULT_SUFFIX=OFF \
  -DGMX_BINARY_SUFFIX=_mpi_d_cp2k \
  -DGMX_LIBS_SUFFIX=_mpi_d_cp2k \
  -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCMAKE_C_COMPILER=mpicc \
  -DCMAKE_CXX_COMPILER=mpicxx \
  -DGMX_MPI=ON \
  -DGMX_GPU=OFF \
  -DGMX_DOUBLE=ON \
  -DGMX_THREAD_MPI=OFF \
  -DGMX_CP2K=ON \
  -DBUILD_SHARED_LIBS=OFF \
  -DGMXAPI=OFF \
  -DGMX_INSTALL_NBLIB_API=OFF \
  -DCP2K_DIR=${CP2KROOT}/lib/rccs/psmp \
  -DGMX_FFT_LIBRARY=fftw3 \
  -DGMX_EXTERNAL_BLAS=ON \
  -DGMX_BLAS_USER=${CP2KROOT_TC}/install/openblas-0.3.27/lib/libopenblas.so \
  -DGMX_EXTERNAL_LAPACK=ON \
  -DGMX_LAPACK_USER=${CP2KROOT_TC}/install/openblas-0.3.27/lib/libopenblas.so \
  -DGMX_USE_PLUMED=ON \
  -DGMX_NNPOT=OFF \
  -DREGRESSIONTEST_DOWNLOAD=OFF \
  -DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check
make install
cd ..

Tests (Gromacs)

All the tests have passed successfully.

Notes

  • Neural Network Potential is available thanks to libtorch 2.7.0.
    • The model should be trained/created with pytorch 2.7.0 according to the official document. If you want to use different version of pytorch, you may need to prepare it by yourselves. The above procedure may be helpful.
    • For GPU-enabled version, please see this page.
  • External plumed is also available.
    • PLUMED_KERNEL environment variable is set to libplumedKernel.so of plumed 2.9.3 in gromacs/2025.2 module on RCCS system.
  • We prepared two MPI double precision versions, since we couldn't enable CP2K and Neural Network Potential simultaneously.
    • (LibTorch 1.x of cp2k 2024.3 toolchain is not available for gromacs 2025.)
    • CP2K enabled version involves "cp2k" in its name (e.g. gmx_mpi_d_cp2k).