コンテンツにスキップ

2. Gaussianの使用方法

2.1. Gaussianの実行

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

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

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

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

インプットファイルにて計算指定を行う方法

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

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

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

コマンドオプションにて計算指定を行う方法

以下は192CPU,700GBを利用する場合の例(node_fを想定)

$ cd [利用したいディレクトリ]
$ module load gaussian
$ g16 -c="0-191" -m="700GB" [インプットファイル]

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

$ qstat -j 2920693 | grep binding
binding               1:    r6n7=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

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

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

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

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

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

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

$ qsub glycine.sh

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

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

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

#下記は必須ではありません。[-Nで指定した名称].o[JOB_ID]ファイルに出力されます
echo Running on host `hostname`
echo "AGE 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

#以下は必須です。
module load gaussian

g16 glycine.gjf

glycine.gjf

%rwf=glycinetest.rwf
%NoSave
%chk=glycinetest.chk
%mem=700GB
#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

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

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

#下記は必須ではありません。-Nで指定した名称.o<JOBID>ファイルに記載されます
echo Running on host `hostname`
echo "AGE 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}

module load gaussian

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 gaussian/16C2_cpu_NBOでご利用頂けます。
NBO7利用時は以下のキーワードをインプットファイルに入れる必要があります。

pop=nbo7

NBO7の詳細については、GaussianのサイトおよびNBO 7.0 Ptogram Manualをご参照ください。

2.1.4. 環境変数 GAUSS_SCRDIR

環境変数「GAUSS_SCRDIR」ではGaussian の作業ファイルが作成されるスクラッチディレクトリを指定します。
デフォルトでは ローカルスクラッチ領域 を使用しますが、作業ファイルの容量が大きい場合に空き容量が枯渇し「No space left on device」となってしまう可能性があります。
この場合、環境変数 GAUSS_SCRDIR を使用してスクラッチディレクトリをグループディスクに変更してください。

グループディスクの詳細についてはグループディスクを参照してください。

なお、GAUSS_SCRDIR内に作成されるファイルは、正常終了した場合自動で削除されます。

Info

TSUBAME3およびTSUBAME4.0初期の利用手引きに掲載されたスクリプト例では、以下の指定が行われていました。
 export GAUSS_SCRDIR=$TMPDIR
現在は、より容量の大きい領域(ローカルスクラッチ領域)がデフォルトで設定されるため、本指定は不要となりました。
空き容量が枯渇するリスクが高くなるため、本指定が残っている場合は削除してください。