LAMMPS 29Aug2024 - CUDA

ウェブページ

https://www.lammps.org

バージョン

29Aug2024

ビルド環境

  • GCC 13.1.1 (gcc-toolset-13)
  • Open MPI 4.1.6 (CUDA-aware)
  • CUDA 12.4 Update 1
  • GSL 2.8

ビルドに必要なファイル

  • lammps-stable_29Aug2024.tar.gz
  • (一部ファイルは以下スクリプト中で取得)

ビルド手順

#!/bin/sh

VERSION=2024-Aug29
NAME=lammps-stable_29Aug2024
INSTALL_PREFIX=/apl/lammps/${VERSION}-CUDA

BASEDIR=/home/users/${USER}/Software/LAMMPS/${VERSION}
LAMMPS_TARBALL=${BASEDIR}/${NAME}.tar.gz

WORKDIR=/gwork/users/${USER}/lammps-cuda
LAMMPS_WORKDIR=${WORKDIR}/${NAME}

GPU_ARCH=sm_80

FFMPEG_BIN=/apl/ffmpeg/6.1/bin/ffmpeg
VMD_MOLFILE_INC=/home/users/${USER}/Software/VMD/1.9.4/vmd-1.9.4a57/plugins/include
GSL_ROOT=/apl/gsl/2.8

PARALLEL=12

#------------------------------------------------------------------
umask 0022
export LANG=C
ulimit -s unlimited

module -s purge
module -s load gcc-toolset/13
module -s load openmpi/4.1.6/gcc13-cuda12.4u1
module -s load gsl/2.8
module -s load cuda/12.4u1

PYTHONEXE=/usr/bin/python3.6m
PYTHONINC=/usr/include/python3.6m

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

tar zxf ${LAMMPS_TARBALL}

cd ${NAME}
mkdir build && cd build

cmake ../cmake \
 -DLAMMPS_MACHINE=rccs-cuda \
 -DENABLE_TESTING=on \
 -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
 -DCMAKE_C_COMPILER=gcc \
 -DCMAKE_CXX_COMPILER=g++ \
 -DCMAKE_Fortran_COMPILER=gfortran \
 -DCMAKE_MPI_C_COMPILER=mpicc \
 -DCMAKE_MPI_CXX_COMPILER=mpic++ \
 -DCMAKE_MPI_Fortran_COMPILER=mpif90 \
 -DCMAKE_C_FLAGS_RELEASE="-O3 -DNDEBUG" \
 -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG" \
 -DCMAKE_Fortran_FLAGS_RELEASE="-O3 -DNDEBUG" \
 -DPython_EXECUTABLE=${PYTHONEXE} \
 -DPython_INCLUDE_DIR=${PYTHONINC} \
 -DGSL_ROOT_DIR=${GSL_ROOT} \
 -DBUILD_SHARED_LIBS=on \
 -DBUILD_TOOLS=on \
 -DBUILD_MPI=on \
 -DBUILD_OMP=on \
 -DBUILD_LAMMPS_GUI=off \
 -DFFT=FFTW3 \
 -DFFT_SINGLE=on \
 -DFFT_FFTW_THREADS=on \
 -DWITH_JPEG=on \
 -DWITH_PNG=on \
 -DWITH_GZIP=on \
 -DWITH_FFMPEG=on \
 -DFFMPEG_EXECUTABLE=${FFMPEG_BIN} \
 -DPKG_ADIOS=off \
 -DPKG_AMOEBA=off \
 -DPKG_ASPHERE=on \
 -DPKG_ATC=on \
 -DPKG_AWPMD=on \
 -DPKG_BOCS=on \
 -DPKG_BODY=on \
 -DPKG_BPM=on \
 -DPKG_BROWNIAN=on \
 -DPKG_CG-DNA=on \
 -DPKG_CG-SPICA=on \
 -DPKG_CLASS2=on \
 -DPKG_COLLOID=on \
 -DPKG_COLVARS=on \
 -DPKG_COMPRESS=on \
 -DPKG_CORESHELL=on \
 -DPKG_DIELECTRIC=on \
 -DPKG_DIFFRACTION=on \
 -DPKG_DIPOLE=on \
 -DPKG_DPD-BASIC=on \
 -DPKG_DPD-MESO=on \
 -DPKG_DPD-REACT=on \
 -DPKG_DPD-SMOOTH=on \
 -DPKG_DRUDE=on \
 -DPKG_EFF=on \
 -DPKG_ELECTRODE=on \
 -DPKG_EXTRA-COMMAND=on \
 -DPKG_EXTRA-COMPUTE=on \
 -DPKG_EXTRA-DUMP=on \
 -DPKG_EXTRA-FIX=on \
 -DPKG_EXTRA-MOLECULE=on \
 -DPKG_EXTRA-PAIR=on \
 -DPKG_FEP=on \
 -DPKG_GPU=on \
 -DGPU_API=cuda \
 -DGPU_ARCH=${GPU_ARCH} \
 -DPKG_GRANULAR=on \
 -DPKG_H5MD=on \
 -DPKG_INTEL=off \
 -DPKG_INTERLAYER=on \
 -DPKG_KIM=off \
 -DDOWNLOAD_KIM=off \
 -DPKG_KOKKOS=off \
 -DKokkos_ARCH_ZEN3=off \
 -DKokkos_ENABLE_OPENMP=off \
 -DPKG_KSPACE=on \
 -DPKG_LATBOLTZ=on \
 -DPKG_LEPTON=on \
 -DPKG_MACHDYN=on \
 -DDOWNLOAD_EIGEN3=on \
 -DPKG_MANIFOLD=on \
 -DPKG_MANYBODY=on \
 -DPKG_MC=on \
 -DPKG_MDI=off \
 -DDOWNLOAD_MDI=off \
 -DPKG_MEAM=on \
 -DPKG_MESONT=on \
 -DPKG_MGPT=on \
 -DPKG_MISC=on \
 -DPKG_ML-HDNNP=off \
 -DDOWNLOAD_N2P2=off \
 -DPKG_ML-IAP=off \
 -DMLIAP_ENABLE_PYTHON=off \
 -DPKG_ML-PACE=on \
 -DPKG_ML-POD=on \
 -DPKG_ML-QUIP=on \
 -DDOWNLOAD_QUIP=on \
 -DPKG_ML-RANN=on \
 -DPKG_ML-SNAP=on \
 -DPKG_ML-UF3=on \
 -DPKG_MOFFF=on \
 -DPKG_MOLECULE=on \
 -DPKG_MOLFILE=on \
 -DMOLFILE_INCLUDE_DIR=${VMD_MOLFILE_INC} \
 -DPKG_NETCDF=on \
 -DPKG_OPENMP=on \
 -DPKG_OPT=on \
 -DPKG_ORIENT=on \
 -DPKG_PERI=on \
 -DPKG_PHONON=on \
 -DPKG_PLUGIN=on \
 -DPKG_PLUMED=on \
 -DDOWNLOAD_PLUMED=on \
 -DPKG_POEMS=on \
 -DPKG_PTM=on \
 -DPKG_PYTHON=on \
 -DPKG_QEQ=on \
 -DPKG_QMMM=on \
 -DPKG_QTB=on \
 -DPKG_REACTION=on \
 -DPKG_REAXFF=on \
 -DPKG_REPLICA=on \
 -DPKG_RHEO=on \
 -DPKG_RIGID=on \
 -DPKG_SCAFACOS=on \
 -DDOWNLOAD_SCAFACOS=on \
 -DPKG_SHOCK=on \
 -DPKG_SMTBQ=on \
 -DPKG_SPH=on \
 -DPKG_SPIN=on \
 -DPKG_SRD=on \
 -DPKG_TALLY=on \
 -DPKG_UEF=on \
 -DPKG_VORONOI=on \
 -DDOWNLOAD_VORO=on \
 -DPKG_VTK=off \
 -DPKG_YAFF=on \
 -DBLA_VENDOR=OpenBLAS \
 -DCMAKE_BUILD_TYPE=Release

make VERBOSE=1 -j ${PARALLEL}

export OMP_NUM_THREADS=2

#make test
make install

cp -a ../examples ${INSTALL_PREFIX}

cd ${INSTALL_PREFIX}
for f in etc/profile.d/*; do
 if [ -f $f ]; then
   ln -s $f .
 fi
done

cd lib64
if [ -f liblammps_rccs-cuda.so ]; then
 ln -s liblammps_rccs-cuda.so liblammps.so
fi
if [ -f liblammps_rccs-cuda.so.0 ]; then
 ln -s liblammps_rccs-cuda.so.0 liblammps.so.0
fi

有効なパッケージ

ASPHERE ATC AWPMD BOCS BODY BPM BROWNIAN CG-DNA CG-SPICA CLASS2 COLLOID
COLVARS COMPRESS CORESHELL DIELECTRIC DIFFRACTION DIPOLE DPD-BASIC DPD-MESO
DPD-REACT DPD-SMOOTH DRUDE EFF ELECTRODE EXTRA-COMMAND EXTRA-COMPUTE
EXTRA-DUMP EXTRA-FIX EXTRA-MOLECULE EXTRA-PAIR FEP GPU GRANULAR H5MD
INTERLAYER KSPACE LATBOLTZ LEPTON MACHDYN MANIFOLD MANYBODY MC MEAM MESONT
MGPT MISC ML-PACE ML-POD ML-QUIP ML-RANN ML-SNAP ML-UF3 MOFFF MOLECULE
MOLFILE NETCDF OPENMP OPT ORIENT PERI PHONON PLUGIN PLUMED POEMS PTM PYTHON
QEQ QMMM QTB REACTION REAXFF REPLICA RHEO RIGID SCAFACOS SHOCK SMTBQ SPH
SPIN SRD TALLY UEF VORONOI YAFF

テスト

(すべて成功しています)

メモ

  • 今回も GPU 有効時は AMOEBA は有効にできない
  • 複数 GPU 時も特に何もしなくても問題なく複数 GPU を使えるようになっている。(2Aug2023 でも同様)