bioinformatics
Amber
分子動力学法

AMBERとAmberToolsのインストール方法

環境

macOS 10.12.6 (Sierra), 2.8GHz Intel Core i7, メモリ16GB
ターミナルからHomebrewをインストールしてある

2018年4月19日にAmberTools18がリリースされました。( http://ambermd.org

prerequisites

AmberTools 18のインストールに先立つSystem Requirementとしては公式マニュアルP.23に色々書かれているのですが、最近のAMBERは親切にもPythonのminicondaを使って不足しているパッケージを自動で入れてくれるサービスになっています。これは下に書かれている ./configure を起動した時に発動しますので、あらかじめ手動で入れなくても良くなりました。なので省略。

macOSとHomebrewを使っている人の場合、まず自身のマシンのホームディレクトリ直下にある ~/.bash_profile に以下の記述を入れておきます。

export PATH="/usr/local/bin:$PATH"

こうしてターミナルを再起動して、echo $PATHと打ってみたときに、/usr/local/bin: という文字列があれば、Homebrewで入れたソフトウェアを使う準備ができています。

使用するgccの設定

AMBERとAmberToolsのプログラムをインストールするためには、コンパイラを必要とします。このうち無料で使えるコンパイラといえばGNU compilerなのですが、このバージョンは5までが推奨されており、確か6や7だと動作保証外になるはずです。

今回考えるMacOS Xの場合、Homebrewを使ってそのままgccをインストールしようとすると、最新のver.7がインストールされることになります。これはよくないので、以下のようにしてver.5を明示的にインストールし、それをデフォルトに設定します。

# Homebrewでのgcc ver.5のインストール
brew install gcc@5
# Homebrewで使うシンボリックリンクの張り替え
brew unlink gcc gcc@5
brew link gcc@5
# gcc, g++, gfortranのデフォルトを強制的にver.5にする。
ln -sf /usr/local/bin/gcc-5 /usr/local/bin/gcc
ln -sf /usr/local/bin/g++-5 /usr/local/bin/g++
ln -sf /usr/local/bin/gfortran-5 /usr/local/bin/gfortran

こうして設定が終わった後、現在デフォルトとなっているgcc、gfortranコマンドのPATHを確認するためにwhich gccwhich gfortranとコマンドを打ってみます。

$ which gcc
/usr/local/bin/gcc

$ which gfortran
/usr/local/bin/gfortran

と表示されることを確認し、さらに以下のコマンドでバージョン確認をします。

$ gcc --version
gcc (Homebrew GCC 5.5.0_2) 5.5.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gfortran --version
GNU Fortran (Homebrew GCC 5.5.0_2) 5.5.0
Copyright (C) 2015 Free Software Foundation, Inc.

GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING

これで準備完了です。

./configureの設定

今回のインストール先ディレクトリは、/Users/agsmith/apps/amber18にしようと思います。

mkdir ~/apps ; cd ~/apps
mv /path/to/AmberTools18.tar.bz2 .
tar jxvf AmberTools18.tar.bz2
tar jxvf Amber18.tar.bz2 #Amber18.tar.bzを持っている場合
export AMBERHOME="/Users/agsmith/apps/amber18"

環境変数AMBERHOMEを設定しておきます。注意点として、GCCのバージョンが6.1以降では、C++コードのコンパイルに失敗するため、うまくインストールできませんでした。もしかするとこの先のバグフィックスでこの件が修正されるかもしれませんが、これを回避するためには、gcc, g++やgfortranのバージョンを5.3以下にしておきましょう。 この後は

cd $AMBERHOME
./configure -noX11 gnu

を実行します。これを実行した初回ではアップグレードを尋ねられるかもしれませんので、そのときはそこに提示されたコマンドを打って先にアップグレードをしてから./configureを進めます。./configureのメッセージは数分で終わりますが、特にエラーが出ていないようであれば次に進みます。

make install

インストールを実行する前にsource ~/apps/amber18/amber.shで設定ファイルを読み込むのを忘れないように。これは~/.bashrc(または~/.bash_profile), ~/.zshrcなどに

source ~/apps/amber18/amber.sh
export AMBERHOME="~/apps/amber18"

を書き加えておけば省略できます。その後はmake -j8 installするだけで良いです。私のMacBook Proでおよそ30分程度、ずっと処理が走りますので、上の単純なmake installの代わりにnohupコマンドを使ったnohup make -j8 install &とすると、裏で処理が走ってくれます&ログアウトしてもプロセスとして動き続けます。処理はnohup.outに書き込まれます。

インストールが終わったら、AMBERのコマンドにPATHを通すために、以下の内容を~/.bash_profileの最後あたりに書いておくのが良いでしょう。

# for AMBER 18
source ~/apps/amber18/amber.sh

sourceコマンドを使ってインストール先のamber.shディレクトリを実行することで、PATHやLD_LIBRARY_PATH、PYTHONPATHなどの設定が自動的に行われます。

GPU_CUDA版のインストール

以下はとあるスパコンReedBush-Hを想定しています。やり方はまずGPUのcudaディレクトリを環境変数CUDA_HOMEで指定し、./configureのときのオプションで-cudaをつけます。先に上のCPU版をインストールして、続いてamber18のディレクトリ上でmake cleanをやっておくと良いかもしれません。
ただし、Reedbush-Hのmoduleで提供されているGNU compilerの5.4.0はgfortran-5が入っていないうえに、Intel Compilerの方もifortとバージョンが混ざっていて使えないので(つまりFortranのことを全然考えていないみたいなので)、結局コンパイラから自分でビルドする必要があります。私の場合はgcc-5.4.0と次にopenmpi-2.1.1(このgcc-5.4.0を使ってコンパイル)を手動でインストールして用意してからやるとうまくいきました。

cd $AMBERHOME
make clean
# CUDAへのPATHを貼る。
module load cuda/8.0.44 #Reedbushで提供されているCUDAドライバのロード
export CUDA_HOME="/lustre/app/acc/cuda/8.0.44"
#一時的に自前でビルドインストールしたgcc5.4.0とopenmpi-2.1.1にPATHを貼っておく
export LD_LIBRARY_PATH="/lustre/gg01/g00001/apps/openmpi-2.1.1/lib:/lustre/gg01/g00001/apps/gcc-5.4.0/lib:/lustre/gg01/g00001/apps/gcc-5.4.0/lib64:$LD_LIBRARY_PATH"
export PATH="/lustre/gg01/g00001/apps/openmpi-2.1.1/bin:/lustre/gg01/g00001/apps/gcc-5.4.0/bin:$PATH"
./configure -cuda gnu
make -j8 install

GPU_CUDA版のMPI版のインストール

上に-mpiオプションを付けてやりなおすだけ

cd $AMBERHOME
make clean
# CUDAへのPATHを貼る。
module load cuda/8.0.44 #Reedbushで提供されているCUDAドライバのロード
export CUDA_HOME="/lustre/app/acc/cuda/8.0.44"
#一時的に自前でビルドインストールしたgcc5.4.0とopenmpi-2.1.1にPATHを貼っておく
export LD_LIBRARY_PATH="/lustre/gg01/g00001/apps/openmpi-2.1.1/lib:/lustre/gg01/g00001/apps/gcc-5.4.0/lib:/lustre/gg01/g00001/apps/gcc-5.4.0/lib64:$LD_LIBRARY_PATH"
export PATH="/lustre/gg01/g00001/apps/openmpi-2.1.1/bin:/lustre/gg01/g00001/apps/gcc-5.4.0/bin:$PATH"
./configure -cuda -mpi gnu
make -j8 install

qsubでの投入スクリプト例

クラスタコンピュータやスパコン上でqsubを使って投入する場合、必ず投入スクリプト内にインストール時に使った環境変数やドライバへのPATH, LD_LIBRARY_PATHを通しておく。

qsubrun.sh
#!/bin/sh
#PBS -q h-small
#PBS -l select=1:mpiprocs=36
#PBS -W group_list=gg01
#PBS -l walltime=48:00:00

cd $PBS_O_WORKDIR
. /etc/profile.d/modules.sh

#一応念のためunloadしておく
module unload openmpi-gdr/2.0.2/gnu intel/16.0.3.210
#使うドライバや環境変数を明示的に指定
module load cuda/8.0.44 
export AMBERHOME="/lustre/gg01/g00001/apps/amber18"

# 自前のアプリケーションにPATHを貼っておく。Reedbushにおいて.bashrcなどにこれらを書くとおかしなことになりかねないのでおすすめしない。
export LD_LIBRARY_PATH="/lustre/gg01/g00001/apps/openmpi-2.1.1/lib:/lustre/gg01/g00001/apps/gcc-5.4.0/lib:/lustre/gg01/g00001/apps/gcc-5.4.0/lib64:$LD_LIBRARY_PATH"
export PATH="/lustre/gg01/g00001/apps/openmpi-2.1.1/bin:/lustre/gg01/g00001/apps/gcc-5.4.0/bin:$PATH"

$AMBERHOME/bin/pmemd.cuda.MPI -O \
    -i md.in \
    -o md.out \
... (以下略)