line


バッチ処理(PBS)について

line
2015年 3月 23日 更新
2013年 4月  5日 作成


1.バッチ処理の意味

2.PBSの利用
2.1 ジョブの投入
2.2 PBSのジョブクラス

3.バッチ処理の使い方
3.1 リクエストパラメータの指定方法
3.2 バッチ処理用シェルスクリプトの書き方
3.2.1 標準入出力のみを使う
3.2.2 補助記憶装置を使う
3.3 リクエストの実行と確認
3.3.1 qsub
3.3.2 qstat
3.3.3 qdel

A.用語説明


1.バッチ処理の意味

計算サ−バー(lx)で利用できる、バッチ処理(PBS)について説明します。

計算サーバー(lx)は、利用者がログインをしてプログラムの作成やコンパイルをおこなうログインノードと、プログラムを実行するための計算ノードから構成されています。

ログインノードから計算ノードへジョブを投入するにはバッチ処理を利用します。

バッチ処理を利用しないと、計算ノードの持つ複数のCPUや長時間の実行ができませんので、プログラムを実行する場合は必ずバッチ処理を利用してください。

ログインノードでは、プログラムの編集やコンパイル、GUIを必要とするアプリケーション以外のインタラクティブ処理はおこなわないでください。

 


2.PBSの利用

以下で使われる用語などについては、「A.用語説明」に書かれていますので参照してください。

2.1.ジョブの投入

ジョブの投入は、バッチ処理用シェルスクリプトを作成し、qsub コマンドを使用します。
また、必要とする計算時間およびメモリ上限値により、適切なジョブクラスを指定します。
ジョブクラスの指定は、-q オプションで指定します。

qsub -q ジョブクラス  バッチ処理用シェルスクリプト

(例) qsub -q SS pbsfile1

*ジョブクラスは必ず指定してください。

2.2.PBSのジョブクラス

必要とする計算時間やメモリサイズ、並列実行可能かどうかによって、PBSのジョブクラスを選びます。
並列実行ができないプログラムは、必ずSS,SM,SLクラスを指定してください。
なお、利用区分によって利用できるジョブクラスに制限があります。

<ジョブクラスで指定できる最大の計算時間とメモリサイズ>
ジョブクラス 計算時間(*1) メモリサイズ(*2) コア数 多重度(*3) 利用手続き
SS 1時間 1GB 計算サーバー利用申請
計算サーバー研究利用申請
SM 1日 2GB 10 計算サーバー研究利用申請
SL 1週間 4GB 10 計算サーバー研究利用申請
PS 1時間 32GB 12 計算サーバー利用申請
計算サーバー研究利用申請
PM 1日 64GB 24 計算サーバー研究利用申請
PL 1週間 64GB 24 計算サーバー研究利用申請

*1計算時間はジョブを実行している経過時間で制限されています。
*2バッチ処理用シェルスクリプトでパラメータ指定する場合は、最大サイズより小さい値を指定してください。
システム仕様上、最大サイズで指定するとバッチ処理用シェルスクリプトが実行されません。

*3同時に実行できるジョブの数
*ジョブクラスの制限は今後変更する場合もあります。その際はセンターのホームページ等でお知らせします。

ジョブはジョブクラスごとに投入された順に実行されます。なお、1人が同時に実行できるジョブは、全ジョブクラスを合わせて3本です。
数多くのジョブを投入する必要がある場合には、「4.2.バッチ処理用シェルスクリプトの書き方」を参考にしてください。


3.バッチ処理の使い方

3.1.リクエストパラメータの指定方法

qsubコマンドで指定するバッチ処理用シェルスクリプトに計算時間を記述することにより、打ち切り計算時間を指定できます。

#PBS -l の l は、Lの小文字です。
1(いち)ではありません。

a) 計算時間の指定方法

#PBS -l cput=時:分:秒

例) #PBS -l walltime=03:00:00
ジョブの実行時間を最大で3時間まで使用する指定です。

b) 出力ファイル名の指定方法

#PBS -o ファイル名

例) #PBS -o myfile.prt

実行結果を、ファイル名 myfile.prt に格納する指定です。
この指定がないと
実行結果を格納するファイル → [バッチ処理用シェルスクリプト名].o[ジョブ番号]
エラー結果を格納するファイル → [バッチ処理用シェルスクリプト名].e[ジョブ番号]
にそれぞれの結果が入ります。

c) 標準出力とエラー出力を1つにまとめる方法

#PBS -j oe

この指定で、実行結果を格納するファイルとエラー結果を格納するファイルを1つにまとめます。

d) 処理スタート時刻の指定

#PBS -a 時刻

例) #PBS -a 2230
共に午後10時30分にジョブをスタートさせる指定です。

3.2.バッチ処理用シェルスクリプトの書き方

標準入出力のみを使う場合と外部のファイルを使う場合のそれぞれについてFORTRANで書かれたプログラムを、コンパイル(翻訳)し実行する場合の例を示します。

また、ここではコンパイルリスト、実行結果などを一つのファイルにまとめて出力することとします。

3.2.1.標準入出力のみを使う

ジョブ制御ファイル pbsfile1 の内容
1
2
3
4
5
6
7
8
9
#!/bin/csh
#PBS -l walltime=30:00
#PBS -j oe
cd  $PBS_O_WORKDIR
ifort  ex1.f  -o  ex1.exe  -list=ex1.L
cat  ex1.L
./ex1.exe < ex1.d
yes  |  rm  ex1.L > /dev/null
yes  |  rm  ex1.exe > /dev/null
  1. このバッチ処理用シェルスクリプトを C シェルで書くことを宣言します。
  2. 計算時間を30分間に設定します。
  3. 標準出力と標準エラー出力を1つのファイルにまとめるよう設定します。
  4. qsubを実行したディレクトリに移動します。
  5. プログラムをコンパイルします。
  6. コンパイル結果を出力します。
  7. プログラムを実行します。データはファイルex1.dから読み込みます。
  8. コンパイル結果のファイルを削除します。削除のメッセージは出力されません。
  9. 実行プログラムを削除します。削除のメッセージは出力されません。

3.3.リクエストの実行と確認

3.3.1.qsub

ジョブを投入するには、qsubコマンドを使います。

【形式】qsub-q ジョブクラスバッチ処理用シェルスクリプト名

例)ファイル名が、PBSfile1のバッチ処理用シェルスクリプトを投入する。

[tokai@lx ~]$ qsub -q SS pbsfile1
75.lx
[tokai@lx ~]$

    下線部分を入力してください。75がジョブ番号です。

3.3.2.qstat

投入したジョブの状態を調べるには、qstatコマンドを使用します。

qstat ジョブ番号

[tokai@lx ~]$ qstat
Job id      Name         User         TimeUse  S Queue
----------- ------------ ------------ -------- - -----
257.lx      sample-1     tokai        00:03:53 R M
              

3.3.3.qdel

自分が投入したジョブを削除します。

【形式】qdel ジョブ番号

例)ジョブ番号300番のジョブを削除します。

tokai@bosei% qdel 300


A.用語説明

バッチ処理 コンピュータに一括して処理を依頼し、処理する方法です。
いったん、処理を依頼すれば、コンピュータの前にいる必要はありませんので、ログアウトして、端末の電源を切ってもかまいません。
PBS PBS(Portable Batch System)をは、UNIXでバッチ処理を行うためにNASAが中心になって開発したシステムです。
ジョブ(リクエスト) コンピュータに依頼するバッチ処理の1つ1つを「ジョブ」もしくは「リクエスト」と呼びます。多くは、一連のコマンドのまとまりから成っています。
ジョブクラス ジョブ(リクエスト)によって計算時間、メモリを使用する量が異なるため、それらを効率よく実行するために「ジョブクラス」を設定しています。
リクエストオプション ジョブ(リクエスト)について打ち切り時間やメモリサイズなど各種設定を行うための指定方法です。
バッチ処理用シェルスクリプト リクエストオプションと処理の内容が書かれた、バッチ処理投入のためのシェルスクリプトファイルです。

東海大学総合情報センター