分子動力学計算ライブラリHoomd-Blueの記事書いてみた。インストール編

# Hoomd-Blueとは？
GPT4曰く

>HOOMD-blueは、一般的な粒子シミュレーションを実行するための強力なフレームワークで、主に分子動力学（Molecular Dynamics, MD）やハード粒子モンテカルロ（Hard Particle Monte Carlo, HPMC）シミュレーションに用いられます。

> 以下にHOOMD-blueの主な特徴をいくつか挙げます：

>1. GPU最適化：HOOMD-blueは、Graphics Processing Units (GPU) 上で最適化されています。GPUは高度な並列計算能力を持っており、これによりHOOMD-blueは大規模な粒子システムのシミュレーションを効率的に実行することが可能です。

> 2.柔軟性と拡張性：HOOMD-blueはPythonのAPIを提供しています。これによりユーザーは自由にシミュレーションを設定し、実行することができます。また、HOOMD-blueは様々な種類の力場や分子モデルをサポートしています。

> 3.可視化：HOOMD-blueは直接VMD（Visual Molecular Dynamics）といったモーレキュラーシミュレーションデータの可視化ツールと統合できます。これにより、シミュレーションの進行状況をリアルタイムで視覚的に確認することができます。

> 4.高性能：GPU上での最適化と高度なアルゴリズムにより、HOOMD-blueは高速で精密なシミュレーションを提供します。

> それらの特徴により、HOOMD-blueは物理学、化学、材料科学、生物学など、幅広い分野での科学的研究に利用されています。さらに、その柔軟性と拡張性により、ユーザーは自身の問題に特化したカスタムシミュレーションを容易に作成することができます。


とのこと。


## 個人的なHoomdを使うメリット
- Pythonでかけるので、非情報系学生には扱いやすい。
- 明らかに早い。きちんと計測したことはないが、ある程度のシステムサイズなら生Pythonに比べると確実に100倍以上は早い。

## デメリット
- 他の分子動力学計算ライブラリと比較して新しいので文献が少なく、基本的にドキュメントまたは、Users-Groupくまなくチェックして実装しなければならない。また、ver2にからver3へのアプデに際して大きく記法などが変化したので要注意。おそらくGPT4に聞いてもまともなコードは帰ってこない。


# インストール

GPUをつかわないなら基本的にはAnacondaから
```
conda install -c conda-forge hoomd
```
このコマンドでインストールできる。

GPUを使いたいときは、以前まではSourceからビルドをしなければならなかったが、最近のversionだと
```
conda install -c conda-forge "hoomd=*=*gpu*"
```
このコマンドでインストールできる。

が、筆者はなぜかこれをできなかったのでSourceからBuildする方法も紹介する。

## Building from soruce
sourceのビルドについては、[こちらのページ](https://hoomd-blue.readthedocs.io/en/stable/building.html)
に書いてあることまんまだが、いろいろ書いてあって必要な部分を読み飛ばしてしまう恐れもあるので、最低限のステップだけを示していく。


筆者の環境
Ubuntu: 22
Python: 3.10　anacondaを使用
CUDA Version: 11.7
gcc: 11.3.0
cmake: 3.22.1

### Install prerequisites
前提条件を用意しておきます。
最低限必要なのは
- C++17 capable compiler (tested with gcc 7 - 12 and clang 6 - 14)
- Python >= 3.6
- NumPy >= 1.7
- pybind11 >= 2.2
- Eigen >= 3.2
- CMake >= 3.9

このうちgcc、Python、numpy,CMakeは自力でそろえてください。
（筆者は```apt install build-essential```とanaconda入れることでいつの間にかそろってた
）

pybind11とEigen（とcereal）は
```
python3 hoomd-blue/install-prereq-headers.py
```
を実行してやるとよしなに入れてくれます。
（筆者はこれに気づかずaptで入れたpybind11などをつかってビルドしようとしたらうまくいかずだいぶ苦戦しました）


また、MPIをつかって並列計算をしたい方は追加で
- MPI (tested with OpenMPI, MVAPICH)
- cereal >= 1.1

GPUを使いたい方は
- NVIDIA CUDA Toolkit>= 9.0
OR
- AMD ROCm >= 3.5.0 (これは追加で必要なものがいろいろあるのでDocを見てください)

を入れておきましょう。



### Obtain the source

ソースコードをgit cloneで持ってきます。
適当な場所で
```
git clone --recursive https://github.com/glotzerlab/hoomd-blue
``` 

をすると、カレントディレクトリ下にhoomd-blueのフォルダが入ってきます。


### Configure
cmakeでオプション設定をします。
Docをみると色々なオプションがあるのですが、今回はGPUが使えればいいので
> ENABLE_GPU - When enabled, compiled GPU accelerated computations (default: off).

これだけを適用してあげればOKです。

ということで
```
 cmake -B build/hoomd -S hoomd-blue　-DENABLE_GPU=on
```
これを実行します。


これを実行すると。カレントディレクトリ下にbuildフォルダができます。きちんとオプションを設定できているか確認したい場合は./build/CmakeCache.txtにかいてあります。
もし、オプションつけわすれた場合は一度buildフォルダをけして先ほどのコードをやり直すか、./build/CmakeCache.txtを直接編集するといいと思います。

### Building the package

後はbuildするだけです。
```
cmake --build build/hoomd
```

結構時間がかかります、、、、


ビルドが完成すると。hoomdが使えるようになります。うまくいっていると
```
cd build/hoomd
python
>>> import hoomd
>>> hoomd.version.enabled_gpu
True
```
と帰ってくるはずです。

### Install the package(option)
このままだとbuild/hoomd下でしかhoomdが使えないのでpythonの仮想環境にinstallしてあげる必要があります。

anacodnaを使っている場合はhoomdを使いたい仮想環境をactivateした状態で
```
cmake --install build/hoomd
```
としてあげると、
anaconda3/lib/python3.x/site-packages/　（base環境にinstallした場合）
anaconda3/envs/env_name/lib/python3.x/site-packages/　（自作環境にinstallした場合）
にhomodが入っているはずです。

ここまで行けば、どのレポジトリでもhoomdを使うことができます。
なんかcmake installするのが怖い！という人は
``` 
import sys
import os
sys.path.append('build/hoomdまでの絶対パス')
import hoomd
``` 
としてやることで何とかなります。（めんどくさいですが）



次回はHoomdの簡単な使い方について説明していければと思います。