GENESIS 2.0.3 with GPU support

ウェブページ

https://www.r-ccs.riken.jp/labs/cbrt/

バージョン

2.0.3

ビルド環境

  • gcc 11.2.1 (gcc-toolset/11)
  • MKL 2022.2.1
  • HPC-X 2.11 (Open MPI 4.1.4)
    • (実際のビルドでは HPC-X 2.13.1 を使っています。しかし、並列数を増やしたときに問題が発生したため、HPC-X 2.11 に切り替えて対処しています。)
    • (以下の手順でも便宜上 HPC-X 2.11 を使ったとして手順を記述します。)
  • CUDA 11.6

ビルドに必要なファイル

  • genesis-2.0.3.tar.bz2
  • tests-2.0.3.tar.bz2

ビルド手順

#!/bin/sh

VERSION=2.0.3
BASEDIR=/home/users/${USER}/Software/GENESIS/${VERSION}
SRC_TARBALL=${BASEDIR}/genesis-${VERSION}.tar.bz2
TESTS_TARBALL=${BASEDIR}/tests-${VERSION}.tar.bz2

INSTALLDIR=/apl/genesis/2.0.3-CUDA

WORKDIR=/gwork/users/${USER}
BUILDDIR=${WORKDIR}/genesis-${VERSION}
TESTSDIR=${WORKDIR}/tests-${VERSION}

PARALLEL_TESTS=8

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

module -s purge
module -s load gcc-toolset/11
module -s load mkl/2022.2.1
module -s load openmpi/4.1.5-hpcx/gcc11
module -s load cuda/11.6
export CUDA_VISIBLE_DEVICES=0

export LANG=C
export LC_ALL=C
export OMP_NUM_THREADS=1
#ulimit -s unlimited

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

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

tar jxf ${SRC_TARBALL}
tar jxf ${TESTS_TARBALL}

cd ${BUILDDIR}

#sed -i -e 6942i"GENCODEFLAG+=' --generate-code=arch=compute_80,code=\"sm_80,compute_80\"'" configure

FC=mpif90 CC=mpicc \
LAPACK_LIBS=" -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl" \
  ./configure --prefix=${INSTALLDIR} \
              --enable-gpu \
              --enable-single \
              --with-cuda=/apl/cuda/11.6

make && make install

SPDYN=${INSTALLDIR}/bin/spdyn

cd ${TESTSDIR}/regression_test

for f in test.py test_remd.py test_rpath.py test_gamd.py; do
  sed -i -e "s/env python/env python3/" $f
done
sed -i -e "s/env python/env python2/" test_nonstrict.py

# 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_nonstrict.py "mpirun -np ${PARALLEL_TESTS} $SPDYN" # ?

メモ

  • (cpu 版の情報もご確認ください)
  • CUDA 12.0 を使うと __shfl_xor 等の obsolete な命令でエラーになるため回避。
  • (2024/1/15 追記) compute capability 80 の指定は実際には使っていなかったため、修正