2. Gaussianの使用方法

2.1. Gaussianの実行

2.1.1. インタラクティブ実行

ログインノードは計算ノードとは別構成となっており、ログインノード上でアプリケーションを実行することは想定されておりません。ログインノードに負荷がかからないように「インタラクティブジョブの投入」の方法でインタラクティブ利用(計算ノードに接続して直接コマンド実行)を行ってください。以下のコマンドで計算ノードに接続します。

$ qrsh -g [TSUBAME3グループ] -l [資源タイプ]=[個数] -l h_rt=[経過時間]

以下はあくまでもコマンドサンプルです。実際の計算にはインプットファイルや初期パラメータを記載したファイルが必要となります。Gaussianではインプットファイルで並列数を制御するため、コマンドとしては逐次処理も並列処理も同一でしたが、B01からコマンドオプションや環境変数に対応したため、インプットファイル中に指定しなくても様々な計算設定が可能となりました。 詳細はメーカーURLを確認してください。

インプットファイルにて計算指定を行う従来どおりの方法

$ cd [利用したいディレクトリ]
$ module load gaussian16/B01
$ g16 [インプットファイル]

モジュールファイルにて環境変数GAUSS_CDEF及びGAUSS_GDEFを自動設定する方法

$ cd [利用したいディレクトリ]
$ module load gaussian16/B01_gpu
$ echo $GAUSS_CDEF
14-27
$ echo $GAUSS_GDEF
0-1=14-15
$ g16 [インプットファイル]

コマンドオプションにて計算指定を行う方法(リビジョンB01から対応)
以下は28CPU,20GB,GPUをGPUを4枚利用する場合の例(f_nodeを想定)

$ cd [利用したいディレクトリ]
$ module load gaussian16/B01
$ g16 -c="0-27" -m="20GB" -g="0-3=0-3" [インプットファイル]

以下は14CPU,20GB,GPUを2枚利用する場合の例(CPU1が割り当てられたh_nodeを想定)

$ cd [利用したいディレクトリ]
$ module load gaussian16/B01
$ g16 -c="14-27" -m="20GB" -g="0,1=14,15" [インプットファイル]

CPUの割り当てはqstat -j job_IDコマンドで確認できます。
以下の例ではjob_IDが2920693の場合の例で、CPU1が割り当てられています。 (f_nodeであれば必ず0,1が割り当てられるため、確認は不要です)

$ qstat -j 2920693 | grep binding
binding               1:    r6i6n7=1,0:1,1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13

h_nodeやq_nodeの場合はCPUの割当をジョブスケジューラから割り当てられたCPUコアと正しく一致させないとエラーが発生します。
h_nodeにてCPU1が割り当てられているにもかかわらずCPU0のコアを指定した例

$ g16 -c="0-13" -m="20GB" -g="0,1=0,1"  [インプットファイル]
Set GAUSS_CDEF to "0-13".
 Set GAUSS_MDEF to "20GB".
 Set GAUSS_GDEF to "0,1=0,1".
Error: MP_BLIST has an invalid value

q_nodeにてCPU1が割り当てられているにもかかわらずCPU0のコアを指定した例

$ g16 -c="7-13" -m="20GB" -g="0=7"  [インプットファイル]
 Set GAUSS_CDEF to "7-13".
 Set GAUSS_MDEF to "20GB".
 Set GAUSS_GDEF to "0=7".
Error: MP_BLIST has an invalid value

2.1.2. バッチジョブスケジューラーUGEによる実行

Glycineの構造最適化および振動解析(IR+ラマン強度)を計算する場合のサンプルスクリプトです。
下記のglycine.sh、glycine.gjfを同一ディレクトリ上に配置し、下記コマンドを実行することで計算ができます。 解析結果の確認についてはGaussViewにてご説明します。

$ qsub glycine.sh

f_nodeを使用する場合の例を示します。
計算後にglycinetest.log、glycinetest.chkが生成されます。
計算指定をコマンドオプションや環境変数で行う場合は上記のインタラクティブ実行メーカーURLを確認してください。

glycine.sh(f_nodeを使用する場合)

#!/bin/bash
#$ -cwd
#$ -N Gaussian_sample_job
#$ -l f_node=1
#$ -l h_rt=0:10:0
#$ -V

#下記は必須ではありません。[-Nで指定した名称].o[JOB_ID]ファイルに出力されます
echo Running on host `hostname`
echo "UGE job id: ${JOB_ID}"
echo Time is `date`
echo Directory is `pwd`
echo This job runs on the following processors:
echo This job has allocated ${NSLOTS} processors

#以下は必須です。
. /etc/profile.d/modules.sh
module load gaussian16/B01

g16 glycine.gjf

glycine.gjf

%rwf=glycinetest.rwf
%NoSave
%chk=glycinetest.chk
%cpu=0-27
%mem=120GB
#P opt=(calcfc,tight,rfo) freq=(raman)

glycine Test Job

0 2
 N                0   -2.15739574   -1.69517043   -0.01896033 H
 H                0   -1.15783574   -1.72483643   -0.01896033 H
 C                0   -2.84434974   -0.41935843   -0.01896033 H
 C                0   -1.83982674    0.72406557   -0.01896033 H
 H                0   -3.46918274   -0.34255543   -0.90878333 H
 H                0   -3.46918274   -0.34255543    0.87086267 H
 O                0   -0.63259574    0.49377357   -0.01896033 H
 O                0   -2.22368674    1.89158057   -0.01896033 H
 H                0   -2.68286796   -2.54598119   -0.01896033 H

 1 2 1.0 3 1.0 9 1.0
 2
 3 4 1.0 5 1.0 6 1.0
 4 7 1.5 8 1.5
 5
 6
 7
 8
 9

f_node以外を使用する場合は、ジョブ実行時に動的に割り当てられるCPUコアをインプットファイルのLink0コマンド行で指定する必要があります。 下記の例では、Link0コマンド未記入のglycine.gjfファイルにLink0コマンドを追記したglycine_[JOB_ID].gjfが作成され、計算が実行されます。 計算後にglycine_[JOB_ID].log、glycinetest_[JOB_ID].chkが生成されます。
資源タイプによってメモリ容量やCPU数が異なりますので、%memや%cpuの記述にご注意ください。

glycine.sh(h_nodeの場合)
#!/bin/bash
#$ -cwd
#$ -N Gaussian_sample_job
#$ -l h_node=1
#$ -l h_rt=0:10:0
#$ -V

#下記は必須ではありません。-Nで指定した名称.o<JOBID>ファイルに記載されます
echo Running on host `hostname`
echo "UGE job id: ${JOB_ID}"
echo Time is `date`
echo Directory is `pwd`
echo This job runs on the following processors:
echo This job has allocated ${NSLOTS} processors

#以下は必須です。
G16JOB=glycine
INPUT_ORG=${G16JOB}.gjf                 #Link0コマンド未記入の入力ファイル
INPUT=${G16JOB}_${JOB_ID}.gjf           #Link0コマンドを追記した入力ファイル
OUTPUT=${G16JOB}.log

#Link0コマンドを追記したインプットファイルを作成
echo "%rwf=${G16JOB}_${JOB_ID}.rwf" > ${INPUT}
echo "%NoSave" >> ${INPUT}
echo "%chk=${G16JOB}_${JOB_ID}.chk" >> ${INPUT}
echo "%mem=100GB" >> ${INPUT}
echo "%cpu=`numactl -s | awk '/physcpubind:/ { print $2 "-" $15 }'`" >> ${INPUT}
cat ${INPUT_ORG} >> ${INPUT}

. /etc/profile.d/modules.sh
module load gaussian16/B01

g16 ${INPUT}

glycine.gjf(Link0コマンドは記入しない)

#P opt=(calcfc,tight,rfo) freq=(raman)

glycine Test Job

0 2
 N                0   -2.15739574   -1.69517043   -0.01896033 H
 H                0   -1.15783574   -1.72483643   -0.01896033 H
 C                0   -2.84434974   -0.41935843   -0.01896033 H
 C                0   -1.83982674    0.72406557   -0.01896033 H
 H                0   -3.46918274   -0.34255543   -0.90878333 H
 H                0   -3.46918274   -0.34255543    0.87086267 H
 O                0   -0.63259574    0.49377357   -0.01896033 H
 O                0   -2.22368674    1.89158057   -0.01896033 H
 H                0   -2.68286796   -2.54598119   -0.01896033 H

 1 2 1.0 3 1.0 9 1.0
 2
 3 4 1.0 5 1.0 6 1.0
 4 7 1.5 8 1.5
 5
 6
 7
 8
 9

2.1.3. gaussian NBO7の実行

Gaussianと連携して利用可能なNBOについて最新バージョンであるNBO7を学内からサイトライセンスで提供いただき、ライセンスの問題がなく利益も大きいためTSUBAMEユーザ全員が使えるようにインストールを行いました。
module load gaussian16/C01_nbo7でご利用頂けます。