NAMD 3.0b6 - SMP(single node)+CUDA

ウェブページ

http://www.ks.uiuc.edu/Research/namd/

バージョン

3.0b6

ビルド環境

  • GCC 12.1.1 (gcc-toolset-12)
  • Intel MKL 2024.0
  • CUDA 12.2 Update 2

ビルドに必要なファイル

  • NAMD_3.0b6_Source.tar.gz
    • tcl, tcl-threaded は http://www.ks.uiuc.edu/Research/namd/libraries より取得
    • fftw については MKL を利用

ビルド手順

#!/bin/sh

VERSION=3.0b6
CHARM_VERSION=7.0.0
WORKDIR=/gwork/users/${USER}
SOURCEDIR=/home/users/${USER}/Software/NAMD/${VERSION}
NAME=NAMD_${VERSION}_Source

TARBALL=${SOURCEDIR}/${NAME}.tar.gz

LIBURL=http://www.ks.uiuc.edu/Research/namd/libraries
#FFTW=fftw-linux-x86_64
#FFTW_URL=${LIBURL}/${FFTW}.tar.gz
TCL=tcl8.5.9-linux-x86_64
TCL_URL=${LIBURL}/${TCL}.tar.gz
TCL_THREADED=tcl8.5.9-linux-x86_64-threaded
TCL_THREADED_URL=${LIBURL}/${TCL_THREADED}.tar.gz

#TARBALL_FFTW=${SOURCEDIR}/${FFTW}.tar.gz
TARBALL_TCL=${SOURCEDIR}/${TCL}.tar.gz
TARBALL_TCL_THREADED=${SOURCEDIR}/${TCL_THREADED}.tar.gz

PARALLEL=12

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

export LANG=""
export LC_ALL=C

module -s purge
module -s load gcc-toolset/12
module -s load mkl/2024.0
module -s load cuda/12.2u2

cd ${WORKDIR}
if [ -d ${NAME} ]; then
  mv ${NAME} namd_erase
  rm -rf namd_erase &
fi

tar zxf ${TARBALL}
cd ${NAME}
tar xf charm-${CHARM_VERSION}.tar

cd charm-v${CHARM_VERSION}

export CC=gcc
export CXX=g++
export F90=gfortran
export F77=gfortran

./build charm++ multicore-linux-x86_64 gcc \
       --no-build-shared --with-production -j${PARALLEL}
cd ../

tar zxf ${TARBALL_TCL}
mv ${TCL} tcl
tar zxf ${TARBALL_TCL_THREADED}
mv ${TCL_THREADED} tcl-threaded

./config Linux-x86_64-g++ \
        --charm-arch multicore-linux-x86_64-gcc \
        --with-mkl \
        --with-python \
        --with-single-node-cuda
cd Linux-x86_64-g++

make -j${PARALLEL}
make release
# install contents of Linux-x86_64-g++/NAMD_3.0b6_Linux-x86_64-multicore-CUDA.tar.gz into /apl/namd/3.0b6-smp-cuda

メモ

  • multinode での実行には対応していません。
    • 単一ノードで複数の GPU を使うことは可能です。
  • minimize, md 等の基本機能はすべて問題無く GPU により高速化できます。
    • (3.0b2 の記事で minimize は利用できないと書いてしまいましたが、3.0b1 以降では minimize は利用可能でした(記事は訂正済です)。申し訳ありません。3.0 alpha 版からの更新内容を把握できておりませんでした。)