LAMMPS（DeepMD-kit ビルドイン）をインストールする

# DeePMD-kit
DeePMD-kitとは、第一原理計算から求めた原子間相互作用をもとに機械学習ポテンシャルを作るパッケージです。

# 記事の目的
このパッケージで作った機械学習ポテンシャルはLAMMPSで使うことができますが設定方法が複雑です。
公式マニュアルにインストール方法が詳しく載っていますが、そこにさらにコメントを加えながら機械学習ポテンシャルが使える状態のLAMMPSをインストールする手順をまとめます。

# 前提条件
OS:Ubuntu 22.04 (WSLでもできるはず)


# DeePMD-kit自体のインストール
今回は公式ドキュメントの2.2をもとにソースコードからインストールします。

https://docs.deepmodeling.org/projects/deepmd/en/latest/install/install-from-source.html

### ソースコードのダウンロード
まず、linux上に作業ディレクトリを作成します。そこにgit cloneコマンドでソースコードをダウンロードします。
```
mkdir workspace
cd workspace
git clone https://github.com/deepmodeling/deepmd-kit.git deepmd-kit
```
workspace内にdeepmd-kitというディレクトリができました。

このディレクトリに特別な名前を付けてこの後参照しやすくします。
deepmd-kitに移動し、このディレクトリをdeepmd_source_dirと名付けます。
```
cd deepmd-kit
deepmd_source_dir=`pwd`
```

名付けがうまくいっていることを確認するために、なにかテキトウなディレクトリに移動した状態で以下を実行してください。
```
cd $deepmd_source_dir
```
deepmd-kitディレクトリに移動できていれば成功です。
以降はずっとここで作業を行います。

### pythonインターフェースのインストール
お手持ちのPCに入っているpythonのバージョンが3.9以上なことを確認します。
```
python --version
```
3.9以下の場合は更新しましょう。

公式ドキュメントでは、pythonインターフェースを仮想環境に構築していますので、これに則ります。
以下の3行で、仮想環境（my_deepmd_env）を作成します。
```
sudo apt install python3-virtualenv
deepmd_venv="my_deepmd_env"
virtualenv -p python3 $deepmd_venv
```

作成した仮想環境を以下のコードで起動（activate）、pipを更新しておきます。
以降、仮想環境で作業を行います。
```
source $deepmd_venv/bin/activate
pip install --upgrade pip
```
仮想環境に移れていると
(my_deepmd_env) user@host:~/---/---$ 
 という表示になっているはずですので、確認してください。


仮想環境にpytorchをインストールします。今回はCUDA12.4に対応したものをインストールします。https://pytorch.org/get-started/locally/
```
pip3 install torch torchvision torchaudio
```

コンパイラのバージョンを確認します。GCC 5以降なら大丈夫ですが、それ以下の場合は更新してください。

```
gcc --version
```
CUDA12.4をインストールします。
```
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-wsl-ubuntu-12-4-local_12.4.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-4-local_12.4.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4
```

deepmd-kitディレクトリにあるpipインストールできるものを全て入れます。
公式ドキュメントには、pipインストールする前に環境変数を設定するように書かれていますので、exportコマンドで必要なものを設定します。
ここでは、CUDAとpytorchを使えるように設定しています。

```
cd $deepmd_source_dir
export DP_VARIANT=cuda
export CUDAToolkit_ROOT=/usr/local/cuda-12.4
export DP_ENABLE_PYTORCH=1

pip install .
```
インストールが完了したことを確認するため、テキトウな場所で
```
dp -h
```
を実行します。dpコマンドのヘルプがでたらOKです。

### C++インターフェースをインストール
pytorchを使うので、以下からlibtorchをダウンロードします。
https://pytorch.org/get-started/locally/

ソースコードディレクトリに移動し、Deepmd-kit用のC++インターフェースをビルドします。また、ここでcmakeもインストールしておきます。
```
cd $deepmd_source_dir/source
mkdir build
cd build

pip install -U cmake
```

cmakeします。
```
deepmd_root=

cmake -DENABLE_PYTORCH=TRUE \
      -DCMAKE_PREFIX_PATH=/home/naoki/libtorch \
      -DCMAKE_INSTALL_PREFIX=$deepmd_root \
      -DTorch_DIR=$Torch_DIR \
      -DUSE_CUDA_TOOLKIT=ON \
      -DCUDAToolkit_ROOT=/usr/local/cuda-12.4 \
      -DCUDA_TOOLKIT_ROOT_DIR=$CUDA_HOME \
      -DCMAKE_CUDA_COMPILER=$CUDA_HOME/bin/nvcc \
      -DCMAKE_CUDA_ARCHITECTURES=all ..


make -j4
make install
```
--------------------------------------
# LAMMPSインストール
最新のLAMMPSをダウンロードし、ビルド用のディレクトリを作成します。

```
wget https://github.com/lammps/lammps/archive/stable_29Aug2024_update1.tar.gz
tar xf stable_29Aug2024_update1.tar.gz
mkdir -p lammps-stable_29Aug2024_update1/build/
```

LAMMPSのインストールにおいてDeepmdをビルドインするために、Cmakeのリストに一行追加する。
```
echo "include(${deepmd_source_dir}/source/lmp/builtin.cmake)" >> ../cmake/CMakeLists.txt
```

cmakeします。
```
cmake -C ../cmake/presets/basic.cmake -D LAMMPS_INSTALL_RPATH=ON -D BUILD_SHARED_LIBS=yes -D CMAKE_INSTALL_PREFIX=${deepmd_root} -DCMAKE_PREFIX_PATH=${deepmd_root} ../cmake

make -j4
make install
```