LAMMPS 22Jul2025 Update 5 - CUDA

ウェブページ

https://www.lammps.org

バージョン

22Jul2025 Update 5

ビルド環境

  • GCC 10.3.1 (gcc-toolset-10)
  • Open MPI 4.1.8 (CUDA-aware)
  • GSL 2.8
  • OpenBLAS 0.3.29
  • CUDA 13.0 update 2
  • pyenv 2.6.17

ビルドに必要なファイル

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

ビルド手順

#!/bin/sh

VERSION=2025-Jul22-u5
NAME=lammps-22Jul2025
INSTALL_PREFIX=/apl/lammps/${VERSION}-CUDA

BASEDIR=/home/users/${USER}/Software/LAMMPS/${VERSION}
LAMMPS_TARBALL=${BASEDIR}/lammps-src-22Jul2025_update5.tar.gz

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

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

GPU_ARCH=sm_80
PARALLEL=12

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

module -s purge
module -s load gcc-toolset/10
module -s load openmpi/4.1.8/gcc13-cuda13.0u2
module -s load gsl/2.8
#module -s load mkl/2023.2.0
module -s load openblas/0.3.29-lp64
module -s load cuda/13.0u2

module -s load pyenv/2.6.17
export PYENV_ROOT=/apl/pyenv/repos/2.6.17
pyenv activate 3.12.12-lammps-22jul2025-cuda
eval "$(pyenv init -)"

PYTHONEXE=/apl/pyenv/repos/2.6.17/versions/3.12.12-lammps-22jul2025-cuda/bin/python
PYTHONINC=/apl/pyenv/repos/2.6.17/versions/3.12.12/include/python3.12

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

tar zxf ${LAMMPS_TARBALL}

cd ${NAME}
# for FFT_SINGLE=on
sed -i -e '26i#include "force.h"' unittest/force-styles/test_fix_timestep.cpp
sed -i -e '29i#include "kspace.h"' unittest/force-styles/test_pair_style.cpp
# pass python exe path to MDI cmake
sed -i -e "59i\    -DPython_EXECUTABLE=${PYTHONEXE}" cmake/Modules/Packages/MDI.cmake
mkdir build && cd build

# Disabled PKGs:
# ADIOS, VTK: noavail
# GUI: manually disabled
# KIM: to avoid dependence to libkim-api.so.2
# INTEL: not necessary for gcc build

cmake ../cmake \
 -DLAMMPS_MACHINE=rccs-cuda \
 -DENABLE_TESTING=on \
 -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
 -DCMAKE_C_COMPILER=mpicc \
 -DCMAKE_CXX_COMPILER=mpicxx \
 -DCMAKE_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 \
 -DBUILD_WHAM=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_APIP=on \
 -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 \
 -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=on \
 -DDOWNLOAD_MDI=on \
 -DPKG_MEAM=on \
 -DPKG_MESONT=on \
 -DPKG_MGPT=on \
 -DPKG_MISC=on \
 -DPKG_ML-HDNNP=off \
 -DDOWNLOAD_N2P2=off \
 -DPKG_ML-IAP=on \
 -DMLIAP_ENABLE_PYTHON=on \
 -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 \
 -DBLA_PREFER_PKGCONFIG=on \
 -DCMAKE_BUILD_TYPE=Release

#make -j ${PARALLEL}
make VERBOSE=1 -j ${PARALLEL}

export OMP_NUM_THREADS=2

#make test
make install
cp -a ../examples ${INSTALL_PREFIX}
mkdir -p ${INSTALL_PREFIX}/lib64/python
cp -r ../python/lammps ${INSTALL_PREFIX}/lib64/python
ln -s ${INSTALL_PREFIX}/lib64/liblammps_rccs-cuda.so \
     ${INSTALL_PREFIX}/lib64/python/lammps/liblammps.so

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

テスト

以下のスクリプトを ccgpu にて実行しています。

#!/bin/sh

VERSION=2025-Jul22-u5
NAME=lammps-22Jul2025
INSTALL_PREFIX=/apl/lammps/${VERSION}-CUDA
#INSTALL_PREFIX=/home/users/qf7/Software/LAMMPS/${VERSION}/gcc10-cuda

BASEDIR=/home/users/${USER}/Software/LAMMPS/${VERSION}
LAMMPS_TARBALL=${BASEDIR}/lammps-src-22Jul2025_update5.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
export OMP_NUM_THREADS=1

module -s purge
module -s load gcc-toolset/10
module -s load openmpi/4.1.8/gcc13-cuda12.8u1
module -s load gsl/2.8
module -s load openblas/0.3.29-lp64
module -s load cuda/12.8u1

module -s load pyenv/2.6.17
export PYENV_ROOT=/apl/pyenv/repos/2.6.17
pyenv activate 3.12.12-lammps-22jul2025-cuda
eval "$(pyenv init -)"

PYTHONEXE=/apl/pyenv/repos/2.6.17/versions/3.12.12-lammps-22jul2025-cuda/bin/python
PYTHONINC=/apl/pyenv/repos/2.6.17/versions/3.12.12/include/python3.12

export PYTHONPATH=${INSTALL_PREFIX}/lib64/python

cd ${WORKDIR}
cd ${NAME}
cd build
make test # need to do it separately...

  • 616:TestMliapPyUnified で追加のエラーが出ています。
    • テスト中に python 環境を正しく読み込めていないことが原因のようです。

有効なパッケージ

APIP 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 MDI MEAM MESONT 
MGPT MISC ML-IAP 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

メモ

  • 22Jul2025 Update 3 (CUDA) とほぼ同じ手順でビルドしています。
    • 追加で ML-IAP を有効にし、cuda を含む python 環境も合わせて使うようにしています。
    • lammps の python パッケージも無理矢理有効にしています。
    • module を読み込めば、python 環境内で import lammps ができるようになります。
    • PYTHONPATH などは module 内で定義しています。