Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?
@Ag_smith

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

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

環境

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

2021年3月現在、最新版の2021.1がHomebrew上で配信されているので、macOSの方はソースからのインストール作業をする必要がありません(ちなみに2019.3版は私が作成しました!)。
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 install gcc@9 cmake fftw

として、gcc 9.3をインストールします。終わりましたら、which gcc-9で/usr/local/bin/gcc-9が返ってきて、gcc-9 --versionでver.が9.3になっていることを確認します。

$ which gcc-9
/usr/local/bin/gcc-9

$ gcc-9 --version
gcc-9 (Homebrew GCC 9.3.0_1) 9.3.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.

なっていない場合はecho $PATH/usr/local/binという文字列が含まれているかを確認します。ない場合は、export PATH="/usr/local/bin:$PATH"を入力してもう一度PATHを確認します。

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

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

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

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

こんな感じ。マシンに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.9
-- Looking for fftwf_plan_r2r_1d in /usr/local/Cellar/fftw/3.3.9/lib/libfftw3f.a
-- Looking for fftwf_plan_r2r_1d in /usr/local/Cellar/fftw/3.3.9/lib/libfftw3f.a - found
-- Looking for fftwf_have_simd_avx in /usr/local/Cellar/fftw/3.3.9/lib/libfftw3f.a
-- Looking for fftwf_have_simd_avx in /usr/local/Cellar/fftw/3.3.9/lib/libfftw3f.a - not found
-- Looking for fftwf_have_simd_sse2 in /usr/local/Cellar/fftw/3.3.9/lib/libfftw3f.a
-- Looking for fftwf_have_simd_sse2 in /usr/local/Cellar/fftw/3.3.9/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/2021.1/bin/GMXRC.bash

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

$ which gmx
/Users/${USER}/apps/gromacs/2021.1/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がうまく検出されず動作しないバグ、2020.4ではそれは直ったものの動作が非常に不安定になっていることがあるためです。

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 で、CentOSやRedHatの場合はyumまたはdnf でfftw、cmake(またはcmake3)をインストールしておきます。以下ではCUDA 11.2とGNU compiler 9.3.0(/usr/bin/gcc)の使用を想定しています。

Ubuntu 20.04にインストール準備

aptを使ってCMakeとfftw3をインストールしておきます。

sudo apt -y install cmake libfftw3-dev

CentOS 8にインストールする準備

dnfを使ってCMakeとfftw3をインストールしておきます。

dnf -y install cmake3 fftw-devel

Gromacsのcmake設定

CUDA 11とGPUを使いたい場合はcmake時に必ずフラグ-DGMX_GPUを入れる必要があります。Gromacs 2021以降、GPUの選択が従来の-DGMX_GPU=ONから以下のオプションの選択式に変化しました。

CMake Error at cmake/gmxOptionUtilities.cmake:79 (message):
  Invalid value for GMX_GPU: ON.  Pick one of: OFF, CUDA, OpenCL, SYCL
Call Stack (most recent call first):
  CMakeLists.txt:203 (gmx_option_multichoice)

NVIDIA GPUのときは-DGMX_GPU=CUDAを、AMD GPUの場合は-DGMX_GPU=OpenCLを使うと良いでしょう。

cmake .. -DCMAKE_INSTALL_PREFIX=${HOME}/apps/gromacs/2021.1 \
-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DGMX_MPI=OFF \
-DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=CUDA \
-DGMX_PREFER_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON
10
Help us understand the problem. What is going on with this article?
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.
Sign Up
If you already have a Qiita account Login
10
Help us understand the problem. What is going on with this article?