• ライフサイエンス分野の研究をIT技術で支援します

    2021/1/28にリリースされたGROMACS 2021のインストールと動作検証を、クラウドの計算機を使って実行しました。
    比較的小さい系ですが、仮想48CPUコアの計算機で、1nsのMD計算を10分未満で完了しました。驚くべき速さです。
    以下の手順は、2020/1/31時点で動作を確認した方法です。
    クラウド(Amazon Web Service)を使った方法なので、誰でも同じように実行できると思いますが、プログラムのバージョンアップ等の変更で実行できない場合もあり得ます。
    問題なくスムーズに作業ができれば、作業時間は2時間程度、予算1000円以内で、1nsのMD計算のチュートリアルを実行できます。
    念のため、作業時間4時間、予算5000円程度を想定しておくとよいかもしれません。
    (注意) 作業完了後に、ディスク等のリソースを含めて、使用した計算機を完全に削除しないと予想外の費用がかかる場合があるので注意が必要です。


    GROMACSのトラジェクトリーをmyPresto Portalでアニメーションファイルにしたもの


    使用したプログラム

    gromcs 2021 (2021/1/28 リリース)
    myPresto Portal ver.1.1.75 (Mac版) (2021/1/26リリース) (トラジェクトリーのアニメーション作成に使用)
    gcc ver.7.3.1  (インストールに使用)
    g++ ver.7.3.1  (インストールに使用)
    cmake ver 3.13.3 (インストールに使用)

    gromacs 2021のインストールには、バージョンが3.13以上のcmakeが必要です。
    myPresto Portal ver.1.1.75は、今回のバージョンアップで、ドッキングで使用できるリガンドの分子数が400まで可能となりました。ver.1.1.74までは分子量300までに制限されていました。今回は、GROMACSのトラジェクトリーをアニメーションファイルにするのに使用しました。

    AWSで借りた計算機(インスタンス)の構成

    インスタンスタイプ: c5.12xlarge (2.568 USD 1 時間あたり, 東京リージョン)
    vCPU: 48
    RAM: 96GB
    DISK: 30GB
    OS: Amazon Linux 2

    クラウドでの作業が不慣れな人は、もう少し安いインスタンス(例えば、c5.2xlarge)等で練習するとよいかもしれません。
    CPU数が少ないとインストール時間、計算時間が長くかかるので、今回の構成はCPU数が多いものを使用しました。

    AWSでのインスタンス起動手順

    AWS マネジメントコンソールにサインインして、EC2のサービスを選択して、EC2のページに移動し、 インスタンスの作成ボタンをクリックして、起動作業を開始する。
    ステップ 1: Amazon マシンイメージ (AMI)
    Amazon Linux 2 AMI (HVM), SSD Volume Typeを選択。
    ステップ 2: インスタンスタイプの選択
    c5.12xlargeを選択 (仮想コア数48、メモリ96GBのもの)
    ステップ 3: インスタンスの詳細の設定
    (変更なし)
    ステップ 4: ストレージの追加
    ルートボリュームのサイズを30Gに設定
    (最初は必要最低限で確保して、必要に応じて拡張するとよい。大きく確保したものを、小さくすることはできない。)
    Amazon Linux 2に、gromacs 2021をインストール後のディスク使用量は約11GBなので、20GBでもいいかもしれません。
    ステップ 5: タグの追加
    タグの追加ボタンを押して、例えば、
    Name, AmazonLinux2_gromacs_210131
    と設定する。Nameのタグをつけておくとインスタンスのリストで、インスタンスを区別しやすくなる。
    ステップ 6: セキュリティグループの設定
    セキュリティグループ名を、例えば、次のものに設定する。
    AmazonLinux2_gromacs_210131-sg
    (標準でSSH接続が可能な状態になっているので、そこは変更しない。)
    後で、セキュリティグループの設定を変更する場合に、名前が付いていると分かりやすい。セッションマネージャーの設定をすれば、SSH接続で使用するポートを閉じても、サーバに接続できる。
    (22番ポートだけを解放したセキュリティグループを作成して、それを複数のインスタンスで使うのでも問題ない。)
    ステップ 7: インスタンス作成の確認
    "起動"ボタンを押すー>鍵ファイルを設定-> "インスタンス の作成"ボタンを押す。

    GROMCS 2021 インストール手順:

    (注意: 以下は、Amazon Linux 2でのインストール手順です。他のOSの場合には、一部の手順やコマンドが異なる場合があります。例えば、Ubuntu等では、パッケージインストールのコマンドはyumではなくaptを使用しますし、また、インストールするパッケージ名が異なる場合があります。CentOS7では、yumでインストール可能なgcc/g++のバージョンが古いので、それが問題になるかもしれません。CentOS8では、パッケージインストールのコマンドはyumではなく、dnfを使用します。)

    cmakeのインスール(GROMACSのインストールに必要)

    GROMACAS 2021のインストールに必要なcmakeのバージョンは、3.13以上ですが、使用したシステムでyumでインストールできるcmakeは2.8.12.2でしたので、ソースコードからビルドすることにしました。
    以下の手順ではホームディレクトリで作業しています。(1行目のcdはホームディレクトリに移動するコマンドで、ログイン直後の場合には不要です。)

    cd
    sudo yum install gcc gcc-c++
    sudo yum install zlib-devel libcurl-devel
    
    wget https://cmake.org/files/v3.13/cmake-3.13.3.tar.gz
    tar xzvf cmake-3.13.3.tar.gz
    cd cmake-3.13.3/
    ./bootstrap --system-curl
    gmake -j48
    sudo make install
    cd

    最後にcdコマンドでホームディレクトリにもどっておいた方が、その後の作業に支障が支障が少ないと思います。
    gmake -j48は、48並列での処理を指示。使用しているシステムが仮想48コアなので、48を指定しました。この数字は使用するシステムのコア数に合わせるといいでしょう。
    -jと数字の間に、スペースは有っても無くてもいいです。
    -j (数字)を指定しないと、並列処理をしないので時間が長くかかります。
    特に指定しなければ、cmakeのバイナリは、/usr/local/binにインストールされます。
    cmakeの関連ファイルは、/usr/local/share/cmake-3.13/にインストールされます。

    gromacs 2021のインストール

    cd
    sudo yum install doxygen
    wget http://ftp.gromacs.org/pub/gromacs/gromacs-2021.tar.gz
    tar xzvf gromacs-2021.tar.gz
    cd gromacs-2021
    mkdir build
    cd build
    cmake .. -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON
    make -j48
    make check
    sudo make install
    cd

    1行目のcdはホームディレクトリに移動するコマンドです。前の作業によっては、別の場所にいることがあるので、念のためホームディクトリに移動するコマンドをまず実行しています。
    特に、指定しなければ、gromacsは/usr/local/gromacs/にインストールされます。
    gromacsを使用する前には、次のコマンドを実行します。このコマンドで、パス等を含めてGROMCSの実行環境が用意されます。

    source /usr/local/gromacs/bin/GMXRC


    動作検証手順

    動作検証として、次のURLで公開されているGROMACS Tutorialsの1つ(Turotorial 1: Lysozyme in Water)を実行しました。
    http://www.mdtutorials.com/gmx/

    入力ファイルの準備

    タンパク質構造データ

    pdb1aki.ent

    PDBjからダウンロードしました。他のPDBサイトからダウンロードするとファイル名が異なる場合があります(例えば、1AKI.pdb等)。
    https://pdbj.org/mine/resources/1aki

    GROMACSのインプットファイル

    チュートリアルで使用している以下のインプットファイルをダウンロードして使用しました。

    ions.mdp
    md.mdp
    minim.mdp
    npt.mdp
    nvt.mdp

    チュートリアルの本文からリンクが貼ってあるファイルを次のURLから取得しました。
    http://www.mdtutorials.com/gmx/lysozyme/Files/

    MDシミュレーションの実行手順

    ホームディレクトリの下にworkディレクトリを作成し、そこに、上記のファイル(pdb1aki.ent, *.mdp)を配置して、workの下で計算を実行しました。

    cd ~/work/
    source /usr/local/gromacs/bin/GMXRC
    
    grep -v HOH pdb1aki.ent  > 1AKI_clean.pdb
    gmx pdb2gmx -f 1AKI_clean.pdb -o 1AKI_processed.gro -water spce
    上のコマンドで対話モードなるので15を入力します。15番は、表示されるリストにおいて次の内容のものです。
    15: OPLS-AA/L all-atom force field (2001 aminoacid dihedrals)  (この行はコマンドではありません。)
    
    gmx editconf -f 1AKI_processed.gro -o 1AKI_newbox.gro -c -d 1.0 -bt cubic
    gmx solvate -cp 1AKI_newbox.gro -cs spc216.gro -o 1AKI_solv.gro -p topol.top
    gmx grompp -f ions.mdp -c 1AKI_solv.gro -p topol.top -o ions.tpr
    gmx genion -s ions.tpr -o 1AKI_solv.gro -p topol.top -pname NA -nname CL -neutral
    上のコマンドで対話モードとなるので13を入力します。(SOLを選択)
    
    gmx grompp -f minim.mdp -c 1AKI_solv.gro -p topol.top -o em.tpr
    gmx mdrun -v -deffnm em
    gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr
    gmx mdrun -v -deffnm nvt
    gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr
    gmx mdrun -v -deffnm npt
    gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md_0_1.tpr
    gmx mdrun -v -deffnm md_0_1

    ここまで計算が終わったら、次のコマンドで計算機を停止することをおすすめします。停止後に、CPUコア数が少ないインスタンスタイプに変更すると良いでしょう。インスタンスタイプの変更は、計算機を停止する必要があります。

    sudo shutdown -h now

    インストールでは、make -j48等で、並列処理が可能な箇所があり、CPUが多いと時間短縮が可能です。
    また、MD計算でもコアが多い方が短い時間で計算が完了します。
    しかし、結果の解析では、コア数が多い必要はありませんので、計算終了後に、一旦、計算機を停止して、インスタンスタイプをCPU数が少ないものに変更するといいでしょう。
    AWSマネジメントコンソールでインスタンスタイプを変更することが可能です。
    東京リージョンでは1 時間あたりのインスタンス利用料は、仮想48コアのc5.12xlargeは2.568 USDですが、仮想8コアのc5.2xlargeだと0.428 USDです。
    コア数が多い必要がなければ、安いインスタンスタイプに変更した方がよいでしょう。
    解析の段階では、CPUコア数が少なくても支障がない場合が多いと思います。メモリが少なすぎると心配なので、メモリサイズが適当になるようにインスタンスタイプを選ぶと良いと思います。


    インスタンスタイプは、計算機を停止後に、AWSマネジメントコンソールでインスタンスを選択し、右上にある"アクション"→"インスタンスの設定"→"インスタンスタイプを変更"で行います。



    解析等

    解析は、MD計算実行後にインスタンスを一旦停止してインスタンスタイプを変更し、その後に"インスタンスの状態"->"インスタンスを開始"を選択することによって計算機を起動し、2、3分待ってからログインして作業を行うようにすると、コスト削減ができると思います。
    ここでは、MD計算終了後に、トラジェクトリーをmyPresto Portalで読み込んで観察し、その後にアニメーションの作成を行うことにします。
    myPresto PortalでGROMACSのトラジェクトリーを読み込む際にはトラジェクトリーファイルと、そのトラジェクトリーに対応したPDBファイルを一緒に読み込む必要があります。次のコマンドで、GROファイルからPDBファイルを作成します。

    source /usr/local/gromacs/bin/GMXRC
    cd work
    gmx editconf -f md_0_1.gro -o md.pdb

    再ログインすると、GMXRCを再度実行する必要があります。何度も使う場合には、GMXRCを実行するコマンドを.bashrcに追記しておくといいでしょう(bashの場合)。

    gmx editconfで作成したPDBファイル(ここではmd.pdb)とMD計算で得られたトラジェクトリーファイル(md_0_1.xtc)を、手元のPCにダウンロードして、myPresto Portalで読み込むと、トラジェクトリーを再生できます。
    アニメーションファイルを作成することもできます。
    myPresto Portalは、Windows版、MacOSX版、Linux版があります。






    アニメーション作成は、”MD Analysis"のタブの"Save Animation"ボタンをクリックすることで開始します。
    アニメーション作成の前に、描画を変更しておくといいでしょう。このページの冒頭のアニメーションでは、水分子とイオン分子を非表示にして、タンパク質の描画にline表示を追加し、タンパク質のカラーをCPKにした後で、リボンを二次構造の色にしています。
    具体的には、次のように操作します。
    Tree Viewのwat2, wat3, met4を選択して右クリック、Hide Atomを選択
    Tree Viewのpro1を選択、Display -> Line -> On
    Tree Viewのpro1を選択、Color -> Atoms -> Cpk
    Tree Viewのpro1を選択、Color -> Tube Ribbon Cartoon -> Structure
    水分子を表示すると、水分子が周期境界面をまたぐ時に、表示がおかしくなります。

    myPresto Portalのチュートリアルは、myPresto5の公式サイトからダウンロードできます。
    myPresto Portalのチュートリアルのリンク(myPresto5のサイト)

    インスタンスの削除

    インスタンスを停止しておくとインスタンス料金はかかりませんが、ディスク料金(EBS(Elastic Block Strage)の料金)がかかりますので、注意してください。
    使い終わったらインスタンス等を放置せずに必ず終了してください。そうしないと課金が発生し続けます。ディスク(ボリューム、EBS)等も残っていないことも確認してください。AWS マネジメントコンソールで、AWS Cost Exlorerにアクセスして、こまめにコストを確認するとよいでしょう。

    GROMCS 2021の計算速度結果

    上述の手順でMD計算を実行した結果、仮想48CPUのシステムで1nsの計算が8.4分で完了しました。驚くべき速さでした。
    次の画像は最後のMD計算の出力ファイルのの一部で、計算速度についての情報を示しています。1nsの計算が10分未満(0.14時間=8.4分)で終了すること、1日で171nsの計算が可能なことを示しています。





    GROMACS実行時のtopコマンドでの表示

    今回使用したシステムでは、gromacsのMD計算実行時にtopコマンドの表示では、CPU使用率が4800%となっていました。1プロセスで48スレッドを使った計算を実行しているようです。

    参考URL

    GROMACS:
    http://www.gromacs.org

    myPresto5:
    https://www.mypresto5.jp
    ここからmyPresto Portalをダウンロードできます。

    追加情報

    インスタンスタイプを変更後に次のコマンドを実行した速度結果(標準出力の末尾)を以下に示します。

    gmx mdrun -v -deffnm md_0_1

    仮想96コアのインスタンス(c5.24xlarge)

    仮想16コアのインスタンス(c5.16xlarge)