Skip to content

Instantly share code, notes, and snippets.

@link89
Last active January 2, 2025 06:39
Show Gist options
  • Select an option

  • Save link89/51cbdcb15cdc69bc55727db63cfbe5f1 to your computer and use it in GitHub Desktop.

Select an option

Save link89/51cbdcb15cdc69bc55727db63cfbe5f1 to your computer and use it in GitHub Desktop.
Build DeepMD-3.0.0b with Conda

Note

  • It's for CentOS 7, so the conda version have to be limited to cuda 11.8

Steps

CONDA_OVERRIDE_CUDA=11.8 nohup conda create -y -p ./3.0.0b0-cuda118 pytorch=2.1.2=cuda118*  python=3.11.* cudatoolkit=11.8  zlib cudnn cusparselt -c conda-forge --override-channels &
cd ./3.0.0b0-cuda118
source activate ./
pip install tensorflow==2.14.1
ln -s <path to source> source
bash build-deepmd-cuda118.sh

Appendix

build-deepmd-cuda118.sh

#!/bin/bash
set -e

SCRIPT_PATH=$(realpath $0)
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
deepmd_source_dir=$SCRIPT_DIR/source/deepmd-kit
lammps_source_dir=$SCRIPT_DIR/source/lammps-2Aug2023
lasp_source_dir=$SCRIPT_DIR/source/LASP_INTER_pro3.7.1_intel18_b48

echo "SCRIPT_DIR=$SCRIPT_DIR"

echo '' > $SCRIPT_DIR/etc/conda/activate.d/libdeepmd.sh
echo '' > $SCRIPT_DIR/etc/conda/deactivate.d/libdeepmd.sh

module load cuda/11.8
module load anaconda/2022.5
module load gsl/2.8
# module load mkl/2021.1.1

source activate $SCRIPT_DIR
conda list

which python3
module load mpi/openmpi/4.0.3-gcc

# module load gcc/9.3
module load gcc/12.1
export CC=`which gcc`
export CXX=`which g++`
export FC=`which gfortran`

# export CUDA_HOME=$CONDA_PREFIX
export NVCC_APPEND_FLAGS='-allow-unsupported-compiler'
export LD_LIBRARY_PATH=$SCRIPT_DIR/lib:$LD_LIBRARY_PATH
export CMAKE_PREFIX_PATH=$CONDA_PREFIX

export CAFFE2_USE_CUDNN=1
export CAFFE2_USE_CUSPARSELT=1

# to fix
# nvcc warning : incompatible redefinition for option 'compiler-bindir', the last value of this option was used
# export CUDA_HOST_COMPILER=$CC
export DP_VARIANT=cuda
export DP_ENABLE_PYTORCH=1

# install python module
pushd $deepmd_source_dir

# git clean -xdf
# git checkout -f v3.0.0b0
# CMAKE_ARGS="$CMAKE_ARGS -DCAFFE2_USE_CUDNN=TRUE -DCAFFE2_USE_CUSPARSELT=TRUE -DUSE_CUDA_TOOLKIT=TRUE" pip install .

popd

module unload cmake gcc

module load gcc/12.1
export CC=`which gcc`
export CXX=`which g++`
export FC=`which gfortran`

module load dev/cmake/3.26.3
which cmake

# build c++ module
deepmd_root=$SCRIPT_DIR/opt/deepmd
echo "deepmd_root=$deepmd_root"
mkdir -p $deepmd_root

rm -rf $deepmd_source_dir/source/build || true
mkdir -p $deepmd_source_dir/source/build

pushd $deepmd_source_dir/source/build

# export TORCH_CUDA_ARCH_LIST="8.0 8.6 8.9 9.0"

# cmake -DUSE_TF_PYTHON_LIBS=TRUE -DENABLE_PYTORCH=TRUE -DENABLE_TENSORFLOW=TRUE -DCMAKE_INSTALL_PREFIX=$deepmd_root -DCAFFE2_USE_CUDNN=TRUE -DCAFFE2_USE_CUSPARSELT=TRUE -DUSE_CUDA_TOOLKIT=TRUE -DLAMMPS_SOURCE_ROOT=$lammps_source_dir -DCMAKE_PREFIX_PATH=`python3 -c 'import torch;print(torch.utils.cmake_prefix_path)'` -DCUDNN_ROOT=$CONDA_PREFIX -DCUSPARSELT_ROOT=$CONDA_PREFIX ..
# make -j8
# make install

popd


# install lammps
lammps_root=$SCRIPT_DIR/opt/lammps

rm -rf $lammps_source_dir/build || true
mkdir -p $lammps_source_dir/build
pushd $lammps_source_dir/build

# https://docs.lammps.org/Packages_details.html

cmake -D PKG_MOLECULE=ON PKG_EXTRA_MOLECULE=ON PKG_DIFFRACTION=ON -D PKG_PLUGIN=ON -D PKG_EXTRA-FIX=ON -D PKG_KSPACE=ON -D PKG_MISC=ON -D PKG_PLUMED=ON -D LAMMPS_INSTALL_RPATH=ON -D BUILD_MPI=yes -D BUILD_OMP=yes -D BUILD_SHARED_LIBS=yes -D CMAKE_INSTALL_PREFIX=$lammps_root -D CMAKE_INSTALL_LIBDIR=lib -D CMAKE_INSTALL_FULL_LIBDIR=${lammps_root}/lib -D PKG_VORONOI=yes -D DOWNLOAD_VORO=yes ../cmake
make -j8
make install

popd

# generate activate script

cat << __EOF > $SCRIPT_DIR/etc/conda/activate.d/libdeepmd.sh
export LAMMPS_PLUGIN_PATH=\$CONDA_PREFIX/opt/deepmd/lib/deepmd_lmp
export CUDA_HOME=\$CONDA_PREFIX

export _ADD_LD_LIBRARY_PATH=\$CONDA_PREFIX/opt/deepmd/lib:\$CONDA_PREFIX/lib:\$CONDA_PREFIX/opt/lammps/lib
export _ADD_PATH=\$CONDA_PREFIX/opt/lammps/bin

export LD_LIBRARY_PATH=\$_ADD_LD_LIBRARY_PATH:\$LD_LIBRARY_PATH
export PATH=\$_ADD_PATH:\$PATH

cat << EOF
This environment have cuda-toolkit included,
you don't need to load extra cuda module.

If you are to run dp train,
you don't need to load extra modules.

If you are to run LAMMPS,
then you must add the following modules to your script.

module load gcc/12.1
module load gsl/2.8
module load mpi/openmpi/4.0.3-gcc
EOF
__EOF

cat << __EOF > $SCRIPT_DIR/etc/conda/deactivate.d/libdeepmd.sh
export LAMMPS_PLUGIN_PATH=
export CUDA_HOME=
export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH/"\$_ADD_LD_LIBRARY_PATH:"/""}"
export PATH="\${PATH/"\$_ADD_PATH:"/""}"
export _ADD_PATH=
export _ADD_LD_LIBRARY_PATH=
__EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment