GENESIS 2.1.6.1 with GPU support

ウェブページ

https://mdgenesis.org/
https://github.com/genesis-release-r-ccs/genesis

バージョン

2.1.6.1

ビルド環境

  • GCC 15.1.1 (gcc-toolset-15)
  • MKL 2025.3 (oneAPI 2025.3.1)
  • Intel MPI 2021.17.2 (oneAPI 2025.3.1)
  • CUDA 13.1 Update 1

ビルドに必要なファイル

  • genesis-2.1.6.1.tar.gz

ビルド手順

ccgpuでビルドとテスト実行。

#!/bin/sh

VERSION=2.1.6.1
BASEDIR=/home/users/${USER}/Software/GENESIS/${VERSION}
TARBALL=${BASEDIR}/genesis-${VERSION}.tar.gz

INSTALL_DIR=/apl/genesis/${VERSION}-CUDA

WORKDIR=/gwork/users/${USER}

PARALLEL_TESTS=8

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

module -s purge
module -s load gcc-toolset/15
module -s load mkl/2025.3
module -s load intelmpi/2021.17.2
module -s load cuda/13.1u1

export LANG=C
export LC_ALL=C
export OMP_NUM_THREADS=1
MKL_LIBS="$(mkl_link_tool --quiet -libs -c gnu_f -o gomp)"
ulimit -s unlimited

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

tar xf ${TARBALL}
cd genesis-${VERSION}

sed -i -e "s|nvToolsExt.h|nvtx3/nvToolsExt.h|" src/spdyn/gpu_sp_energy.cu

autoreconf
LAPACK_LIBS="${MKL_LIBS}" FC=mpif90 CC=mpicc \
 ./configure --prefix=${INSTALL_DIR} \
             --enable-gpu \
             --enable-single \
             --with-cuda=/apl/cuda/13.1u1 \
             --with-gpuarch=sm_80
make && make install

# tests
SPDYN=${INSTALL_DIR}/bin/spdyn

cd tests/regression_test
for f in test.py test_remd.py test_fep.py test_rpath.py test_gamd.py; do
 sed -i -e "s/env python/env python3/" $f
done

# spdyn tests
./test.py           "mpirun -np ${PARALLEL_TESTS} $SPDYN"
./test_remd.py      "mpirun -np ${PARALLEL_TESTS} $SPDYN"
./test_rpath.py     "mpirun -np ${PARALLEL_TESTS} $SPDYN"
./test_gamd.py      "mpirun -np ${PARALLEL_TESTS} $SPDYN"
./test_fep.py       "mpirun -np ${PARALLEL_TESTS} $SPDYN"

テスト

CUTOFF を使うテストは全て abort (仕様)、他のテストは全てパス。

メモ

  • CPU 版のようにインテルコンパイラを使うと速度が少し落ちてしまうため gcc を利用。
  • CUDA 12.9 以降を使う場合には nvToolsExt.h の修正が必要。
  • --with-gpuarch=sm_80 (for Ampere)をつけない場合 compute capability 6.0 用のフラグでエラーが発生。