TSUBAME3.0計算サービスのWebページはこちら

TSUBAME2.5からTSUBAME3.0へのデータ移行方法の資料はこちら

Gromacs GPU版の試験公開について

TSUBANE2.5 にGromacs5.0.4をインストールいたしました。   (2016.2.2修正)
利用方法は次の通りです.

(1) 環境設定 (gnu版のみ)
  $ export PATH=/usr/apps.sp3/mpi/openmpi/1.6.5/g4.3.4/bin:$PATH
  $ export LD_LIBRARY_PATH=/usr/apps.sp3/mpi/openmpi/1.6.5/g4.3.4/lib:$LD_LIBRARY_PATH
  $ source /usr/apps.sp3/free/gromacs/5.0.4_g/bin/GMXRC
※試験データが必要な場合は次も実施 -->
       $ tar -xzvf /usr/apps.sp3/free/gromacs/5.0.4_g/gromacs-gpubench-dhfr.tar.gz
       $ cd dhfr/GPU/dhfr-solv-PME.bench
       

(2) 前処理
 $ grompp -f gpu-PME.mdp -c conf.gro -p topol.top -o topol.tpr

(3) 実行
 ・シングル
  $ mdrun -nsteps 2000 -s topol.tpr -testverlet -g output.log
・MPI
  $ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_mpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUシングル
  $ mdrun_gpu -gpu_id 0 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUノード内
  $ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_gpumpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUノード間
$ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_gpumpi -ntomp 1 -npme -ntomp_pme -nsteps 2000 -s topol.tpr -testverlet -g output.log

(4)バッチ処理
  > cat job.sh
  #!/bin/bash
  #
  # sample jobscript
  export PATH=/usr/apps.sp3/mpi/openmpi/1.6.5/g4.3.4/bin:$PATH
  export LD_LIBRARY_PATH=/usr/apps.sp3/mpi/openmpi/1.6.5/g4.3.4/lib:$LD_LIBRARY_PATH
  source /usr/apps.sp3/free/gromacs/5.0.4_g/bin/GMXRC
  #
  cd ${PBS_O_WORKDIR}
  mpirun -np 4 -hostfile $PBS_NODEFILE /usr/apps.sp3/free/gromacs/5.0.4_g/bin/mdrun_gpumpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
  #
> t2sub -q G -W group_list=xxxx -l select=2:mpiprocs=2:gpus=2:ncpus=1:mem=10gb -l place=scatter ./job.sh

 このプログラムの資源指定はハイブリット並列です。動作確認を実施して G/S/X キューでご利用ください。

(5) Vキューでの利用は次のようにしてください。

#sample
export  PATH=/usr/apps.sp3/mpi/mpich2/3.1/g4.3.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/apps.sp3/mpi/mpich2/3.1/g4.3.4/lib:$LD_LIBRARY_PATH
source /usr/apps.sp3/free/gromacs/5.0.4_gV/bin/GMXRC
#
cd ${PBS_O_WORKDIR}
mdrun -nsteps 2000 -s topol.tpr -testverlet -g output.log
#mpirun -np 4 -hostfile $PBS_NODEFILE /usr/apps.sp3/free/gromacs/5.0.4_gV/bin/mdrun_mpi ...
#

> t2sub  -q V -W group_list=xxxxx -l select=1:ncpus=1:mem=20Gb ./job.sh
mpi実行も可能ですが、ノード内並列で、ハイブリット指定で投入します。
> t2sub -q V -W group_list=xxxxx -l select=1:ncpus=1:mpiprocs=8:mem=23gb ./job.sh

※注意
  mpich は使用メモリ量を過小評価することがあります。
  ハイブリッド並列の指定をして、memは23GBを使ってください。ただし、複数ノードは指定しないでください。
----------------------------------------

TSUBANE2.5 にGromacs4.6.5をインストールいたしました。   (2015.1.13追記)
利用方法は次の通りです.

(1) 環境設定 (gnu版のみ)
  $ source /usr/apps.sp3/free/gromacs/4.6.5_g/bin/GMXRC
  $ export PATH=/usr/apps.sp3/mpi/openmpi/1.6.5/g4.3.4/bin:$PATH
  $ export LD_LIBRARY_PATH=/usr/apps.sp3/mpi/openmpi/1.6.5/g4.3.4/lib:$LD_LIBRARY_PATH

(2) 前処理
 $ grompp -f gpu-PME.mdp -c conf.gro -p topol.top -o topol.tpr

(3) 実行
 ・シングル
  $ mdrun -nsteps 2000 -s topol.tpr -testverlet -g output.log
・MPI
  $ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_mpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUシングル
  $ mdrun_gpu -gpu_id 0 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUノード内
  $ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_gpumpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUノード間
$ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_gpumpi -ntomp 1 -npme -ntomp_pme -nsteps 2000 -s topol.tpr -testverlet -g output.log

動作確認を実施してご利用ください。
-------------------------------
TSUBANE2にGromacs4.6.1をインストールいたしました。   (6/20追記)

利用方法は次の通りです.
(1) 環境設定
$ source /usr/apps/free/gromacs/4.6.1_i_2013.0.079/bin/GMXRC
(2) 前処理
$ grompp -f gpu-PME.mdp -c conf.gro -p topol.top -o topol.tpr
(3) 実行
・シングル
$ mdrun -nsteps 2000 -s topol.tpr -testverlet -g output.log
・MPI
$ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_mpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUシングル
$ mdrun_gpu -gpu_id 0 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUノード内
$ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_gpumpi -ntomp 1 -nsteps 2000 -s topol.tpr -testverlet -g output.log
・GPUノード間
$ mpirun -np -hostfile ${PBS_NODEFILE} mdrun_gpumpi -ntomp 1 -npme -ntomp_pme  -nsteps 2000 -s topol.tpr -testverlet -g output.log

動作確認を実施してご利用ください。

-----------------------以下は4.5版利用について--------

TSUBAME 2にGromacs4.5.3+OpenMM2.0(GPU版)をインストールいたしました。

このバージョンはTSUBAME2環境と一部適応外のため、不具合が確認されており、 状況把握できるユーザ様限定の試験公開の扱いとなります。

------------------------------------------------------

Gromacs-gpuの配置

  配置場所 : /usr/apps/free/nosupport/gromacs

   4.5.3_g                      bench-data                gromas_gpu-exp.sh      source                        Notice                    

実行方法

1.データの準備  pdb2gmx、grompp等のツールを使用して入力データを作成します。

$ source /usr/apps/free/nosupport/gromacs/gromas_gpu-exp.sh

$ grompp -f  

※入力データの作成はCPU版、GPU版共に同じツールを使用します。

   (GPU版の利用できる機能は/usr/apps/free/nosupport/gromacs/Noticeをご参照ください)

2. GPU版実行方法(1GPUのみ)

    a) GPU用インターラクライブノードでの実行確認

$ source /usr/apps/free/nosupport/gromacs/gromas_gpu-exp.sh

$ mdrun-gpu -s test.tpr

※GPU版のサポートしない機能を指定している場合に、 以下のメッセージを表示して実行失敗になります。

:
Fatal error:
OpenMM supports only the following methods for electrostatics:
NoCutoff (i.e. rcoulomb =
:

この場合、/usr/apps/free/nosupport/gromacs/Noticeを参照して、mdpファイルを修正の上、データを再作成してください。

    b) バッチ利用  

$ cat test.sh

#!/bin/sh
cd $PBS_O_WORKDIR
source /usr/apps/free/nosupport/gromacs/gromas_gpu-exp.sh
mdrun-gpu -s test.tpr

$ t2sub -W group_list= -q -l gpus=1 test.sh

3. CPU版実行方法 通常のCPUも使用可能です。

$ source /usr/apps/free/gromas_gpu-exp.sh

    a) シングル実行

$ mdrun-s -s   

    b) MPI実行  

$ mpirun -np mdrun -s

インストール方法

ソースは/usr/apps/free/nosupport/gromacs/sourceに置いてあります。  自分のディレクトリにソースをコピーしてインストールしてください。  インストールは 基本版-->OpenMM-->GPU版 の順で実施します。  詳細はinstall.log/build.logを参照してください。

【重要】  本バージョンの推奨環境はgcc4.4となっております。(TSUBAME2は4.3です)  正しく動作させるには、ライブラリの導入から実施する必要があります。

-----------------------------
GromacsのGPU対応状況/制限/不具合等は以下の通りとなります。
------------------------------

GromacsのGPU対応状況

本バージョンは実験バージョンの模様です。

(1) 開発元の情報

DESCRIPTION (全文は/usr/apps/free/nosupport/gromacs/Noticeを ご参照ください)

----------
This is an experimental release of GROMACS for accelerated Molecular Dynamics simulations on GPU processors. Support is provided by the  OpenMM library (https://simtk.org/home/openmm).
* Warning*
This release is targeted at developers and advanced users and care should be taken before production use. The following should be noted before using the program:

* Only a small subset of the GROMACS features and options are supported on the GPUs. See below for a detailed list.
:
* In order to take a full advantage of the GPU platform features, many algorithms have been implemented in a very different way than they are on the CPUs. Therefore numerical correspondence between properties of the state of simulated systems should not be expected. Moreover, the values will likely vary when simulations are done on different GPU hardware.
----------

(2) 動作条件(コンパイル)

以下の環境条件になっております。

    使用ソフト名-------  TSUBAME2.0の現状または対策----------  

  1. cmake >= 2.6.4  ○(最新版をインストール) システムのcmakeバージョンは2.6-patch2です。
  2. cuda 3.1        ○
  3. openMM             △ (make testで、53ケース中の1個は失敗)  
  4. gcc4.4               △ gcc4.3(TSUBAME2環境)

gcc4.3でインストールしてみたところ、gromacs-GPUのインストール、make testまでは特に問題ない模様です。
Gromacs GPU用ベンチマークデータを利用して確認したところ、性能は出るようですが、6ケース中の1ーケースはGPUで失敗しました。
これはgccバージョンが原因ではないかと思われます。

(3) 動作結果

提供側からの情報の中に、GPU利用アルゴリズムを大きく変更しており、 結果はCPU利用時の結果と同じではない」旨の一文があるため、今回は短い ステップ(nsteps=1000、本来のベンチデータはnsteps=-1で 無限定です)のみの 確認としております。計算結果の比較確認は実施しておりません。 nsteps=1000における性能は以下となります。

CASE1:                    1CPU        8CPU        GPU
wall time(s)             122.220    22.226      1.700
performance(ns/day)  1.415       7.782   101.761

CASE2:                    1CPU        8CPU        GPU
wall time(s)           558.300      85.444      1.649
performance(ns/day)  0.310        2.024   104.927

CASE3:                    1CPU        8CPU        GPU
wall time(s)           723.310      92.817      2.473
performance(ns/day)  0.239        1.864    69.942

CASE4: **(GPUで実行失敗)
(Error: invalid argument launching kernel kFindAtomRangeForGrid)
                              1CPU        8CPU        GPU
wall time(s)           148.180      21.293           ×
performance(ns/day)  1.167        8.123           ×

CASE5:                    1CPU        8CPU        GPU
wall time(s)             89.160      11.997     9.796
performance(ns/day)  1.940      14.418    17.657

CASE6:                    1CPU        8CPU        GPU
wall time(s)           442.920      56.655    23.808
performance(ns/day)  0.391        3.053     7.265