コンパイルしたロードモジュール(a.out)を計算機で実行するには、ジョブ要求用のシェルスクリプトファイル(ジョブスクリプトファイル)を作成し、スケジューラに対して投入します。
HPCI利用の場合は、ジョブスクリプト中にHPCI課題IDを記載する必要があります。記載方法の詳細はこちらをご参照ください。
以下にジョブスクリプトの例を示します。
1 2 3 4 5 6 7 8 |
#!/bin/csh #PBS -q ACE #PBS -l elapstim_req=5:30:00,memsz_job=10GB #PBS -M user@hpc.cmc.osaka-u.ac.jp #PBS -A hp123456 #PBS -m b cd $PBS_O_WORKDIR ./a.out > result.txt |
ジョブスクリプトファイルは大きく2段構成となっており、
・利用する計算機のリソースや環境の指定(#PBSから始まる個所)
・計算機に実行させる処理の記述(シェルスクリプト)
に分かれます。
「利用する計算機のリソースや環境の指定」の書き方
#PBS (オプション)
投入時オプションという形で、ジョブスクリプトのコメント部に記述します。
最初のシェルコマンドが現れる前のコメント部分で、「#PBS」という文字列に続けて指定してください。
よく利用するオプションのご紹介
※ 指定が必須のオプションについては★印を付けています。
※ MPIで計算を行う場合に必須のオプションについては☆印をつけています。
必ず指定をお願いいたします。
投入するキューの指定(-qオプション)★
#PBS -q [ジョブクラス名]
[ジョブクラス名]に、利用する計算機のジョブクラスを指定してください。
[ジョブクラス名]はジョブクラス表をご覧ください。
使用する資源制限値(-lオプション)★
#PBS -l cpunum_job=[1ノード当たりのCPU数],memsz_job=[1ノード当たりのメモリ量],elapstim_req=[経過時間]
使用する計算機のリソース量を指定してください。
・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)
計算中に指定された値を超えた場合、自動的にジョブは終了しますので、ご注意ください。
各計算機毎で、割り当て可能なリソースの上限が異なりますので、詳細はジョブクラス表をご覧ください。
課題IDの指定(-Aオプション)★
#PBS -A [課題ID]
HPCI利用やJHPCN-HPCI利用でジョブを投入する場合、必ず記載する必要があります。
前年度より継続している課題についても、当年度の課題IDを指定してください。
ジョブの種類(-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」というファイル名で標準エラー出力ファイル、標準出力ファイルがそれぞれ出力されます。後からの解析に便利ですので、特別な事情が無ければ、指定しないことをお勧めします。
ステージングの設定(-Iオプション、-Oオプション) 汎用コンクラスタのみ
#PBS -I "[転送元ディレクトリ],[転送先ディレクトリ]"
#PBS -O "[転送先ディレクトリ],[転送元ディレクトリ]"
ステージングとは、ジョブの実行前後にディスク間で任意のファイルを転送する機能です。汎用コンクラスタでは原則必須としています。
詳細は下記で解説しております。
その他のオプション
上記に書かれていない詳細な内容やオプションについては、以下のマニュアルをご参照ください。
上記に書かれていない詳細な内容やオプションについては、以下のマニュアルの「第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
下記は全て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
ジョブスクリプトを書くときの注意点
スクリプトの最終行には、必ず改行を入れてください。未入力の場合、最終行のコマンドが実行されません。