Help us understand the problem. What is going on with this article?

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

環境

  • macOS 10.15.3 (Catalina), 2.8GHz Intel Core i7, メモリ16GB
  • Xcode 11.3.1 (11C504)
  • ターミナルからHomebrewをインストールしてある
  • ターミナルからxcode-select --installでCommand Line Toolsをインストールしてある

2019年4月26日にAmberTools19がリリースされました。( http://ambermd.org/GetAmber.php )。近年はAMBER本体が偶数年に2年ごと、AmberToolsは1年ごとにメジャーアップデートしています。2019年はAmberToolsのみのアップデートの年です。解凍したときのディレクトリがamber18となっていますがこれは仕様です。最近ダウンロードした人は以下の記事でAmberTools18.tar.bz2のところをAmberTools19.tar.bz2に置き換えてコマンドを打っていってください。

prerequisites

macOSの場合

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で入れたソフトウェアを使う準備ができています。

Ubuntu 18.04の場合

公式マニュアルP.23にしたがって

sudo apt-get install bison bc csh flex gfortran g++ xorg-dev zlib1g-dev libbz2-dev patch python

と入力して必要なプログラムをインストールしておきます。あとpython2やpython3もいるような気がする……?

CentOS 7.5の場合

上記Ubuntu 18.04でも必要とされるものをyumコマンドで入れれば良いと思います。ついでに最新版のPython 3.6も入れておきます。

yum -y install bison tcsh wget gcc gcc-c++ gcc-gfortran libgfortran make patch flex zlib zlib-devel bzip2-devel openssl-devel readline-devel tk-devel boost-devel cmake3 openblas-devel openblas lapack-devel lapack64-devel git curl fftw-devel
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y install python36u python36u-libs python36u-devel python36u-pip python36u-tkinter python-matplotlib-qt4

使用するgccの設定

AMBERとAmberToolsのプログラムをインストールするためには、コンパイラを必要とします。このうち無料で使えるコンパイラといえばGNU compilerで、現在は9.2.0が公開されています。

通常、レガシーなver. 4.8.5から最新版の9.2.0のいずれでもインストール可能ですが、CUDA対応のGPU accelerated MDを使いたい場合のみ、gcc 6.5までのバージョンにしておく必要があります。macOSの場合でNVIDIA GPUを積んでおり、GPU accelerated MDをしようという奇特な人はまずいないと思いますので(しかもmacOS Mojave以降はNVIDIA GPU非対応)、とりあえずここではmacOSの場合について、9.2をインストールします。

# macOSのHomebrewでのgcc ver.8のインストール
brew install gcc
# gcc, g++, gfortranのデフォルトを強制的にver.8にする。
ln -sf /usr/local/bin/gcc-9 /usr/local/bin/gcc
ln -sf /usr/local/bin/g++-9 /usr/local/bin/g++
ln -sf /usr/local/bin/gfortran-9 /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 9.2.0_1) 9.2.0
Copyright (C) 2019 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 9.2.0_1) 9.2.0
Copyright (C) 2019 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.

これで準備完了です。

macOS Mojave 10.14.4以降 & Xcode 10.2環境ではインストールに失敗してしまう現象について

macOS Mojaveでは、先にXcode 10のインストールをしておく方が良さそうです。また、High Sierraからmojaveにインストールした時、
testp.c:1:19: fatal error: stdio.h: No such file or directory
というエラーが発生することがあるようです。これは、アップグレードによってmojaveにするとこのヘッダファイルが見つからないことが原因だそうです。解決方法はmacOS_SDK_headers_for_macOS.pkgという名のパッケージを実行すればいいようです。(参考: https://github.com/frida/frida/issues/338 ) ターミナルから

open /Library/Developer/CommandLineTools/Packages

を実行すると、(mojaveのみ)macOS_SDK_headers_for_macOS_10.14.pkgというファイルがあるディレクトリが開くので、これをダブルクリックしてインストールします。また、さらに上記の./configure設定をするときは、

# (Catalinaの場合は以下の10.14を10.15にする。10.14でも行けるかもしれないけれど……)
export MACOSX_DEPLOYMENT_TARGET='10.14'
./configure -noX11 -macAccelerate gnu

にしておくと良さそうです。

./configureの設定

以下で使う圧縮ファイルAmberTools18.tar.bz2は、http://ambermd.org/GetAmber.php のサイトで申請すると無償でダウンロードできます。これはAMBERチームが開発したMDシミュレーションの解析プログラムAmberToolsのパッケージが含まれています。また、近年はsander (またはsander.MPI)というMDを実行するプログラム本体もこちらに含まれるようになりました。一方、Amber18.tar.bz2はMDの実行プログラムの本体が含まれている有償のパッケージです。こちらには上記sander (またはsander.MPI)が超高速化されたpmemd (またはpmemd.MPI)を始めとした様々なMDプログラムが入っています。

私のQiita記事では、AmberToolsとGromacsを使った無料でMDを高速に実行するための方法を示していますので、Amber18.tar.bz2は必要ありません。しかし、持っている人はついでに以下の手順でインストールしておくことをおすすめします。

今回、AMBER/AmberToolsのインストール先ディレクトリは、お手持ちのマシンの/Users/agsmith/apps/amber18にしようと思います。(agsmith部分は各自のユーザー名です)

# appsディレクトリをmkdirコマンドで作成し、cdでそこに移動
mkdir ~/apps ; cd ~/apps
# ダウンロードしておいたAmberTools18.tar.bz2を~/appsディレクトリに移動する
# /path/to/の部分は各自置き換えます。例えばMacで「ダウンロード」ディレクトリにこのファイルがある場合は、
# mv ~/Downloads/AmberTools18.tar.gz . とします。
mv /path/to/AmberTools18.tar.bz2 .
# tar jxvf で対象のtar.bz2圧縮ファイルを解凍する
tar jxvf AmberTools18.tar.bz2
# 有償ソフトウェアのAmber18.tar.bzを持っている場合は、ここでついでに解凍しておく
tar jxvf Amber18.tar.bz2
# 環境変数AMBERHOMEの設定。agsmithの部分は各自のユーザー名に置き換える。
export AMBERHOME="/Users/agsmith/apps/amber18"

環境変数AMBERHOMEを設定しておきます。この後は

cd $AMBERHOME
./configure -noX11 -macAccelerate gnu

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

make install

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

source ~/apps/amber18/amber.sh
export AMBERHOME="~/apps/amber18"
# macOS Mojaveのみ、次の1行の#を外して入力する
# export MACOSX_DEPLOYMENT_TARGET='10.14'

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

macOSのMojaveの場合、インストールエラーが起きやすいので必ずインストールが正しく終わっているかどうか確認しましょう。正しく終わった場合は、

…………
Installation of pmemd complete

Installation of Amber18 (serial) is complete at 2019年 4月15日 月曜日 02時27分06秒 JST.

のように完了メッセージが現れます。

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

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

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

MPI版のインストール

上記serial版のインストールが終わったら、オプショナルでMPI版のインストールをすることができます。MPI化することの一番のメリットはAMBERによるMDシミュレーションがCPUのコア数分だけ倍速になることです。並列化されるのはMDシミュレーションを実行するプログラムsanderpmemdcpptrajなどです。このうちpmemdはAmberToolsではなくAMBERのみ利用可能です。
特に、AMBERを用いてエネルギー最小化をする場合、pmemd.MPIがインストールされているととても楽なため、これもやっておきましょう。

インストールの条件としてOpenMPIなどのMPIライブラリを持っていることが必要です。これはmacOSの場合はbrew install open-mpiで入れることができます……が、このOpenMPIを使ってインストールしようとするとおそらく失敗します。これはこのOpenMPIがApple LLVMコンパイラに依存しているためであり、MPI版へのインストールはこれだと失敗するためだと思います。

ということで、GCCコンパイラで作成したOpenMPIを自前でインストールしましょう。やり方の例はこちら(${USER}はお使いのmacOSのユーザー名です。デフォルトでこの環境変数は設定されているはずなので、このまま打ってもらっても動作するはずです)。

## OpenMPI 3.1.4を${HOME}/appsにインストールする。${HOME}はホームディレクトリのこと##
mkdir -p ~/apps
cd ~/apps
# wgetでソースコードをダウンロードして解凍
wget https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.4.tar.gz
tar zxvf openmpi-3.1.4.tar.gz
cd openmpi-3.1.4
# ./configureはインストール予備動作。インストール先の指定(--prefix)とコンパイラの指定(CC, CXX, FC)を行う。
# /usr/local/bin/以下にあるgcc, g++, gfortran(ver 9.1.0)を使ったOpenMPIをインストールする場合は以下の例
# 使用したいコンパイラをここで指定する
./configure --prefix=${HOME}/apps/openmpi/3.1.4_gcc9.1.0 CC=/usr/local/bin/gcc CXX=/usr/local/bin/g++ FC=/usr/local/bin/gfortran
# 8コアでmakeとインストールを行う
make -j8 all ; make install
# このopenmpiを最優先で使いたいときは以下のコマンドを実行しておく。
MPIROOT=${HOME}/apps/openmpi/3.1.4_gcc9.1.0
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPIROOT/lib
export MANPATH=$MANPATH:$MPIROOT/share/man

インストールが問題なく終わり、最後の4行を入力することでPATHとLD_LIBRARY_PATHの設定が通っていれば、ターミナル上でwhich mpiccと打ったときに以下のメッセージが現れるはずです。

# which mpiccでPATHを確認する。${HOME}部分はお使いのマシンのホームディレクトリへのPATHが自動的に代入されます(デフォルト環境変数)
$ which mpicc
${HOME}/apps/openmpi/3.1.4_gcc9.1.0/bin/mpicc

Linuxの場合は適当にインストールしちゃってください(私は自前でソースコードからインストールすることが多いです)。以下、OpenMPIにPATHが通っていることを確認しながらAMBERのMPI版のインストールを始めます。

# which mpiccでOpenMPIがインストールされている場所を確認する。not foundはだめ。
which mpicc
# mpicc --versionでApple LLVMでなく、GCCコンパイラが表示されることを確認する
mpicc --version
# amber18ディレクトリに入る
cd $AMBERHOME
# アップデートがあるかどうかを確認し、あればインストールを選択する。なければ何もしない。
./update_amber --upgate
# macOS Mojaveの方のみ
export MACOSX_DEPLOYMENT_TARGET='10.14'
# インストール予備動作。-noX11でGUIをインストールしない。-mpiでMPI化をONにする。gnuでGNUコンパイラを使ったコンパイル方法を選択する。
# スパコン付属などのインテルコンパイラを使いたい場合はgnuをintelに変えて実行する
./configure -noX11 -mpi gnu

とすることでインストールの設定を行い、make -j8 installでインストールを開始します。

終わったら

Installation of pmemd.MPI complete

Installation of Amber18 (parallel) is complete at 2019年 7月 1日 月曜日 01時31分10秒 JST.

と表示されます。ただし、このpmemd.MPIは先程インストールしたOpenMPIに依存しているため、これを使いたいときには必ず

# このopenmpiを最優先で使いたいときは以下のコマンドを実行しておく。
MPIROOT=${HOME}/apps/openmpi/3.1.4_gcc9.1.0
export PATH=$MPIROOT/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPIROOT/lib
export MANPATH=$MANPATH:$MPIROOT/share/man

を先に入力しておく必要があることを覚えておいてください。

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-6.5.0と次にopenmpi-3.1.3(このgcc-6.5.0を使ってコンパイル)を手動でインストールして用意してからやるとうまくいきました。

cd $AMBERHOME
make clean
# CUDAへのPATHを貼る。
module load cuda10/10.0.130 #Reedbushで提供されているCUDAドライバのロード
# echo $CUDA_HOMEして、cudaドライバの場所を確認しておく。
# もしなければ、以下のexportコマンドのように適切にPATHを設定する
# export CUDA_HOME="/lustre/app/acc/cuda/10.0.130"
#一時的に自前でビルドインストールしたgcc-6.5.0とopenmpi-3.1.3にPATHを貼っておく
export LD_LIBRARY_PATH="/lustre/gg01/g00001/apps/openmpi-3.1.3/lib:/lustre/gg01/g00001/apps/gcc-6.5.0/lib:/lustre/gg01/g00001/apps/gcc-6.5.0/lib64:$LD_LIBRARY_PATH"
export PATH="/lustre/gg01/g00001/apps/openmpi-3.1.3/bin:/lustre/gg01/g00001/apps/gcc-6.5.0/bin:$PATH"
./configure -cuda gnu
make -j12 install

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

上に-mpiオプションを付けてやるだけ。もしかしたらGPU_CUDA版のインストールをすっ飛ばして./configure -cuda -mpiしても動く気がする。

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

qsubでの投入スクリプト例

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

GPU1台使用の場合

上のGPU_CUDA版のインストールを行っておく。

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

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

#一応念のためデフォルトでロードされているmoduleはunloadしておく
module unload openmpi-gdr/2.0.2/gnu intel/16.0.3.210
#使うドライバや環境変数を明示的に指定
export AMBERHOME="/lustre/gg01/g00001/apps/amber18"

# 自前のアプリケーションにPATHを貼っておく。Reedbushにおいて.bashrcなどにこれらを書くとおかしなことになりかねないのでおすすめしない。
export LD_LIBRARY_PATH="/lustre/gg01/g00001/apps/openmpi/3.1.4_gcc6.5.0/lib:/lustre/gg01/g00001/apps/gcc/6.5.0/lib:/lustre/gg01/g00001/apps/gcc/6.5.0/lib64:$LD_LIBRARY_PATH"
export PATH="/lustre/gg01/g00001/apps/openmpi/3.1.4_gcc6.5.0/bin:/lustre/gg01/g00001/apps/gcc/6.5.0/bin:$PATH"
module load cuda10/10.0.130
source /lustre/gg01/g00001/apps/amber18/amber.sh

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

GPU複数台使用の場合

Reedbush-HやTSUBAMEのように1計算ノードに対して複数台のGPUが積まれている場合、GPU_CUDA版&MPI版をインストールしておいた上で、投入スクリプトでのpmemd.cuda.MPIの前にmpirun -np $num設定をすることでさらに高速に計算を行うことができるようになります。1台のGPUにつき1コアのCPUを制御のために割り当ててあげる必要がありますので、例えばGPU2台の場合は

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

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

(中略)
# qsub内の環境変数を確認するためにenvコマンドを使うことができる
env
# 2台のGPUでMDを行うコマンド
mpirun -np 2 $AMBERHOME/bin/pmemd.cuda.MPI -O \
    -i md.in \
    -o md.out \
... (以下略)

のように、mpirun -np 2としておきます。4台ならば-np 4です。この数字はqsub時に環境変数を使えば自動取得できるような気もしますので、envコマンドで確認しておくと良いでしょう。

計算において正しく複数台のGPUを利用できているかどうかは、アウトプットファイルのmd.out内の130行目あたりに現れるGPU DEVICE INFOのブロックで確認できます。

|------------------- GPU DEVICE INFO --------------------
|
|                         Task ID:      0
|            CUDA_VISIBLE_DEVICES: not set
|   CUDA Capable Devices Detected:      2
|           CUDA Device ID in use:      0
|                CUDA Device Name: Tesla P100-SXM2-16GB
|     CUDA Device Global Mem Size:  16280 MB
| CUDA Device Num Multiprocessors:     56
|           CUDA Device Core Freq:   1.48 GHz
|
|
|                         Task ID:      1
|            CUDA_VISIBLE_DEVICES: not set
|   CUDA Capable Devices Detected:      2
|           CUDA Device ID in use:      1
|                CUDA Device Name: Tesla P100-SXM2-16GB
|     CUDA Device Global Mem Size:  16280 MB
| CUDA Device Num Multiprocessors:     56
|           CUDA Device Core Freq:   1.48 GHz
|
|--------------------------------------------------------

このようにTask IDが0はじまりで複数見えていればOKです。CUDA Device Nameには計算機内部のGPUの種類が表示されるはずです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした