システムの紹介 各種手続き 使い方と注意事項 アプリケーション一覧 講習会情報 FAQ

Gromacs

機能概要

Gromacs は、分子動力学を実行するための汎用性のある計算パッケージです。

利用方法

利用範囲

特になし

利用キュー

すべて

実行方法

Gromacs の実行コマンドは gmx または gmx_mpi です。
(CPU版については倍精度実行バイナリも利用できます。コマンド名は gmx_d および gmx_mpi_d です。)
コマンド実行前に、module コマンドで環境設定をしてください。

% module load gromacs/モジュール名

現在利用可能なバージョンとそれに対応したモジュール名は以下の通りです。

バージョンCPU版GPU版
IntelGCCIntelGCC
2024.12024.1/intel/cpu2024.1/gcc/cpu2024.1/intel/gpu2024.1/gcc/gpu
2023.32023.3/intel/cpu2023.3/gcc/gpu

バッチスクリプトでの実行例(シングルノードでの実行)

シングルノードでの実行の場合は、通常gmxコマンド(GPUカード内で複数のGPUプロセスを生成したい場合のみgmx_mpi)を利用します。 設定が比較的わかりやすいため、特に理由がなければ、まずはシングルノードでの実行例を参考にジョブを実行するのがおすすめです。

OpenMP + MPI での実行

以下にMD計算に対するバッチスクリプトのサンプルを示します。

#!/bin/csh
#PBS -q APC
#PBS -N title
#PBS -l select=1:ncpus=8:mpiprocs=2

source /etc/profile.d/modules.csh
module load gromacs/2024.1/intel/cpu   (上記のモジュール名を参考にしてください。)

setenv OMP_NUM_THREADS 4
cd $PBS_O_WORKDIR

gmx mdrun -nt 8 -ntmpi 2 -deffnm md

  • gmxコマンドの-nt オプションは、全スレッド数を指定します。
  • -ntmpi オプションは、MPIプロセス数を指定します。
  • この例では、全スレッド数は8、そしてMPIプロセスを2と指定しているため、1つのMPIプロセスあたり4つのOpenMPスレッドを生成することになります。
  • OpenMPスレッド数の指定は -ntomp オプションで可能です。したがって、-nt 8 -ntmpi 2-ntomp 4 -ntmpi 2 としても同じ意味になります。
  • -ntomp 4を指定する代わりに、環境変数 OMP_NUM_THREADS で OpenMPスレッド数を指定することも可能です。
  • #PBS -l での mpiprocs= は、MPIプロセス数となります。
  • #PBS -l での ncpus= は、全スレッド数となります。

OpenMP + MPI + GPU(シングルプロセス) での実行

次にGPUを使ったMD計算に対するバッチスクリプトのサンプルを示します。

#!/bin/csh
#PBS -q APG
#PBS -N title
#PBS -l select=1:ncpus=8:mpiprocs=4:ngpus=1

source /etc/profile.d/modules.csh
module load gromacs/2024.1/intel/gpu   (上記のモジュール名を参考にしてください。)

setenv OMP_NUM_THREADS 2

gmx mdrun -nt 8 -ntmpi 4 -deffnm md
  • GPUを使用する場合、#PBS -l では ngpus=1を追加してください。

OpenMP + MPI + GPU(複数プロセス)での実行

上記の例ではGPUで実行されるプロセスは1つです。 もし、1枚のGPUカード内で複数のプロセスを実行させたい場合には、gmx_mpi コマンドを使います。

#PBS -q APG
#PBS -l select=1:ncpus=6:mpiprocs=2:ngpus=1

mpirun --hostfile $PBS_NODEFILE -np 2 gmx_mpi mdrun -ntomp 3 -gpu_id 0 -deffnm md
  • gmx_mpiを使ったMPIプロセスでの並列化では-ntmpiは利用できません。
  • mpirunコマンド行の見方は、gmx_mpi から最後までを1つのMPIプロセスとみなし、そのMPIプロセス数を -npオプションで指定する、という意味になります。
  • 上記は -np 2 の指定により2つのMPIプロセスが生成されます。そして、各MPIプロセスが3つのOpenMPスレッドおよびGPUプロセスを生成します。したがって、OpenMPの全スレッド数は 2 MPI * 3 OpenMPスレッド = 6 となります。
  • MPIプロセスに対して1つのGPUプロセスが生成されますので、この場合は、1枚のGPUカード内で2つのGPUプロセスが生成されることになります。

マニュアル

Gromacs Documentation(公式ホームページ)

関連サイト

Gromacs(公式ホームページ)