Contents

Previous Topic

1. はじめに

Next Topic

3. Gaussianの入力データ

2. TSUBAME での利用方法

2.1 Gaussian の実行

(1) TSUBAMEにログイン

次のコマンドを入力し,TSUBAMEにログインします.

$ ssh login-t2.g.gsic.titech.ac.jp -l USER-ID

Note

-l USER-ID の -l は数字の1ではなくアルファベットLの小文字です.

(2) バージョンの切り替え

Gaussianを使用する際,特にバージョンの指定がない場合は, Gaussian 09 E.01が起動するようになっています.

Note

Gaussian 09 D.01 より前のバージョンは,2014年8月のTSUBAMEのOSアップグレード前に導入されたものとなります.TSUBAME の 2014年 8 月以降の Thin 計算ノード,2015年 4 月以降の Medium, Fat 計算ノード環境では,正常動作しない可能性がありますのでご注意ください.

○Gaussian 16 A.03を使用する場合

次のように,環境変数の設定をする必要があります.

<bash 系の場合> $ source /usr/apps.sp3/isv/gaussian/set_gaussian-16.A03.sh
<csh 系の場合>  % source /usr/apps.sp3/isv/gaussian/set_gaussian-16.A03.csh

○Gaussian 09 B.01~ 09 D.01を使用する場合

次のように,環境変数の設定をする必要があります.

・Gaussian 09 D.01
<bash 系の場合>
$ export g09root="/usr/apps.sp3/isv/gaussian/09.D01/p12.10/"
$ source ${g09root}/g09/bsd/g09.profile
$ export PATH=${g09root}/g09:${PATH}
<csh 系の場合>
% setenv g09root "/usr/apps.sp3/isv/gaussian/09.D01/p12.10/"
% source ${g09root}/g09/bsd/g09.login
% setenv PATH ${g09root}/g09:${PATH}

・Gaussian 09 C.01
<bash 系の場合>
$ export g09root="/usr/apps/isv/gaussian/gaussian09.C01"
$ source ${g09root}/g09/bsd/g09.profile
<csh 系の場合>
% setenv g09root "/usr/apps/isv/gaussian/gaussian09.C01"
% source ${g09root}/g09/bsd/g09.login

・Gaussian 09 B.01
<bash 系の場合>
$ export g09root="/usr/apps/isv/gaussian/gaussian09.B01"
$ source ${g09root}/g09/bsd/g09.profile
<csh 系の場合>
% setenv g09root "/usr/apps/isv/gaussian/gaussian09.B01"
% source ${g09root}/g09/bsd/g09.login

(3) インタラクティブ実行

Gaussian 09 の場合
$ g09 test000.com

Gaussian 16 の場合
$ g16 test000.com

2.2 PBSによるバッチ投入 (Gaussian 09 の場合)

大きなサイズのスクラッチが出力される場合があります. シェルスクリプトで「export GAUSS_SCRDIR=$TMPDIR」の指定を行い, 共有スクラッチ領域を使用することをおすすめします.

(1).シングルジョブ

(a).投入シェルスクリプト準備(スクリプト名: test_g09.sh)

#!/bin/sh
cd ${PBS_O_WORKDIR}

export GAUSS_SCRDIR=$TMPDIR

g09 test000.com

(b).実行権限付与

$ chmod +x test_g09.sh

(c).ジョブ投入

$ t2sub <グループ,キュー等指定> test_g09.sh

(2).SMPジョブ

(a).入力ファイル(test000.com)

入力ファイルの先頭に(マルチステップジョブではステップ毎に), SMP並列オプション指定をしてください.

%NprocShared=<CPU数>
 :

(b).投入シェルスクリプト準備(スクリプト名: test_g09.sh)

#!/bin/sh
cd ${PBS_O_WORKDIR}

export GAUSS_SCRDIR=$TMPDIR

unset NCPUS
unset OMP_NUM_THREADS

g09 test000.com

(c).実行権限付与

$ chmod +x test_g09.sh

(d).ジョブ投入

$ t2sub -l select=1:ncpus=<CPUS数> <グループ,キュー等指定> test_g09.sh

(3).Lindaジョブ

(a).入力ファイル(test000.com)

入力ファイルの先頭に(マルチステップジョブではステップ毎に), LINDA/SMP並列オプション指定をしてください.

%NprocLinda=<ノード数)
%NprocShared=<ノードあたりのCPU数>
 :

(b).投入シェルスクリプト準備(スクリプト名: test_g09.sh)

#!/bin/sh
cd ${PBS_O_WORKDIR}

export GAUSS_SCRDIR=$TMPDIR

export g09root=/usr/apps.sp3/isv/gaussian_linda/09.E01/p15.10
source $g09root/g09/bsd/g09.profile
export PATH=${g09root}/g09:${PATH}
export GAUSS_LFLAGS="-opt "Tsnet.Node.lindarsharg:ssh" -nodelist '`cat $PBS_NODEFILE | tr "\n" " "`' -mp 2"

g09 test000.com

(c).実行権限付与

$ chmod +x test_g09.sh

(d).ジョブ投入

$ t2sub -l select=<ノード数>:ncpus=<各ノードのCPU数> -l place=scatter <グループ,キュー等指定> test_g09.sh

2.3 PBSによるバッチ投入 (Gaussian 16 の場合)

Gaussian 16 からリソース指定に関して次のアップデートがありました.

  • コマンドラインオプションもしくは環境変数によるリソース指定ができるようになりました.
  • Hartree-Fock、DFT 計算について GPU 計算できるようになりました. ※注意点があります.下記 Note をご参照ください.

Note

Gaussian 16 は GPU の K40, K80 向けに書かれており,TSUBAME2 の K20X だと GPU を指定して計算するとかえって計算時間がかかる場合があります.ご注意ください.

(1).リソース指定方法

各リソースの指定方法をまとめたのが次表です.

項目 Input line(入力ファイル) コマンドオプション 環境変数 備考
メモリ %mem 無指定時は 800MB(=100MW)
CPU %cpu, %nproc -c=”...” GAUSS_CDEF
GPU %gpucpu -g=”...” GAUSS_GDEF
Linda %lindaworkers -w=”...” GAUSS_WDEF

CPU

どの CPU コアを使用するかを指定する方法

g16 コマンドの -c オプション、または入力ファイル中で %cpu で指定します.-c=0-11 とすると CPU コア 0 ~ 11 番の計 12 コアを使用します.コア指定することで異なるコアへ処理が移動しなくなるため,その分のオーバーヘッドを軽減できます.

CPU コア数を指定する方法

入力ファイル中に %nproc で指定します.%nproc=8 とした場合は 8 コアを使用します.V キューはノード共有で他のジョブが実行されている場合もあるため,%nproc による指定を行うようにしてください.

GPU

GPU の個数だけを指定することは出来ません.どの GPU デバイスを使用するか番号で指定しつつ,各 GPU デバイスをどの CPU コアでコントロールするかを指定する必要があります.

TSUBAME の計算ノードは 3 枚の GPU が搭載されておりデバイス番号は 0, 1, 2 です(※ L256, L512, U, V キューは搭載されていません). 例えば次の指定をした場合は GPU デバイス 0, 2 を CPU コア 0, 4 でコントロールします.

-g=0,2=0,4 -c=0-11

なお,-c で CPU コアの指定をしないとエラー終了します.この例の場合は、GPU のコントロールに使用しない 10 コア(1-3, 5-11)を計算資源として使用します.

Linda

複数ノードで計算する際,どのホストで実行するかを指定する必要があります.-w=”host001,host002” のように指定します. PBS でバッチジョブとして投入する場合は,次のように g16 コマンドのオプションを渡すことで,割り当てられたノード全てを使った Linda ジョブとなります.

-w="`cat $PBS_NODEFILE | tr "\n" "," | sed s/,$//`"

(2).ジョブ投入の流れ

Gaussian の入力ファイルを準備してから,TSUBAME2 でジョブ実行するまでの流れは次の通りです.

  1. Gaussian の入力ファイルを準備

  2. ジョブスクリプトを準備

  3. ジョブスクリプトに実行権を付与

    $ chmod +x <ジョブスクリプト>
    
  4. t2sub コマンドによりバッチジョブとして実行

以下,ケースごとに例を示します.

シングルジョブ(CPU 1 コア)の場合

ジョブスクリプト例

#!/bin/sh
cd ${PBS_O_WORKDIR}
source /usr/apps.sp3/isv/gaussian/set_gaussian-16.A03.sh
export GAUSS_SCRDIR=$TMPDIR

g16 test0000.com

t2sub コマンド例

$ t2sub -q S -W group_list=<グループ名> <ジョブスクリプト>

ノード内並列ジョブ(CPU 12 コア)の場合

ジョブスクリプト例

#!/bin/sh
cd ${PBS_O_WORKDIR}
source /usr/apps.sp3/isv/gaussian/set_gaussian-16.A03.sh
export GAUSS_SCRDIR=$TMPDIR

g16 -c=0-11 test0000.com

t2sub コマンド例

$ t2sub -q S -W group_list=<グループ名> -l select=1:ncpus=12 <ジョブスクリプト>

GPUジョブ(GPU 2 個+CPU 2 コア)の場合

ジョブスクリプト例

#!/bin/sh
cd ${PBS_O_WORKDIR}
source /usr/apps.sp3/isv/gaussian/set_gaussian-16.A03.sh
export GAUSS_SCRDIR=$TMPDIR

g16 -g=0,2=0,2 -c=0-3 test0000.com

t2sub コマンド例

$ t2sub -q G -W group_list=<グループ名> -l select=1:ncpus=4:gpus=2 <ジョブスクリプト>

TCP Linda によるノード間並列ジョブ(4ノード、ノードごとにCPU 12 コア)の場合

ジョブスクリプト例

#!/bin/sh
cd ${PBS_O_WORKDIR}
source /usr/apps.sp3/isv/gaussian/set_gaussian-16.A03.sh
export GAUSS_SCRDIR=$TMPDIR

g16 -w="`cat $PBS_NODEFILE | tr "\n" "," | sed s/,$//`" -c=0-11 test0000.com

t2sub コマンド例

$ t2sub -q S -W group_list=<グループ名> -l select=4:ncpus=12 -l place=scatter <ジョブスクリプト>