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

Gromacs 2019.5をmacOS / Linux上にインストール

macOSにGromacs 2019.5をソースコードからインストールする方法。

環境

HomebrewでGromacsのインストール(おすすめ)

Version 2019.3のものですが、HomebrewでもGromacsが配信されているので、macOSの方はソースからのインストール作業をする必要がありません(ちなみに私が作成しました!)。
https://github.com/Homebrew/homebrew-core/blob/master/Formula/gromacs.rb

brew install gromacs

これで一発で/usr/local/Cellar/gromacs/以下にインストールされるはずです。一度ターミナルを再起動して、gmx --versionでバージョン情報が表示されるかどうか確かめましょう。

以下、手動でインストールする場合を考えます。

gcc-9のインストール

最近のGromacsはGCCコンパイラのバージョンが最新の9でもOKです。macOS使いの方の場合、App storeからまずXcodeというアプリをインストールします。インストールにはそこそこ時間がかかります。終わったらXcodeを起動して、ライセンスに合意します。続いてターミナルを開き、

xcode-select --install

とすると、XcodeのCommand ilne tools (CLT)がインストールされます。
この状態で

brew tap homebrew/core
brew install gcc

として、gcc 9.1をインストールします。終わりましたら、which gcc-9/usr/local/bin/gcc-9 が返ってきて、gcc-9 --versionでver.が9.1になっていることを確認します(ここはgccのアップデートとともにバージョンが変わり、9.2以降になっていることもありますが、問題ありません)。なっていない場合はecho $PATH/usr/local/binが優先的に左に来ているかを確認します。ない場合は、export PATH="/usr/local/bin:$PATH"を入力してもう一度PATHを確認します。

fftwのインストール

fftwをインストールします。最新版でOKです。これもHomebrewを使って

brew upgrade fftw

または

brew install fftw

とすれば簡単に入ります。んで一応ターミナル落として再起動。

Gromacsのインストールには、CMake ver.3.4以上が必要です。これもHomebrewを使って

brew upgrade cmake

または

brew install cmake

とすれば簡単に入ります。んで一応ターミナル落として再起動。

Gromacsのソースコードからインストール on macOS

GPUを使用しない場合(macbookなど)

まずGromacsのインストール先を決めておきます。例えば私はホームディレクトリ以下の /Users/${USER}/apps/gmx2019.5 にインストールしたいとします(${USER}部分にはお使いのマシンのユーザー名が入ります)。この場合、ターミナルを開いて、

# ターミナルからホークディレクトリの下にappsディレクトリを作成
mkdir ~/apps
# そのappsディレクトリに移動
cd ~/apps
# curlコマンドで、ftp:~~からgromacs-2019.5.tar.gzファイルをダウンロードしてくる
curl ftp://ftp.gromacs.org/pub/gromacs/gromacs-2019.5.tar.gz -o gromacs-2019.5.tar.gz
# ダウンロードしてきたgromacs-2019.5.tar.gzファイルの解凍
tar zxvf gromacs-2019.5.tar.gz
# 解凍したgromacs-2019.5ディレクトリへの移動
cd gromacs-2019.5
# buildディレクトリを作成してそこにcdコマンドで移動
mkdir build
cd build

とします。
インストールの詳細はGromacs公式のインストール方法ページを見ながらしてほしいのですが、だいたいこうすれば準備完了です。

さて、ここで次に打つべきコマンドなのですが、これはオプションをよく考えてやる必要がありますので、人それぞれなのですが、その一例を載せておきます。

cmake .. -DCMAKE_C_COMPILER=gcc-9 \
-DCMAKE_CXX_COMPILER=g++-9 -DGMX_MPI=OFF \
-DGMX_DOUBLE=OFF -DGMX_OPENMP=ON \
-DGMX_GPU=OFF -DGMX_PREFER_STATIC_LIBS=OFF -DGMX_FFT_LIBRARY=FFTW3 \
-DCMAKE_INSTALL_PREFIX=/Users/${USER}/apps/gromacs/2019.5

こんな感じ。マシンにGPUがついており、GPU acceleratedなMDシミュレーションをしたい方は -DGMX_GPU=ON にしておきます。また、-DGMX_MPI=ON にするとノード間MPIが可能な gmx_mpi mdrun にビルドされます。これはスパコンやクラスタコンピュータ上にインストールする時に使うオプションです。Mac上であればマシンを繋いで計算させることはあまりないでしょうから、OFFでOKです。またFFT_LIBRARYでMKL(Intel Math Kernel Library)をお持ちの方はここをMKLにすることも可能です。あとはOFF/ONを自身の好みで付けてください。

Cmakeのときに、

-- found fftw3f, version 3.3.8_1
-- Looking for fftwf_plan_r2r_1d in /usr/local/Cellar/fftw/3.3.8_1/lib/libfftw3f.a
-- Looking for fftwf_plan_r2r_1d in /usr/local/Cellar/fftw/3.3.8_1/lib/libfftw3f.a - found
-- Looking for fftwf_have_simd_avx in /usr/local/Cellar/fftw/3.3.8_1/lib/libfftw3f.a
-- Looking for fftwf_have_simd_avx in /usr/local/Cellar/fftw/3.3.8_1/lib/libfftw3f.a - not found
-- Looking for fftwf_have_simd_sse2 in /usr/local/Cellar/fftw/3.3.8_1/lib/libfftw3f.a
-- Looking for fftwf_have_simd_sse2 in /usr/local/Cellar/fftw/3.3.8_1/lib/libfftw3f.a - found

というところに注目してみて、確かに先ほどhomebrewでインストールしたfftwになっていることを確認します。また、Homebrewでのfftwのインストールはデフォルトでsingleとdouble版の両方のlibraryファイルを創りだしてくれます。

これを実行してエラーが特に出ていなさそうだったら、あとは make -j4 install でインストールが完了するはずです(およそ数分)。

インストールが無事終了したら、インストール先のディレクトリのbin以下にあるGMXRC.bashファイルに対してsourceコマンドを実行します。これにより、PATHやライブラリなどの設定が施され、使用可能な状態になります。

# PATHの設定
source /Users/${USER}/apps/gromacs/2019.5/bin/GMXRC.bash

恒久的に使うために上記コマンドを.bashrcなどに書いておくのも有効です。これでwhich gmxを実行したときにインストール先のディレクトリが返り値として帰ってくれば成功です。

$ which gmx
/Users/${USER}/apps/gromacs/2019.5/bin/gmx

AMD製GPUを使用する場合

MacProみたいにAMD製のGPUを内蔵しているマシンにインストールさせる場合には、GPUとOpenCLを使ったインストール設定方法を使うと爆速にすることができます。とはいえ、Linux+NVIDIA製GPUの方が性能が良いし、macOSでガチのAMD製GPUを積むとものすごく高価になるのでふつうそんなことをやる人は少ないと思いますが……。

ちなみにAMD製GPUとOpenCLを使う場合、2018.8を使うことをおすすめします。これは2018.7までは力場の制御にバグがあることが修正されていなかった(近年になってようやく発見された)ことと、2019.1〜2019.4まではAMD製のGPUがうまく検出されず動作しないバグ、2019.5ではそれは直ったものの動作が非常に不安定になっていることがあるためです。

Gromacs 2018.8でGPU対応のMDをするためにはhwlocのバージョンを1.11までにしなければなりません。また、コンパイラもOpenMPをサポートしたllvm 9.0.0以降が良いと思います。

brew install hwloc llvm libomp

(hwlocのスクリプトをいじれば1.11.12を入れることはできます。また、現行のhwloc 2に対応していない問題はいずれ解決すると思います……たぶん。)

cmakeするときのコマンドはこんな感じ。cmakeコマンドの前にCC, CXX, LDFLAGS, CPPFLAGSなどの環境変数を設定しないとうまくOpenMPが働いてくれないようです。また、llvm (clang)の-DGMX_USE_OPENCL=ONをつけるのがポイントです。

# cmakeコマンド
CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ LDFLAGS="-L/usr/local/opt/llvm/lib" CPPFLAGS="-I/usr/local/opt/llvm/include" cmake .. -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ -DGMX_MPI=OFF \
-DGMX_DOUBLE=OFF -DGMX_OPENMP=ON \
-DGMX_GPU=ON -DBUILD_SHARED_LIBS=OFF \
-DGMX_PREFER_STATIC_LIBS=OFF -DGMX_FFT_LIBRARY=FFTW3 \
-DCMAKE_INSTALL_PREFIX=/Users/${USER}/apps/gromacs/2018.8 -DGMX_USE_OPENCL=ON
# cmakeが正常に終わったのを見て以下を実行。
make -j8 install

(NVIDIA製GPUを使って)Linux OS上にインストールする場合

Ubuntuの場合は apt で、Cent OSやRedHatの場合は yum でgcc、fftw、cmake(またはcmake3)をインストールしておきます。ただしgccはバージョン 6.5系までしかCUDA10に対応していないので、そのように設定する必要があります。

Ubuntu 18.04でGNU compiler 6.5.0をインストールする

aptを使ってGNU compierのgcc, g++のver.6系をインストールしておきます。また、update-alternativesを使うとGCCのバージョン切り替えが楽になります。

sudo apt -y install build-essential gcc-6 g++-6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 65
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 65

この後、gcc, g++についてそれぞれ

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

を一行ずつ入力し、利用したい番号を選ぶとそのバージョンに切り替えてもらえます。

CentOS 7でGNU compiler 6.5.0をインストールする

ソースからインストールしたほうが良いのでやり方は適当にググってください。

Gromacsのcmake設定

CUDA 10とGPUを使いたい場合はcmake時に必ずフラグ-DGMX_GPU=ONを入れる必要があります。以下は設定例の一つです。-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++部分は、上記でインストールしたGNU compiler 6.5.0の絶対パスの指定も可能です(-DCMAKE_C_COMPILER=/usr/local/package/gcc/6.5.0/bin/gccみたいな感じ)。

cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install_dir/gromacs/2019.5 \
-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DGMX_MPI=OFF \
-DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=ON \
-DGMX_PREFER_STATIC_LIBS=ON
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
ユーザーは見つかりませんでした