SCore 環境で並列プログラムのバッチを処理を行うためには、PBS というバッ チシステムを使用します。
このドキュメントでは、PBS の基本的な使用方法について記します。 詳細については、PBS 付属の man ページを参照して下さい。
ジョブの実行キューの状態を確認するには、qstat
コマンドを
使用します。
qstat
キューにジョブが残っていれば、ジョブの情報が表示されます。
Job id Name User Time Use S Queue ------------- ------------- ------------- -------- - ----- 95.user0 job1.sh user0001 00:00:00 R default 96.user0 job2.sh user0001 00:00:00 R default 97.user1 job3.sh user0001 0 Q default
各行は左から順に、ジョブの ID、ジョブの名前、ジョブを投入したユーザ
名、ジョブが使用した CPU 時間、ジョブの状態、そのジョブを管理してい
るキューの名前となっています。
ジョブの状態は、R
が実行中、Q
がキューイング
されている状態を示します。
詳しくは qstat(1)
の man ページを参照して下さい。
PBS では投入されたジョブはバイナリのプログラムではなく、スクリプト でなければなりません。 PBS はジョブを起動する際に、ジョブを投入したユーザの実行ホスト上で のログインシェルを実行し、そのログインシェルにスクリプトを実行させ ます。 したがって、ジョブを投入するにはまずスクリプトを作成し、そのスクリ プトをジョブとして投入しなくてはなりません。 以下は、ジョブスクリプトの例です。
hostname date sleep 30
このスクリプトを test.sh
という名前にして、ジョブとして投
入してみます。
ジョブの投入には qsub
コマンドを使います。
qsub test.sh
ジョブの投入が成功すると、ジョブに割り当てられたジョブ ID が出力され ます。
1.user0
スクリプトが起動されたときの環境変数 PATH
の値は、ユーザ
の実行ホストでのログインシェルの設定に依存しますので注意して下さい。
また、スクリプトが起動されたときのカレントディレクトリは、PBS のジョ
ブのスプールディレクトリの下
(/var/scored/pbs/mom_priv/jobs/<ジョブ ID>
)
になります。
ジョブが投入された直後に qstat
を実行すれば、ジョブが投入
されたことが確認できるでしょう。
qstat Job id Name User Time Use S Queue ------------- ------------- ------------- -------- - ----- 1.user0 test.sh user0001 00:00:00 R default
qsub コマンドについて、詳しくは qsub(1)
の man ページを参
照して下さい。
コマンドラインでは以下のように実行していた SCore 用の並列プログラム があるものとします。
scrun -nodes=4 ./cg.A.4
これを PBS のジョブとして投入するには、スクリプトに次のように記述し
ます。
scout -F ${PBS_NODEFILE}
によって scrun
を起
動させるようにします。
scout -wait -F ${PBS_NODEFILE} -e scrun -nodes=4 /work/naspar/cg.A.4
スクリプトが起動されたときのカレントディレクトリは、PBS のジョブのス
プールディレクトリの下になります。
また、このスクリプト自体はコンピュートホスト上にコピーされますが、
scrun
から起動するプログラム (cg.A.4
) はコピー
されません。
scrun
から起動するプログラムは必ずコンピュートホストが共
通してアクセスできる位置に起き、絶対パスで指定するのが良いでしょう。
このスクリプトのファイル名を score.sh
とすると、
qsub
には次のような引数を与えて実行します。
qsub -l nodes=4:score score.sh
qsub
の -l
オプションに渡すノード数は、
scrun
に渡したノード数と一致する必要があります。
また、コンピュートホストとして割り当てるノードの指定として、必ず score というプロパティを指定して下さい。 score というプロパティが指定されると、PBS/SCore は SCore 用の並列プロ グラムが投入されたものと判断します。
プロパティをさらに細かく指定することも可能です。 たとえば、pcc というプロパティを持ったホストを割り当てて SCore 用の並 列プログラムを実行したいときは、次のように score と pcc の両方のプロパ ティを指定します。
qsub -l nodes=4:score:pcc score.sh
ノードの指定方法については、PBS Administrator Guide "7.2. Parallel Jobs" により詳しい説明がありますので、そちらも参照して 下さい。
sc_qsub
既に記した通り、SCore のジョブを PBS/SCore に投入するにはスクリプトファ
イルを作成する必要があります。
この節で説明する sc_qsub
コマンドを用いると、スクリプトファ
イルを自動的に生成できます。
PBS に次のような SCore ジョブを投入したいとしましょう。
% scrun -nodes=4 /work/naspar/cg.A.4
上記のプログラムを sc_qsub
を用いて投入するには、次のよう
にします。
% sc_qsub -nodes=4 /work/naspar/cg.A.4
このとき、nodes
オプションは必ず指定する必要があるのでご
注意下さい。
qsub
のオプションを指定する場合は、sc_qsub
と引数 -nodes
引数の間に置きます。
qsub
の -l
オプションでは nodes
オプションを指定することができません。
以下は、qsub
のオプションと SCore のオプションを指定して
sc_qsub
コマンドを実行している例です。
% sc_qsub -a 1000 -nodes=2x2,statistics /work/naspar/cg.A.4
投入したジョブをキューから削除するには qdel
コマンドを使
用します。
いま、qstat
の出力が次の通りだとします。
qstat Job id Name User Time Use S Queue ------------- ------------- ------------- -------- - ----- 1.user0 test.sh user0001 00:00:00 R default 2.user0 test.sh user0001 00:00:00 R default
qdel
は、削除したいジョブのジョブ ID を指定して実行します。
qdel 1.user0
再び qstat
を実行すると、ジョブが削除されているのが分かり
ます。
qstat Job id Name User Time Use S Queue ------------- ------------- ------------- -------- - ----- 2.user0 test.sh user0001 00:00:00 R defaultなお、削除したジョブを投入したユーザのもとには、PBS から削除を通知す るメールが届きます。
詳しくは qdel(1)
の man ページを参照して下さい。
xpbs
PBS には、qsub
ようなコマンドラインインターフェースに加え
て、X 上で動作する GUI アプリケーション xpbs
が用意されて
います。
xpbs
を起動するには、コマンド行から以下の行を実行します。
環境変数 DISPLAY
を適切な値に設定しておく必要があります。
xpbs
xpbs
が起動すると、ディスプレイに次のようなメインウィンド
ウが現れます。
xpbs
でのキューの状態の確認状態を表示させたいキューを QUEUE 領域の中から選択します。
メインウィンドウの JOBS 領域に指定したキューの状態が表示されます。
なお、そのままではキューの状態表示は更新されません。 手動で更新するには、ウィンドウ上部の "Manual Update" ボタンを押します。 押す度にキューの状態表示が更新されます。 一定時間おきに自動的にキューの状態表示を更新するには、メインウィンドウ 上の "Auto Update..." ボタンを押します。 押すと、次のように "Automatic Update of Data" ダイアログが現れます。
上下の矢印ボタンを押して更新間隔を調整し、"start updating" ボタンを押 すと自動更新が開始されます。 同様に、"stop updating" ボタンを押すと、自動更新が止まります。
xpbs
でのジョブの投入
xpbs
上で ジョブを投入するには、まずメインウィンドウ上の
HOSTS 領域にある "Submit..." ボタンを押します。
すると、"Submit Job Dialog" ウィンドウが現れます。
"Submit Job Dialog" の SCRIPT 領域で、ジョブとして投入するスクリプトの 指定を行います。
スクリプトのファイル名を指定するか、テキストボックス内に直接スクリプト の内容を書くかのいずれかの方法で行います。
ファイルを指定する場合は、"File..." ボタンで選択するか、その右隣にある エントリボックスで直接ファイル名を指定した後、"load" ボタンを押します。
"Submit Job Dialog" ウィンドウでの入力が終わったら、ウィンドウ底部にあ る "confirm submit" ボタンを押してジョブを投入します。 "Submit Job Dialog" ウィンドウが閉じられ、メインウィンドウの JOBS 領域 にいま投入したジョブの情報が加わります。
xpbs
での SCore 用並列プログラムのジョブ投入SCore 用の並列プログラムの投入は、前節で記した "Submit Job Dialog" ウィンドウでも可能ですが、手順が複雑です。 より簡単に SCore 用の並列プログラムを投入するには、メインウィンドウ 上の HOSTS 領域にある "Submit SCore..." ボタンを押して下さい。 すると、"Submit SCore Job Dialog" ウィンドウが現れます。
"Submit SCore Job Dialog" の COMMAND LINE 領域で、ジョブとして投入する
コマンド行の指定を行います。
投入するジョブを scrun
コマンドで起動する場合のコマンド行
を記します。
"scrun -nodes=" は最初から記されていますので、それに続くコマンド行を記
すようにします。
ウィンドウ上での入力が終わったら、ウィンドウ底部にある "confirm submit" ボタンを押してジョブを投入します。"Submit SCore Job Dialog" ウィンドウ が閉じられ、メインウィンドウの JOBS 領域 にいま投入したジョブの情報が 加わります。
より高度なことが使い方、たとえばシェルスクリプトを記述して、その中
で SCore 用の並列プログラムをジョブとして起動するような場合は、お手数
でも (前節に記した) "Submit Job Dialog" ウィンドウをお使い下さい。
ただし、スクリプト内では scout -F ${PBS_NODEFILE}
によっ
て scrun
を起動させるようにする必要があるのでご注意下さい。
scout -wait -F ${PBS_NODEFILE} -e scrun -nodes=4 /work/naspar/cg.A.4
xpbs
でのジョブの削除
xpbs
でジョブの削除するには、メインウィンドウの JOBS 領域
で削除したいジョブを選択し、ウィンドウ右端にある "delete..." ボタンを
押します。
"Delete Job Dialog" ウィンドウが現れ、削除するジョブの確認を求めてきま す。
本当に削除してよければ、"delete" ボタンを押します。
xpbs
の終了
はじめて xpbs
を立ち上げたときは、設定ファイル
~/.xpbsrc
をセーブしてするどうか確認を求めるウィンドウが
現れます。
通常は "yes" ボタンを押して xpbs
を終了させます。
ファイル ~/.pbscrc
が作られると、次回からはこの確認ウィン
ドウは出現しません。
PCクラスタコンソーシアム |