LINUX服务器安装LAMMPS支持DEEPMD与PYTHON

系统说明

目前用的是 openSUSE-Leap-15.6,需要注意的是,一些软件版本问题

  • cmake 必须大于 3.25opensuse 安装 cmake 而不要 cmake3
  • gcc 推荐超过10,opensuse 安装 gcc13 相关需要的软件
  • openmpi 使用 openmpi3openmpi4 都可以

软件安装参考

1
zypper install python312-devel fftw3-devel ffmpeg-devel gcc13 clang cmake openmpi3-devel libpng16-devel git 

一些说明

  • 所有自己编译的软件最终安装在 /opt 目录下
  • 软件下载在 /data/software/lmp/ 这里,具体自定义

设置路径

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装位置
export TORCH_PREFIX=/opt/libtorch/2.1.2-cpu-cxx11
export DPMD_PREFIX=/opt/deepmd/3.1.2-pt-cpu-gcc13-openmpi3.1.6
export LMP_PREFIX=/opt/lammps/2025.07.22.3

# 解压位置
export PATH_SRC=/data/software/lmp/
export TORCH_SRC=/data/software/lmp/libtorch
export LAMMPS_SRC=/data/software/lmp/lammps-stable_22Jul2025_update3
export DEEPMD_SRC=/data/software/lmp/deepmd-kit-3.1.2

# /opt/modulefiles
export PATH_MODULE=/opt/modulefiles

先安装libtorch

1
2
3
4
5
6
mkdir -p ${TORCH_PREFIX}
cd ${PATH_SRC}

wget "https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.1.2+cpu.zip"
unzip -q libtorch-cxx11-abi-shared-with-deps-2.1.2+cpu.zip
mv libtorch/* ${TORCH_PREFIX}

自检查

1
2
3
test -f /opt/libtorch/2.1.2-cpu-cxx11/share/cmake/Torch/TorchConfig.cmake && echo "TorchConfig OK"

ls /opt/libtorch/2.1.2-cpu-cxx11/lib | egrep 'libtorch|libc10' | head

配置module

1
2
mkdir -p ${PATH_MODULE}/libtorch
vim ${PATH_MODULE}/libtorch/2.1.2-cpu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#%Module1.0
module-whatis "LibTorch 2.1.2 CPU (cxx11 ABI, shared-with-deps)"

set root /opt/libtorch/2.1.2-cpu-cxx11

# 运行时动态库
prepend-path LD_LIBRARY_PATH $root/lib

# CMake 找 TorchConfig.cmake
setenv Torch_DIR $root/share/cmake/Torch

# 编译期更省事(DeepMD/LAMMPS 都会用到)
prepend-path CMAKE_PREFIX_PATH $root

setenv Torch_ROOT $root

先安装deepmd

下载必要程序并解压

1
2
3
4
5
6
cd /data/software/lmp
wget https://github.com/lammps/lammps/archive/refs/tags/stable_22Jul2025_update3.zip
wget https://github.com/deepmodeling/deepmd-kit/archive/refs/tags/v3.1.2.zip

unzip -q stable_22Jul2025_update3.zip
unzip -q v3.1.2.zip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module purge
module use ${PATH_MODULE} # 如果你们系统已配置 modulepath,这行可省略
module load libtorch/2.1.2-cpu

cd $DEEPMD_SRC/source
mkdir -p build-plugin
cd build-plugin

cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$DPMD_PREFIX" \
-DCMAKE_C_COMPILER=/usr/bin/gcc-13 \
-DCMAKE_CXX_COMPILER=/usr/bin/g++-13 \
-DENABLE_PYTORCH=ON \
-DENABLE_TENSORFLOW=OFF \
-DTorch_DIR="$Torch_DIR" \
-DLAMMPS_SOURCE_ROOT="$LAMMPS_SRC"

make -j
make install

确认

1
find "$DPMD_PREFIX/lib" -maxdepth 3 -name "libdeepmd_lmp.so" -o -path "*deepmd_lmp*" -print
1
mkdir -p ${PATH_MODULE}/deepmd
1
vim ${PATH_MODULE}/deepmd/3.1.2-pt-cpu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#%Module1.0
module-whatis "DeepMD-kit 3.1.2 (PyTorch backend, CPU) gcc13 + openmpi3.1.6"

# Ensure system modulepath is visible for gnu-openmpi
module use /usr/share/modules

# With Tcl Modules 3.2.10, prereq is OK only if MODULEPATH can see it.
# To avoid future MODULEPATH issues, load explicitly:
module load gnu-openmpi/3.1.6
module load libtorch/2.1.2-cpu

set root /opt/deepmd/3.1.2-pt-cpu-gcc13-openmpi3.1.6
setenv DPMD_PREFIX $root

prepend-path LD_LIBRARY_PATH $root/lib
prepend-path CMAKE_PREFIX_PATH $root

安装lammps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
cd "$LAMMPS_SRC"
rm -rf build
mkdir build && cd build

cmake ../cmake \
-D CMAKE_C_COMPILER=/usr/bin/gcc-13 \
-D CMAKE_CXX_COMPILER=/usr/bin/g++-13 \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX="${LMP_PREFIX}" \
-D LAMMPS_INSTALL_RPATH=ON \
-D BUILD_SHARED_LIBS=YES \
-D PKG_PLUGIN=ON \
-D PKG_KSPACE=ON \
-D PKG_MANYBODY=ON \
-D PKG_MOLECULE=ON \
-D PKG_PHONON=ON \
-D PKG_PYTHON=ON \
-D Python3_EXECUTABLE=/usr/bin/python3.12

make -j
make install

# phana
cd ../tools/phonon/
cmake -S . -B build
cmake --build build
cp build/phana ${LMP_PREFIX}/bin

# python
cd ../python/
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip setuptools wheel build
python -m build
cp -r dist/ ${LMP_PREFIX}
python3.12 -m pip install --no-deps --target ${LMP_PREFIX}/python/site-packages ${LMP_PREFIX}/dist/lammps-2025.7.22-py3-none-any.whl
1
mkdir -p ${PATH_MODULE}/lammps
1
vim ${PATH_MODULE}/lammps/2025.07.22.3-deepmd-pt-cpu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#%Module1.0
module-whatis "LAMMPS 2025.07.22.3 + DeePMD plugin (PyTorch CPU) gcc13 + openmpi3.1.6"

# Ensure system modulepath is visible (gnu-openmpi lives here)
module use /usr/share/modules

# Load deps (Tcl Modules 3.2.10 does NOT support 'module-info exists')
module load gnu-openmpi/3.1.6
module load libtorch/2.1.2-cpu
module load deepmd/3.1.2-pt-cpu

set lmp_root /opt/lammps/2025.07.22.3
prepend-path PATH $lmp_root/bin
prepend-path LD_LIBRARY_PATH $lmp_root/lib
prepend-path LD_LIBRARY_PATH $lmp_root/lib64
prepend-path PYTHONPATH $lmp_root/python/site-packages

set dp_root /opt/deepmd/3.1.2-pt-cpu-gcc13-openmpi3.1.6
prepend-path LD_LIBRARY_PATH $dp_root/lib

set torch_root /opt/libtorch/2.1.2-cpu-cxx11
prepend-path LD_LIBRARY_PATH $torch_root/lib

# DeePMD plugin path (plugin mode)
setenv LAMMPS_PLUGIN_PATH $dp_root/lib

# Silence irdma/openib warnings (force TCP)
setenv OMPI_MCA_btl ^openib
setenv OMPI_MCA_oob ^ud
setenv OMPI_MCA_btl_openib_warn_no_device_params_found 0

测试

1
vim in.plugin_test
1
2
plugin load libdeepmd_lmp.so
print "DEEPMD plugin loaded OK"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module purge
module use ${PATH_MODULE}
module load lammps/2025.07.22.3-deepmd-pt-cpu

which lmp
# 看到刚安装新的位置

lmp -in in.plugin_test
# 看到类似如下
# LAMMPS (22 Jul 2025 - Update 3)
# OMP_NUM_THREADS environment is not set. Defaulting to 1 thread.
# using 1 OpenMP thread(s) per MPI task
# Loaded 0 plugins from /opt/deepmd/3.1.2-pt-cpu-gcc13-openmpi3.1.6/lib
# Loading plugin: deepmd pair style by Han Wang
# Loading plugin: deepspin pair style by Duo Zhang
# Loading plugin: compute deeptensor/atom by Han Wang
# Loading plugin: fix dplr by Han Wang
# Loading plugin: kspace pppm/dplr by Han Wang
# DEEPMD plugin loaded OK
# Total wall time: 0:00:00

# 测试python支持
python3.12 -c "from lammps import lammps; print('ok')"

本文作者:yuhldr
本文地址: https://yuhldr.github.io/posts/70d15782.html
版权声明:转载请注明出处!