コンパイルしたロードモジュール(a.out)を計算機で実行するには、ジョブ要求用のシェルスクリプトファイル(ジョブスクリプトファイル)を作成し、スケジューラに対して投入します。

 

以下にジョブスクリプトの例を示します。

 

ジョブスクリプトファイルは大きく2段構成となっており、

 

・利用する計算機のリソースや環境の指定(#PBSから始まる個所)
・計算機に実行させる処理の記述(シェルスクリプト)

 

に分かれます。

 

「利用する計算機のリソースや環境の指定」の書き方

#PBS (オプション)

投入時オプションという形で、ジョブスクリプトのコメント部に記述します。
最初のシェルコマンドが現れる前のコメント部分で、「#PBS」という文字列に続けて指定してください。

 

よく利用するオプションのご紹介

※ 指定が必須のオプションについては★印を付けています。
※ MPIで計算を行う場合に必須のオプションについては☆印をつけています。
必ず指定をお願いいたします。

 

投入するキューの指定(-qオプション)★

#PBS -q [ジョブクラス名]

[ジョブクラス名]に、利用する計算機のジョブクラスを指定してください。
[ジョブクラス名]は下記の通りです。

 

SX-ACE:ACE
大規模可視化対応PCクラスタ:VCC, GVC

 

詳細はジョブクラス表をご覧ください。

 

使用する資源制限値(-lオプション)★

#PBS -l memsz_job=[1ノード当たりのメモリ量],elapstim_req=[経過時間]
使用する計算機のリソース量を指定してください。
複数ノード使用する場合でも、1ノード分のリソース量を指定してください。

cpunum_job:1ノード当たりのCPU数を指定します。
(1ノード2CPUで実行する場合の例:cpunum_job=2)

memsz_job:1ノード当たりのメモリ量を指定します。
(1ノード当たり20GBのメモリを利用する場合の例:memsz_job=20GB)

elapstim_req:ジョブが実行される際の経過時間を指定します。
(経過時間2時間で利用する場合の例:elapstim_req=2:00:00)

cputim_job:CPUの使用時間を指定します。
(CPU使用時間10分で利用する場合の例:cputim_job=0:10:00)

 

計算中に指定された値を超えた場合、自動的にジョブは終了しますので、ご注意ください。
各計算機毎で、割り当て可能なリソースの上限が異なりますので、詳細はジョブクラス表をご覧ください。

 

ノード数の指定(-bオプション)☆

#PBS -b [ノード数]

マルチノードで計算を実行する場合は、ノード数を指定してください。

 

ジョブの種類(-Tオプション)☆

#PBS -T [種類]

実行されるジョブの種類を設定します。[種類]には以下の指定が可能です。

 

mpisx SXでMPI/HPFを利用する場合に指定してください。
intmpi PCクラスタでMPIを利用する場合に指定してください。

 

環境変数,オプションの設定(-vオプション)

#PBS -v [環境変数]="[設定内容]"

ジョブを実行する全てのノードに対して、指定した環境変数を設定します。
環境変数はsetenvも設定できますが、マルチノードでジョブを実行した場合は、
スレーブノードにsetenvで指定した環境変数が設定されません。
マルチノードでジョブを実行する場合は、-vオプションをご利用ください。
 

実行開始/終了のメール通知の指定(-m,-Mオプション)

#PBS -m [メールオプション]
#PBS -M [送付先メールアドレス]

バッチジョブの実行開始/終了時にメールでの通知を行います。通知してほしいタイミングに応じて、[メールオプション]を設定してください。

 

b バッチリクエストの実行を開始した時にメールを発信します。
e バッチリクエストの実行が終了(異常終了を含む)した時にメールを発信します。
a バッチリクエストの実行が異常終了した時にメールを発信します。
n メールを発信しません。
eb バッチリクエストの実行を開始した時と終了した時にメールを発信します。

 

出力結果ファイルの指定

#PBS -e [標準エラー出力名]
#PBS -o [標準出力名]

バッチジョブの出力結果が格納されるファイルを指定します。
指定されない場合、「ジョブ名.eリクエストID」「ジョブ名.oリクエストID」というファイル名で標準エラー出力ファイル、標準出力ファイルがそれぞれ出力されます。後からの解析に便利ですので、特別な事情が無ければ、指定しないことをお勧めします。
<

rerun(リクエストの再登録)の設定(-rオプション)

#PBS -r n

実行中に計算ノードがストールした場合は、スケジューラが自動でリクエストを登録し直します。(これをrerunと呼びます)
もしrerunしてほしくない場合は、ジョブスクリプトに上記の設定を記載してください。
 

その他のオプションについて

上記に書かれていない詳細な内容やオプションについては、以下のマニュアルの「第4章1.16.qsub」の項目をご参照ください。(利用者番号での認証が必要です)
NQSII利用の手引き(要認証)

 
NQS スクリプトで指定するジョブクラス(キュー)の名前や各クラスの制限についてはジョブクラス表を参照して下さい。
ジョブクラス表

 

「計算機に実行させる処理の記述」の書き方

基本的に、シェルスクリプトでファイルやディレクトリの実行・操作を記述します。

cd $PBS_O_WORKDIR
# ↑ ジョブ投入時のディレクトリに移動
./a.out > result.txt
# ↑ a.outを実行し、結果をresult.txtに出力する。

・環境変数として「$PBS_O_WORKDIR」が用意されております。
・「$PBS_O_WORKDIR」にはジョブ投入時のディレクトリが自動で設定されます。
・実行時の標準出力/標準エラー出力には、100MBの容量制限があります。
 
これ以上出力する場合はリダイレクション(>)を使ってください。

./a.out > output.txt

【TIPS】その他のリダイレクション例

下記は全てcshを使用している場合のスクリプト例です。

    実行ファイルを「a.out」
    標準出力のリダイレクト先を「out.txt」
    標準エラー出力のリダイレクト先を「err.txt」
    標準出力/標準エラー出力の両方のリダイレクト先を「out_and_err.txt」としています。

 
標準出力のみをファイルにリダイレクト

./a.out > out.txt

 
標準出力と標準エラー出力を同じファイルにリダイレクト

./a.out >& out_and_err.txt

 
標準出力と標準エラー出力を別々のファイルにリダイレクト

(./a.out > out.txt) >& err.txt

 

ジョブスクリプトを書くときの注意点

スクリプトの最終行には、必ず改行を入れてください。未入力の場合、最終行のコマンドが実行されません。