pmemd24とambertools25のインストール方法

## 環境

以下の環境で確認しました

* macOS 15.4.1 (Sequoia), Apple M3 Pro
* Xcode 16.3, Build version 16E140
* ターミナルからHomebrewをインストールしてある
* ターミナルから`xcode-select --install`でCommand Line Toolsをインストールしてある（必要）

## Note

2025年4月29日に**pmemd24**と**ambertools25**がリリースされました（ <http://ambermd.org/GetAmber.php>）。

::::note warn
重要なこととして、これまでのインストール方法から大きく変化しています。これまではAMBERとAmberToolsが、別のファイルとしてダウンロードしてくるとはいえ、展開したときのディレクトリ名が`amberXX`と同じ名前になっていましたが、今回からは`pmemd24.tar.bz2`と`ambertoosl25.tar.bz2`をそれぞれ展開すると

- 高速なMDシミュレーションを実行するパッケージは`pmemd24_src`
- 解析ツール群の`ambertools25_src`

に分かれました。インストール方法はほぼ共通です。
:::

## macOSへのインストール方法

### ambertools25

公式からソースコードの`pmemd24.tar.bz2`と`ambertoosl25.tar.bz2`を入手していることが前提です。

以下の処理を先にしておく必要があります。

* 
[Xcode](https://apps.apple.com/jp/app/xcode/id497799835?mt=12)と[Xcode command line developer tools](https://qiita.com/payreikit/items/4bb0f863afc7b56d0809)をインストールしておく。XcodeはApp storeからダウンロードします。Xcode command line developer toolsはターミナルから`xcode-select --install`を入力し、その後指示に従います。さらにターミナルから`sudo xcodebuild -license accept`も追加で入力が必要

* ↑現在不要みたい

以下インストール手順です。

::::note alert
* 2025年5月26日：Homebrewのデフォルトがgcc-15に変更された影響で、gfortran-15ではambertools25のビルドが失敗することを確認。ambertools25のビルドにはgcc-13を使うことが推奨される
* 最新のcmake 4.0が入っている状態では`-DCMAKE_POLICY_VERSION_MINIMUM=3.5`を追加する
::::

``` bash
# macOSのHomebrewで必要なソフトウェアをインストールしておく。
brew install cmake gcc gcc@13 wget open-mpi gnu-sed
# ダウンロードしてきたソースコードをtar jxvfで解凍する
tar jxvf ambertools25.tar.bz2
cd ambertools25_src
# updateを実行する
# gnu-sedを利用して1行目のshebangを/usr/bin/pythonから/usr/bin/python3に変更
gsed -i -e "s/env python/env python3/g" update_amber
./update_amber --update

# cmake用のbuildディレクトリに入る
cd build

# gcc-13を一時的に使うための設定
ln -sf /opt/homebrew/opt/gcc@13/bin/gfortran-13 /opt/homebrew/bin/gfortran
###############################
# ここが最重要の設定。-DCMAKE_INSTALL_PREFIXにインストール先ディレクトリを指定する
# 下の例はホームディレクトリ以下のapps/ambertools25にインストールする設定。
# gcc-13を使っている場合、MPI=TRUEではうまく動作しないことがあるためFALSEにする必要がある
# 基本的にはbuild/run_cmakeの中に書かれているとおりに実行すれば良いが、最新のcmake 4.0が入っている状態では`-DCMAKE_POLICY_VERSION_MINIMUM=3.5`を追加することだけ必要。
###############################
AMBER_PREFIX=$(dirname $(dirname `pwd`))
cmake $AMBER_PREFIX/ambertools25_src \
    -DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/ambertools25 \
    -DCOMPILER=CLANG -DBLA_VENDOR=Apple \
    -DMPI=FALSE -DCUDA=FALSE -DINSTALL_TESTS=TRUE \
    -DDOWNLOAD_MINICONDA=TRUE \
    -DFORCE_DISABLE_LIBS="boost" \
    -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
    2>&1 | tee cmake.log
```

::::note warn
ここで設定ミスによってconfigure incompleteになってしまった場合は、`build`ディレクトリの中で`./clean_build`を実行し、設定を初期化してから改めてやり直したほうが良いです。
::::

コンパイラ設定も確認してみます。

```shell
--                               Compilers:
-- The C compiler identification is AppleClang 17.0.0.17000013
-- The CXX compiler identification is AppleClang 17.0.0.17000013
-- The Fortran compiler identification is GNU 13.3.0
```

2025年5月26日現在、Fortran compilerはGNU 13.3が推奨です。15以上ではコンパイルに失敗します。
Configureが正常終了していることを確認したらmakeとインストールを実行します。

```bash
# Configureが正常終了していることを確認したらmakeとインストールを実行する
make -j8 install
```

インストールが終わったら、AMBERのプログラムコマンドをいつでも使えるようにするために、`~/.bash_profile`（`echo $SHELL`と打ってみて最後が`bash`の場合）または`~/.zshrc`（`echo $SHELL`と打ってみて最後が`zsh`の場合。macOS Catalinaを使っているヒトはzshがデフォルトになっているはず）のどちらかのファイルに（なければ作成する）、以下のように書き込みます。

``` bash
# for ambertools25
test -f ${HOME}/apps/ambertools25/amber.sh && source ${HOME}/apps/ambertools25/amber.sh
```

これでターミナルの起動時にambertools25のコマンドがいつでも使えるようになっているはずです。ターミナルを再起動してみたときに`echo $AMBERHOME`と打ってみてAMBERをインストールしたパス（`/Users/username/apps/ambertools25`みたいな感じ）が表示されれば成功です。

```shell-session
$ echo $AMBERHOME
/Users/moriwaki/apps/ambertools25
$ which cpptraj
/Users/moriwaki/apps/ambertools25/bin/cpptraj
```

### pmemd24

::::note info
上記のambertools25とほぼ同じです。
::::

```bash
# macOSのHomebrewで必要なソフトウェアをインストールしておく。
brew install cmake gcc gcc@13 wget open-mpi gnu-sed
# ダウンロードしてきたソースコードをtar jxvfで解凍する
tar jxvf pmemd24.tar.bz2
cd pmemd24_src
# updateを実行する
# gnu-sedを利用して1行目のshebangを/usr/bin/pythonから/usr/bin/python3に変更
gsed -i -e "s/env python/env python3/g" update_amber

# cmake用のbuildディレクトリに入る
cd build
# run_cmakeファイルの中のやり方に、-DCMAKE_POLICY_VERSION_MINIMUM=3.5を追加。
AMBER_PREFIX=$(dirname $(dirname `pwd`))
cmake $AMBER_PREFIX/pmemd24_src \
    -DCMAKE_INSTALL_PREFIX=$AMBER_PREFIX/pmemd24 \
    -DCOMPILER=CLANG -DBLA_VENDOR=Apple \
    -DMPI=TRUE -DCUDA=FALSE -DINSTALL_TESTS=TRUE \
    -DDOWNLOAD_MINICONDA=FALSE -DBUILD_PYTHON=FALSE \
    -DBUILD_PERL=FALSE -DBUILD_GUI=FALSE \
    -DPMEMD_ONLY=TRUE -DCHECK_UPDATES=FALSE \
    -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
    2>&1 | tee cmake.log

# Configureが正常終了していることを確認したらmakeとインストールを実行する
make -j8 install
```

``` bash
# for pmemd24
test -f ${HOME}/apps/pmemd24/amber.sh && source ${HOME}/apps/pmemd24/amber.sh
```

こちらはfortran compilerが15でも問題ないようですが、13に合わせておいたほうが良いです。

## Ubuntu 22.04の場合

::::note alert
2025年5月4日現在、古い情報のままです。
::::

`apt`で依存パッケージを入れます。

```bash
sudo apt -y update
sudo apt -y install tcsh make cmake gcc gfortran flex bison patch bc xorg-dev libbz2-dev wget
```

以下、`cmake`インストール時に確認することです。

* インストール先は`-DCMAKE_INSTALL_PREFIX=<path>`で設定する。
* GCCはUbuntu 22.04のデフォルトであるversion 11.4.0を使用し、`-DCOMPILER=GNU`でGNU Compilerによるコンパイルを指定する。
* OpenMPIを利用する場合は、[この記事](https://self-development.info/ubuntu-20-04-lts%E3%81%ABopen-mpi%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/)などを参考にして`apt`またはソースコードからのインストールを行っておき、PATHが通った状態で`-DMPI=TRUE`を設定する。
* **CUDA**を使ったMDシミュレーションは最大10倍近く高速なので、`apt`などであらかじめ入れておき、`-DBUILD_CUDA=TRUE`とする。CUDAのバージョンは12.4(AMBER24の場合)までは対応している。
* **QUICK**というQM/MMのバッケージを利用するために、`-DBUILD_QUICK=TRUE`とする。
* マルチGPU環境での**NCCL**を利用した計算を有効化する場合は、環境変数`NCCL_HOME`をncclのインストール場所に設定し、`-DNCCL=TRUE`にする（下の例ではFALSEにしてある）。

``` bash
tar jxvf AmberTools24.tar.bz2 ; tar jxvf Amber24.tar.bz2
cd amber24_src
# updateを実行する
./update_amber --update
# cmake用のbuildディレクトリに入る
cd build
# ここからcmake処理
AMBER_PREFIX=$(dirname $(dirname `pwd`))
# もしNCCLを有効化したいときは環境変数NCCL_HOMEを設定し、-DNCCL=TRUEにする。
# export NCCL_HOME="/path/to/apps/nccl/2.7.3"
cmake $AMBER_PREFIX/amber24_src \
    -DCMAKE_INSTALL_PREFIX=${HOME}/apps/amber24 \
    -DCOMPILER=GNU -DMPI=TRUE -DOPENMP=TRUE -DBUILD_GUI=FALSE -DCUDA=TRUE \
    -DBUILD_QUICK=TRUE -DINSTALL_TESTS=TRUE -DNCCL=FALSE \
    -DDOWNLOAD_MINICONDA=TRUE 2>&1 | tee cmake.log

# Configureが正常終了していることを確認したらmakeとインストールを実行する
make -j8 install
```