初心者が macOS Mojave に Homebrew を使って GROMACS をインストール(1)

Homebrew を使って色々なソフトウェアをインストールする前準備は終わった(はず)なので,分子動力学シミュレーション(Molecular Dynamics (MD) Simulation)のソフトウェア,GROMACS とその計算に必要な幾つかのソフトウェアをインストールしていきたいと思います.

このブログとインストールが同時並行なのでうまく行くかも分かりませんが…(うまく行かなかったらトラブルシューティングもしないとです…)

※ 結果,多分うまく行ったのですが,途中心が折れそうになる位,うまく行かなくなって,このブログがお蔵入りになるのではないかと不安になったほどでした(笑)次回の AmberTool で同じことが起こる予感しかしません…

ちなみに,このインストールは Qiita に大変お世話になっています.今回のインストールに至っては,以下のブログを参考にしています.ほんとにそのままなので,別に自分がまとめる必要ないんですけど…

目次
1..bash_profile の作成とパラメータの設定
2.GCC コンパイラのインストール
3.fftw のインストール
4.cmake のインストール
5.GROMACS について
6.GROMACS のインストール -- cmake
7.GROMACS のインストール -- make
8.GROMACS のインストール成功

1..bash_profile の作成とパラメータの設定


macOS 上での Linux (UNIX) 系の話になると登場する ".bash_profile" .一見さまお断りの雰囲気がぷんぷんしますね.因みに,bash_profile ではなく .bash_profile です.ファイル名の前に "." があると不可視ファイルとなります.つまり,普段の Finder 操作では見えないファイルというわけです.

$ cd ~/
$ ls -l 
$ ls -la

ホームディレクトリ内のリスト表示(オプションで -l を付けると見やすくなります)をします.そのあとでホームディレクトリ内の可視・不可視を含む全てのファイルのリスト表示(-a (all), 今回は -la)で表示させてみると接頭部に "." がついたファイルが多数見えるはずです.これが不可視ファイルです.

.bash_profile はデフォルトで macOS(Mac OS X も)に含まれません.なので最初は自分で作る必要があります.

$ vi .bash_profile

vi エディタで .bash_profile という新規ページが作成されます."i" を押せば Insert として文字入力できるようになります.好みによりますが,vi は使いやすいと思います.

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

を入力して,/usr/local/bin に PATH を通しておきます.最後に閉じるときは,esc ボタンを押して(タッチバーになってから違和感が…笑)vi エディタの最下部に :wq を打ち込んで終了です(w: write, q: quit).強制的に保存終了したい場合は "!" を加えます(:wq!).

2.GCC コンパイラのインストール


少し理由があって ver. 6 をインストールします.最新の GCC は ver. 8 で,それでも良いそうですが,AmberTool のインストール時に ver. 6 が求められたりするそうなので.

$ brew install FORMULA

brew を用いてソフトウェア(FORMULA)をインストールするには,上のように書きます.今回は GCC ver. 6 をインストールしたいので,FORMULA の代わりに gcc@6 を入力します.

$ brew install gcc@6

最新版の GCC ver. 8 をインストールしたい場合は,そのまま gcc と入力すれば良いです.

と思ったら,最初のインストールで変なエラーが…

Updating Homebrew...
==> Installing dependencies for gcc@6: isl, mpfr and libmpc
==> Installing gcc@6 dependency: isl
==> Downloading https://homebrew.bintray.com/bottles/isl-0.20.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring isl-0.20.mojave.bottle.tar.gz
Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Directory not empty @ dir_s_rmdir - /usr/local/opt/isl
Error: Directory not empty @ dir_s_rmdir - /usr/local/opt/isl

/usr/local/opt の中身が既に存在していて,ダブルブッキング状態になったのだろうと考えて,opt/ を消去して,前々回の Homebrew のアンインストール・再インストールを行い,再度 gcc@6 のインストールを行った結果,うまく行きました(良かった…

しかし,gcc の所在を探しても入って欲しい場所とは違うところにあると思って調べたら,案の定,色々と忘れていたので,gcc のアンインストール・再インストールしました.

$ brew tap homebrew/core
$ brew install gcc@6
$ brew unlink gcc@6 && brew link gcc@6

しかし,それでもうまく行かずに,Xcode コンパイラの GCC が呼び出されるので,

$ gcc --version
Configured with: --prefix=/Developer/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix
InstalledDir: /Developer/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

他のブログで探しました.以下リンク.

色々とトラブルシューティングをやったので,一度

$ brew cleanup

をして,brew で構築した gcc のエイリアスと gcc@6 も削除しました.

そのうえで,今度は,最新版の gcc(ver. 8)をインストールします.単に心が折れただけです.

$ brew install gcc
$ brew unlink gcc && brew link gcc
$ ls /usr/local/bin | grep gcc
$ ls /usr/local/bin | grep g++
$ ls /usr/local/bin | grep gfortran

を検索して,該当するエイリアス(gcc-8, g++-8, gfortran-8)にシンボリックリンクを貼ります.シンボリックリンクというのはショートカットキーみたいなものらしいです.

$ ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc
$ ln -s /usr/local/bin/g++-8 /usr/local/bin/g++
$ ln -s /usr/local/bin/gfortran-8 /usr/local/bin/gfortran

つまりこの場合は,/usr/local/bin/ の gcc-8 というファイルを gcc として扱い,gcc を呼び出したときに,実際には gcc-8 のエイリアスが参照され,参照元の gcc-8 が実行されるという仕組みらしいです.
果たしてうまく行くのか分からないけど,ここまでやってみました.
ターミナルを再起動して,which gcc や gcc --version で PATH とバージョン確認をしてようやく一息というところです.

$ which gcc
/usr/local/bin/gcc

$ gcc --version
gcc (Homebrew GCC 8.3.0) 8.3.0
Copyright (C) 2018 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.

$ which g++
/usr/local/bin/g++

$ g++ --version
g++ (Homebrew GCC 8.3.0) 8.3.0
Copyright (C) 2018 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.

$ which gfortran
GNU Fortran (Homebrew GCC 8.3.0) 8.3.0
Copyright (C) 2018 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.

本当は,GCC ver. 6 を入れたいのですが,それは必要になったらにします.
ver. 6 の場合は,上の ln コマンド以下を gcc-8 -> gcc-6 にすれば良いと思います.

3.fftw のインストール


fftw とは…,よく分からないので調べました.Fastest Fourier Transform in the West (FFTW) だそうです.あ,つまり高速フーリエ変換のためのソフトウェアです.確かにこれは必要です(こっちの話

なので早速インストールを.

$ brew install fftw

インストールが完了すると,以下のようなサマリーが表示されます.PATH を導入したら?というメッセージがあるので,.bash_profile に入力しておきます.

A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
 /usr/local/etc/openssl/certs
and run
 /usr/local/opt/openssl/bin/c_rehash
openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
If you need to have openssl first in your PATH run:
 echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
For compilers to find openssl you may need to set:
 export LDFLAGS="-L/usr/local/opt/openssl/lib"
 export CPPFLAGS="-I/usr/local/opt/openssl/include"

4.cmake のインストール


cmake も正直よく知りません.cmake とは OS に合わせて makefile(パッケージビルドに必要)を作成してくれるソフトウェアです.

$ brew install cmake
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/cmake-3.14.0.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring cmake-3.14.0.mojave.bottle.tar.gz
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/cmake
==> Summary
🍺  /usr/local/Cellar/cmake/3.14.0: 5,680 files, 53.2MB

こんな感じでインストール成功です.ターミナルを再起動します.GROMACS をインストールする上での cmake の必要最低条件は ver. 3.4 で,最新版は ver. 3.14.0 なので全く問題ありません.

5.GROMACS について


GROMACS はフリーのオープンソフトウェアです.オープンソースなので,GROMACS の HP から自由にダウンロード可能です(以下リンク)

2019.03.15 現在,GROMACS 2018 series は ver. 2018.6 までリリースされており,GROMACS 2019 series は ver. 2019.1 までリリースされています.少なからず,PC 使って遊んでる人は最新版に惹かれるものですが,オープンソフトウェアの最新版は,不安定で bug fix 問題も多いと聞きます.参考にしている上記ブログでは ver. 2018.5 をインストールしているので,基本それで行こうかなと思ったり思わなかったり…

6.GROMACS のインストール -- cmake


以前,別の Mac で試しに GROMACS をインストールしたときに brew で直接できた気もするのですが,今回はホームディレクトリの中に新規ディレクトリを作成して,そこに GROMACS をインストールしたいと思います.

ネーミングセンスはさておき,新規ディレクトリを作成して中に入ります.

$ mkdir ~/ResearchApps
$ cd ResearchApps

例えば,ver. 2019.1 の場合(どのバージョンでも同じです.ダウンロードページが異なるだけです),ダウンロードページに行き,

そのページ内で示されているように,ftp://~ を curl コマンドで実行します.

$ curl ftp://ftp.gromacs.org/pub/gromacs/gromacs-2019.1.tar.gz -o gromacs-2019.1.tar.gz

うまく行かなかったら,2018.5 に戻るとして,最初は 2019.1 でやってみます.折角なので最新版を.

$ pwd
~/Users/hogehoge/ResearchApps
$ tar zxvf gromacs-2019.1.tar.gz

tar コマンドで指定ファイルの解凍を行います.(2行目の /hogehoge/ は自分のホームディレクトリの名前なので伏せただけです)

$ cd gromacs-2019.1
$ mkdir build
$ cd build

gromacs-2019.1 ディレクトリに入って build ディレクトリを作成し,中に入ります.これから cmake を実行するわけですが,幾つか(幾つも?)オプションを設定する必要があります.
オプションは,GROMACS のマニュアル(2.1.3 Typical installation)に載っているので読んでみましょう.

(1)まず,-DCMAKE_C_COMPILER=xxx は,今回コンパイラとして GCC を用います.また,-DCMAKE_CXX_COMPILER=xxx は,G++を用いるので,以下の通りに記載します."\" は改行を示します."\" がないと,この2つのオプションだけで cmake が実行されてしまいます.

$ cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ \

(2)次に,-DGMX_MPI=on/off は MPI support がある場合に on にします.MPI support とは,これもマニュアル通りですが,以下,最初の方を和訳.

GROMACSは、内蔵のスレッドMPIを使用して単一のワークステーションの複数のコア上で並列に実行できます。
これを有効にするためにユーザー操作は必要ありません。
ネットワーク上の複数のマシンで並列に実行したい場合は、次のものが必要です(以下省略)
-DGMX_MPI=OFF \

(3)-DGMX_GPU=on/off のオプションは,複数のGPUを並列化して計算するためのオプションだと思っていましたが,"to build using nvcc to run using NVIDIA CUDA GPU acceleration (page 11) or an OpenCL GPU" を見る限り,NVIDIA や OpenCL のためのオプションのようなので,ATI Radeon の私には関係ないということで off にします.

-DGMX_GPU=OFF \

(4)-DGMX_USE_OPENCL=on/off についてです.これは OpenCL のサポートを有効にするかどうかのオプションです."GMX_GPU must also be set." と書かれてあるので,GROMACS を GUI で用いる場合は on にしてください.今回は off です.GUI をインストールするときに on にすれば良いと思います.

-DGMX_USE_OPENCL=OFF \

(5)-DGMX_SIMD=xxx については,SIMD support (Manual p. 10) を読む限り,理解不能な警告メッセージが出ない限りは指定する必要は無いそうです.自分も読んでもよく分からなかったのですっ飛ばします.

(6)-DGMX_BUILD_MDRUN_ONLY=on/off は mdrun だけをインストールするかどうかのオプションです.やはりよく分からないのですが,"this is generally a good idea for the targets for which an mdrun-only build is desirable." とあるので,今回は off にしてみます.

-DGMX_BUILD_MDRUN_ONLY=OFF \

(7)-DGMX_DOUBLE=on/off のオプションでは,GROMACS を二重の正確さでビルドするためにありますが,当然,速度は遅くなるので,一般的な利用では勧めないそうです.

-DGMX_DOUBLE=OFF \

(8)-DGMX_FFT_LIBRARY=xxx は FFT support のための fftw3, mkl, fftpack ライブラリを選択します.今回は GROMACS インストールのために,fftw をインストールしたので,xxx=FFTW3 とします.
また,-DCMAKE_PREFIX_PATH=xxx のオプションでは,Cmake が正しいライブラリ,ヘッダー,プログラムを見つけるのを手助けします.ライブラリがデフォルトとは異なる場所にインストールされている場合は,PATH を示します.上記の fftw を用いるので,以下の通りに指定します.

-DGMX_FFT_LIBRARY=FFTW3 \ 
-DCMAKE_PREFIX_PATH=/usr/local/Cellar/fftw/3.3.8 \ 

(9)-DBUILD_SHARED_LIBS=off/on のオプションでは,共有ライブラリを構築するかどうかなので,今回は off にします.

-DBUILD_SHARED_LIBS=off \

(10)-DCMAKE_BUILD_TYPE=Debug はデバッグモードで GROMACS をビルドするためのオプションです.

(11)最後に -DCMAKE_INSTALL_PREFIX=xxx でインストールする場所を決定します.デフォルトは,/usr/local/gromacs に設定されていますが,今回は ~/Users/hogehoge/ResearchApps/gmx_2019_1 にします.

-DCMAKE_INSTALL_PREFIX=/Users/hogehoge/ResearchApps/gmx_2019_1

cmake を実行するときに,オプションに変にスペースが入ったりするとエラーになります.それで十数回悩まされました.

cmake は makefile を作成するプログラムなので,今いるディレクトリ:/Users/hogehoge/ResearchApps/gromacs-2019.1/build 内に作成されます.実際に Finder で確認するとファイルが沢山作成されたことが分かります.

実行ログを見ると,ちょくちょく Failed や not found と表示されていて不安になりますが,特にエラーで途中停止したとかではないので先に進めることにします.

7.GROMACS のインストール -- make


Cmake によって Makefile 作成がうまく行ったので,次は Makefile からパッケージをビルド・インストールしていきます.ほんとに初心者なので,何が正解か,誰が正解か分からないので,GROMACS のマニュアル通りに進めてみます.

$ make -j4
$ make check 
$ make -j4 install

-j というオプションを使うと同時処理を行ってくれます.CPUの数(実装・仮想)が良いといわれてるので,その通りにしてみます.例えば,-j8 は理論上 j オプション無しの時の 8 倍速ということになります.CPU を食うので逆効果になる場合もあるそうです.自分の Mac は実装・仮想合わせて 8 コアなので 8 でも良いのですが,他のソフトも動いているので 4 で行いました.

まず,make -j4 パッケージビルドを行います.次に make check でコンパイルが成功しているか確認します.すべてうまく行っていれば,make install でパッケージインストールを行います.cmake のオプションで指定したgmx_2019_1 にインストールされることを期待します.

最後に,以下のコマンドを実行すれば,PATH やライブラリが設定され,利用可能になりました.

$ source /Users/hogehoge/ResearchApps/gmx_2019_1/bin/GMXRC.bash

自分の Mac がいけないのかよく分からないけど,.bashrc に上記コマンドを入力しても 

$ which gmx
/Users/hogehoge/ResearchApps/gmx_2019_1/bin/gmx

が反映されないので,.bash_profile に source 以下を入れました.実際には色々あって,この操作をやってもダメで,tar からやり直したりしましたがようやくインストール完了しました.make check でうまく行かなくなったりしたので,見ないふりをしました(check すらしない.良いのか知らんけど).

8.GROMACS のインストール成功


GROMACS は,PATH が通った状態でターミナルに gmx (コマンド) を実行すれば起動します.

$ gmx
                         :-) GROMACS - gmx, 2019.1 (-:

                            GROMACS is written by:
     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
 Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
 Christian Wennberg    Maarten Wolf   
                           and the project leaders:
        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel

Copyright (c) 1991-2000, University of Groningen, The Netherlands.
Copyright (c) 2001-2018, The GROMACS development team at
Uppsala University, Stockholm University and
the Royal Institute of Technology, Sweden.
check out http://www.gromacs.org for more information.

GROMACS is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 2.1
of the License, or (at your option) any later version.

GROMACS:      gmx, version 2019.1
Executable:   /Users/hogehoge/ResearchApps/gmx_2019_1/bin/gmx
Data prefix:  /Users/hogehoge/ResearchApps/gmx_2019_1
Working dir:  /Users/hogehoge
Command line:
  gmx

SYNOPSIS

gmx [-[no]h] [-[no]quiet] [-[no]version] [-[no]copyright] [-nice <int>]
    [-[no]backup]

OPTIONS

Other options:

 -[no]h                     (no)
           Print help and quit
 -[no]quiet                 (no)
           Do not print common startup info or quotes
 -[no]version               (no)
           Print extended version information and quit
 -[no]copyright             (yes)
           Print copyright information on startup
 -nice   <int>              (19)
           Set the nicelevel (default depends on command)
 -[no]backup                (yes)
           Write backups if output files exist

Additional help is available on the following topics:
    commands    List of available commands
    selections  Selection syntax and usage
To access the help, use 'gmx help <topic>'.
For help on a command, use 'gmx help <command>'.

GROMACS reminds you: "Check Your Input" (D. Van Der Spoel)

新しくソフトウェアをインストールしたときに,こうやって表示されると嬉しくなりますね(自分だけかもしれないけど…

GROMACS を動かすにはまだまだインストールしなければならないソフトウェアがあるので次回以降はそれらをインストールしていきたいと思います.

この記事が気に入ったらサポートをしてみませんか?