FOCUSスパコンでのGaussian 09 利用講習会
計算科学振興財団
2015年４月 ２３日 (木) 13:00～15:00

プログラム
0. FOCUSスパコンでのGaussian 09 の環境設定と実行
1. ノード内並列の効率的実行方法
1-1 FOCUSスパコンでのGaussian 09 の環境設定と実行
1-2 ジョブ投入サンプルスクリプト
1-3 並列数（%Nprocshared=）とメモリ指定（%mem=）
1-4 構造最適化からの振動数計算の手続き
2. Linda を用いたノード間並列の効率的実行方法
2-1 Linda 並列実行サンプルスクリプトの解説
応用編にて解説（基礎編では略します）
2-2 Model・property による Linda 並列の有効性
2-3 構造最適化からの振動数計算の手続き
2-4 %NProcSharedを入力ファイルに直接指定するLinda 並列実行サンプル
スクリプトの解説
3. SCF が収束しない場合の対処法
4. 構造最適化が収束しない場合の対処法
5. 質疑応答0. FOCUSスパコンでのGaussian 09 の環境設定と実行

0.1 FOCUSスパコンシステム構成/work/work

home2/work

home1/work/work

0.2 環境変数GAUSS_SCRDIRの指定/work の使用を推奨• 環境変数「GAUSS_SCRDIR」ではGaussian の作業ファイル（Gau-プロ
セスID.拡張子）が作成されるスクラッチディレクトリを指定します。
ジョブが終われば自動的に消されます。
• 環境変数「GAUSS_SCRDIR」の指定を行わない場合は、Gaussian 環
境設定ファイルにて指定されているディレクトリ（ホームディレクトリ内tmp）がスクラッチディレクトリとして設定されます。
• /work は計算ノードのローカルディスクであり、ホームディレクトリ/home1に比べて高速に書込みが可能です。
• 一方、作業中のカレントディレクトリとしてホームディレクトリ/home1上のディレクトリを使用すると書込みが遅く、同時に多数のプロセスで/home1に書き込むと、この書き込み速度をそれらのプロセスで分け合うことになり、性能が劣化する可能性があります。
このことから/work の使用を推奨します。
• /workの容量については別途、表にまとめます。

0.3 ファイルシステムの容量と性能
システム

キュー名

書き込み速度

容量AB
Ca024h, a096h
b024h, b096h
c024h, c096h

75MB/s前後

400GB未満

Dd006h, d012h

200MB/s前後

2TB未満

Dd024h, d072h

300MB/s前後

6TB未満

Ee024h, e072h

200MB/s前後

2TB未満

システム

ファイル 書き込み速度
システム

容量

A, B, C

/home1/home275MB/s前後
1GB/s/ノード前後

400GB未満

D, E/home1/home2

100MB/s前後
1GB/s/ノード前後

200GB未満
契約容量未満0.4 ジョブ管理コマンド (1/2)• 実行可能なキューの確認 sinfo -s[uleg0001@f002 ~]$ sinfo -s
PARTITIONAVAIL TIMELIMIT
a024h
up 1-00:00:00
a096h
up 4-00:00:00
b024h
up 1-00:00:00
b096h
up 4-00:00:00
c024h
up 1-00:00:00
c096h
up 4-00:00:00
d006h
up
6:00:00
d012h
up
12:00:00
d024h
up 1-00:00:00
d072h
up 3-00:00:00
e024h
up 1-00:00:00
e072h
up 3-00:00:00
debug6m*up

6:00

NODES(Activ/Idole/Other/Ttotal) NODELIST
44/66/6/116 a[001-116]
44/50/6/100 a[001-100]
0/2/0/2 b[001-002]
0/1/0/1 b001
3/11/0/14 c[005-018]
3/2/0/5 c[005-009]
23/78/11/112 d[001-080],e[001-032]
23/78/11/112 d[001-080],e[001-032]
23/54/3/80 d[001-080]
19/19/2/40 d[001-040]
0/24/0/24 e[009-032]
0/8/0/8 e[009-016]
0/4/0/4g[001-004]

上記以外のキューは期間占有、短期期間占有（日単位予約）によるキューで自分が所属する課題以外のものは利用できません。

0.4 ジョブ管理コマンド (2/2)• ジョブ投入コマンド sbatch[uleg0001@f002 ~]$ sbatch スクリプトファイル• 実行中のジョブの確認 squeue[uleg0001@ff02 ~]$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
xxxx d024h testrun uleg0001 R 4:58 60 d[007-066]
yyyy debug6m testrun uleg0001 CG 0:39 1 g001

• ジョブのキャンセル scancel[uleg0001@ff02 ~]$ $ scancel ジョブID ジョブID ジョブID[uleg0001@ff02 ~]$ scancel xxxx yyyy

0.5 課金の確認(1/3)• ユーザー課金確認 uacct[uleg0001@ff02 share]$ uacct
Charge information of uleg0001 in 201504 :Computational: 8610.00 (Rack rate: 8610)
Items
A:
9 nodehours, 1043.00 yen
B:
0 nodehours, 0 yenC:
90 nodehours, 7567.00 yenD:
0 nodehours, 0 yenE:
0 nodehours, 0 yen (0 yen)=====================================================
Total charge : 11695.00

ユーザー単位の情報引数(yyyymm)追加で過去の情報閲覧可能

0.5 課金の確認(2/3)• ユーザー課金確認 uacct_apl[uleg0001@ff02 share]$ uacct_apl
Charge information of uleg0001 in 201504 :Computational: 0 (Rack rate: 0)
Items
Gaussian 09:
48 nodehours, 5766 yen
MIZUHO/BioStation:
0 nodehours, 0 yen
Parallel CONFLEX:
0 nodehours, 0 yen=====================================================
Total charge : 5766.00

ユーザー単位の情報引数(yyyymm)追加で過去の情報閲覧可能

0.5 課金の確認(3/3)

グループ当月課金確認 thismonth[uleg0001@ff02 ~]$ thismonth
Charge information of leg in this month.
systemnjob
avg_et avg_nodes avg_procs
A
7
2.2
6.9
75.4
B0
0.0
0.0
0.0
C0
0.0
0.0
0.0
D0
0.0
0.0
0.0
E
1
0.0
10.0
200.0

et_nodes
622.2
0.0
0.0
0.0
0.0

charge46667.0
0.0
0.0
0.0
30.0

et_max et_np_max
15.6
7466.8
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.2

np_max
480
000200TOTAL: 46697 yen

グループ単位の情報引数(yyyymm)追加で過去の情報閲覧可能

0.6 Gaussian09利用料金@FOCUS
1）ソフトウェア利用料金（ノード時間あたり120円）= 全CPU時間/ノード内コア数＊120円（ノード時間単価(税抜))=120円＊全CPU時間/12 (A,Cシステム)
ノード内並列しないと損！
=120円＊全CPU時間/16 (Bシステム)=120円＊全CPU時間/20 (D,Eシステム)2) 計算資源利用料金
Aシステム (〜100円（並列割引制度あり）)
Bシステム (100円)
Cシステム ( 80円)
Dシステム (〜300円（並列割引制度あり）)
Eシステム (600円)

1. ノード内並列の効率的実行方法
A,C,DシステムでのGaussian09利用料の概算計算例
Gaussian09 出力ファイル[uleg0001@ff02 g09test]$ tail input0.log.01\State=1-A\HF=-301.5468797\RMSD=5.008e-09\Dipole=-0.0002927,0.01423
84,-0.0316404\Quadrupole=0.464593,1.7311805,-2.1957735,-5.870745,-1.78
33127,2.6608152\PG=C01 [X(H4O4)]\\@
Any fool can criticize, condemn, and complain -- and most do.
-- Dale Carnegie
Job cpu time:
0 days 7 hours 25 minutes 7.9 seconds.
File lengths (MBytes): RWF=
19 Int=0 D2E=
0 Chk=
Normal termination of Gaussian 09 at Fri Feb 7 15:46:00 2014.

2 Scr=

1

Job cpu _me: 0 days 7 hours 25 minutes 7.9 seconds.の値をコア数で割ると、A, C: (7+25/60+7.9/3600)/12=0.5835 [ノード時間]
D : (7+25/60+7.9/3600)/20=0.3709 [ノード時間]
Aシステム (100/10+120)*0.5835=128 [円]Cシステム(80/10+120)*0.5835=116[円]Dシステム (300/15+120)*0.3709=51[円]

ノード内並列を実行するならばDシステムが低コストです。

1-1. FOCUSスパコンでのGaussian 09 の環境設定と実行
フロントエンドサーバにログインし、SLURMを利用してバッチジョブとしてGaussian 09の計算を実行する方法を紹介します。
利用したいGaussian 09の環境設定の選択
SLURMのバッチスクリプト内に記載してシェルの環境設定とは異なるGaussian 09の実行モジュールを使い分けることもできます。
リビジョンやコンパイラの異なる G09を利用できます

SLURMバッチスクリプト記載例#export g09root=/home1/share/g09# デフォルトのGaussian（現在はg09d01s のリンク）#export g09root=/home1/share/g09c01# Gaussian 09 Rev. C01 PGIコンパイラビルド バイナリ配布版#export g09root=/home1/share/g09d01# Gaussian 09 Rev. D01 PGIコンパイラビルド バイナリ配布版#export g09root=/home1/share/g09d01s# G09 Rev. D01 PGIコンパイラソースコードビルド版
export g09root=/home1/share/g09d01s_intel # G09 Rev. D01 intel コンパイラソースコードビルド版

ここでは intel版を読み込んでいます。
(不必要な設定はコメントアウトしています)1−2. ジョブ投入サンプルスクリプト/home1/share/g09 にジョブ投入サンプルスクリプト（逐次計算、ノード内並列、ノード間並列(Linda)）を置いております。これらを参考にジョブ投入スクリプトを作成してください。
以下はノード内並列用サンプルスクリプト g09sample.sh です。
[uleg0001@ff01~]$ cat g09sample.sh#!/bin/bash#SBATCH -p d024h#SBATCH -n 20#SBATCH -J Gaussian_SHARED#SBATCH -e Gaussian_SHARED.e%J# キュー名# 最大プロセス数# ジョブ名# 標準出力、%J はジョブID に置換# 標準エラー出力、%J はジョブID に置換#SBATCH -o Gaussian_SHARED.o%J#g09d01s Intel Compiler versionを利用するため# Intelコンパイラの環境変数を設定します。
module load PrgEnv-intel# Intel コンパイラ環境変数設定
export g09root=/home1/share/g09d01s_intel# g09root ディレクトリの指定#g09d01s_intel版で計算に不具合が出た場合はg09d01sに置き換えてください。
#module load PrgEnv-pgi-1210#export g09root=/home1/share/g09d01s. $g09root/g09/bsd/g09.profile# Gaissian 環境変数設定# 以下では$MOL.comの中でメモリとプロセス数を適切に指定している事を仮定
MOL=test178# 入力ファイル名の指定
export GAUSS_SCRDIR=/work/# 以下、スクラッチディレクトリを指定
time g09 <$MOL.com > $MOL.log# Gaussian を実行と時間計測

sbatch コマンドを使ってジョブ投入スクリプト（例：g09sample.sh）を実行します。
$ sbatch g09sample.sh1-3 並列数（%Nprocshared=）とメモリ指定（%mem=）•ノード単位課金のため、１つのGaussian 09ジョブではノード内コア数全てを利用した方が得です。
ノード内コア数を%NprocSharedに指定した並列計算を実行してください。
•全てのコアを利用するよう適切なメモリサイズを指定しなければなりません。１コアの計算に必要なメモリ量をノード内コア数倍した値を%memに指定してください。

1-3 並列数（%Nprocshared=）とメモリ指定（%mem=） （２）Elapsed time [s]• %NprocShared=12と%mem=72MWと指定してPrsmSu: requested number of processors reduced to: 9 ShMem 1 Lindaと出力ファイルに記録されているなら、12/9*72MW=96MWを指定します。
• %memで指定するメモリ量は多過ぎても少なくても性能が劣化することがあります。以下の図はCCSD(T)一点計算で%NprocShare=12を指定した時、様々なメモリ割り当ての場合の性能例です。
2200%mem=144MWと288MWの時に最も高速となっています。
講習会にて説明

2000
1800
1600
100

200

300

400%mem [MW]

図１ 経過時間のメモリ指定量依存性