Gromacs 2026.2 with CUDA support
Webpage
Version
2026.2
Build Environment
- GCC 13.3.1 (gcc-toolset-13)
- Open MPI 4.1.8
- cmake 3.31.6
- HDF5 1.14.6
- (./configure --enable-fortran --enable-cxx --enable-hl)
- openblas 0.3.31 (lp64)
- libtorch 2.12.0-cu132 (downloaded)
- cudnn 9.22.0-cuda13
- cudss 0.7.1.4-cuda13
- cusparselt 0.9.1
- nccl 2.30.4-1 (cuda13.2)
- nvshmem 3.6.5-0 (cuda 13.2)
- heFFTe 2.4.1
Files Required
- gromacs-2026.2.tar.gz
- regressiontests-2026.2.tar.gz
Build Procedure
heFFTe 2.4.1
#!/bin/sh
VERSION=2.4.1
GITHUB_URL=https://github.com/icl-utk-edu/heffte
INSTALLDIR=/apl/gromacs/2026.2-CUDA/heffte-2.4.1
WORKDIR=/gwork/users/${USER}module -s purge
module -s load gcc-toolset/13
module -s load cuda/13.2
module -s load openmpi/4.1.8/gcc13-cuda13.2cd ${WORKDIR}
if [ -d heffte ]; then
mv heffte heffte_erase
rm -rf heffte_erase &
fi
git clone ${GITHUB_URL} -b v${VERSION}
cd heffte
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=${INSTALLDIR} \
-DHeffte_ENABLE_CUDA=ON \
-DCMAKE_CUDA_ARCHITECTURES=80
make -j8 && make install
Gromacs
#!/bin/sh
#!/bin/sh
VERSION=2026.2
INSTALL_PREFIX=/apl/gromacs/${VERSION}-CUDABASEDIR=/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}FFTW_VER=3.3.10
FFTW_PATH=${BASEDIR}/fftw-${FFTW_VER}.tar.gzPARALLEL=12
export LANG=C#---------------------------------------------------------------------
umask 0022
module -s purge
module -s load gcc-toolset/13
module -s load openmpi/4.1.8/gcc13-cuda13.2
module -s load cuda/13.2
module -s load cmake/3.31.6
module -s load hdf5/1.14.6
module -s load openblas/0.3.31-lp64
module -s load cudnn/9.22.0-cuda13
module -s load cudss/0.7.1.4-cuda13
module -s load cusparselt/0.9.1
module -s load nccl/2.30.4-1-cuda13.2
module -s load nvshmem/3.6.5-0-cuda13.2
TORCH_DIR=/apl/libtorch/2.12.0/cu132
OPENBLAS_DIR=/apl/openblas/0.3.31/lp64
export CUDNN_ROOT_DIR=/apl/cudnn/9.22.0/cudnn-linux-x86_64-9.22.0.52_cuda13-archive
export CUDSS_ROOT_DIR=/apl/cudss/0.7.1/libcudss-linux-x86_64-0.7.1.4_cuda13-archive
export CUSPARSELT_ROOT_DIR=/apl/cusparselt/0.9.1/libcusparse_lt-linux-x86_64-0.9.1.1_cuda13-archive
#export NVSHMEM_ROOT=/apl/nvshmem/3.6.5-0/cuda13.2
export HEFFTE_ROOT=/apl/gromacs/2026.2-CUDA/heffte-2.4.1#export CUDA_VISIBLE_DEVICES=0,1
unset OMP_NUM_THREADScd ${WORKDIR}
if [ -d gromacs-${VERSION} ]; then
mv gromacs-${VERSION} gromacs_erase
rm -rf gromacs_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};${OPENBLAS_DIR}" \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DGMX_MPI=OFF \
-DGMX_GPU=CUDA \
-DGMX_DOUBLE=OFF \
-DGMX_THREAD_MPI=ON \
-DGMX_USE_CUFFTMP=OFF \
-DGMX_NNPOT=TORCH \
-DCAFFE2_USE_CUDNN=ON \
-DCAFFE2_USE_CUSPARSELT=ON \
-DUSE_CUDSS=ON \
-DGMX_USE_EXT_FMM=OFF \
-DGMX_USE_HDF5=ON \
-DGMX_BUILD_OWN_FFTW=ON \
-DGMX_BUILD_OWN_FFTW_URL=${FFTW_PATH} \
-DREGRESSIONTEST_DOWNLOAD=OFF \
-DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check && make install
cd ..
rm -rf rccs-s# single precision, with MPI
mkdir rccs-mpi-s
cd rccs-mpi-s
# -DGMX_NVSHMEM=ON \
# -DNVSHMEM_ROOT=${NVSHMEM_ROOT} \
cmake .. \
-DCMAKE_PREFIX_PATH="${TORCH_DIR};${OPENBLAS_DIR}" \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
-DGMX_MPI=ON \
-DGMX_GPU=CUDA \
-DGMX_DOUBLE=OFF \
-DGMX_THREAD_MPI=OFF \
-DGMX_USE_CUFFTMP=OFF \
-DGMX_NNPOT=TORCH \
-DCAFFE2_USE_CUDNN=ON \
-DCAFFE2_USE_CUSPARSELT=ON \
-DUSE_CUDSS=ON \
-DGMX_USE_EXT_FMM=OFF \
-DGMX_USE_HDF5=ON \
-DGMX_USE_PLUMED=ON \
-DGMX_USE_HEFFTE=ON \
-DHeffte_ROOT=${HEFFTE_ROOT} \
-DGMX_BUILD_OWN_FFTW=ON \
-DGMX_BUILD_OWN_FFTW_URL=${FFTW_PATH} \
-DREGRESSIONTEST_DOWNLOAD=OFF \
-DREGRESSIONTEST_PATH=${REGRESSION_PATH}
make -j${PARALLEL} && make check && make install
cd ..
rm -rf rccs-mpi-s
Tests
All the tests have passed successfully.
Notes
- Please also check notes for CPU version.
- Neural Network Potential using libtorch 2.12.0 is enabled.
- The model should be trained/created with pytorch 2.12.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.
- Binary version of libtorch 2.12.0 is employed. This version is free from glibc version issue. (We didn't try to build libtorch 2.12.0+cuda.)
- Plumed is enabled but it does not work properly.
- Serial run seems to work. However, MPI parallel runs failed. (Tested with empty plumed.dat.)
- Nvshmem is used only for the dependency of libtorch. It is not used for gromacs in this build.
- (When it is enabled for gromacs (GMX_NVSHMEM=ON), compilation error occurred.)