ジョブ投入など

コンパイル (phase2('08/7)から変更されました)

ジョブ投入・削除コマンド
ジョブの確認方法
ジョブ実行時の注意事項

ILEノードのジョブクラス
ILEノードのNQSファイル指定方法

CMCノードのジョブクラス (phase2('08/7)から、ジョブクラスが変更されました)
CMCノードのNQSファイル指定方法

ILEノードのジョブ割り当て(イメージ)
CMCノードのジョブ管理:ジョブマニュピレータ(イメージ)

CMCノード(SX8RとSX9)で残り時間をプログラム中から採取する方法


コンパイル

sx9のコンパイル

Phase2からの、SX-9ジョブクラスにジョブを投入する場合は、SX-9用のコンパイラでコンパイルする必要があります。
SX-8Rで流していたジョブを、SX-9で流す際には、必ず再コンパイルしてください

sx9用コンパイル(-cfsx9オプションをつけて下さい): sxf90 -cfsx9

sxf90(オプションなし)でコンパイルすると、SX-8R用となります。
コンパイラについての詳細は、CMCのページへ。

※オプションを追加する事で、 リンクされるライブラリも切り替わります。
個別にライブラリパスを指定している場合は注意して下さい。

作成済みモジュールの確認方法

また、作成済みのモジュールが、SX-8R用、SX-9用どちらのものかを確認したい時は、sxsymmapコマンド実行してください。

例) sxsymmap -f a.out

 SX-8R用の場合: SUPER-UX executable (SX-8R) not stripped uses floating point data

 SX-9用の場合: SUPER-UX executable (SX-9) not stripped uses floating point data 512G Layout large paging

エラーメッセージ

SX-9用にコンパイルした時にコンパイルしたジョブを、SX-8Rで実行した際には、下記エラーメッセージが出ます。

(csh)
% a.out
Cannot execute binary file.
a.out: Exec format error

(sh)
$ ./a.out
./a.out: syntax error at line 1: `^D%^P^EHX\244' unexpected

(ksh)
$ ./a.out
ksh: ./a.out: cannot execute

ジョブ投入・削除コマンド

ジョブを投入するコマンド、投入したジョブを削除するコマンドは以下となります。
斜体文字部分には各自該当するファイル名、リクエストIDを入力してください。

ジョブ投入
qsub FILENAME NQSファイルでのジョブクラス指定行で "@ile"、"@cmc"、"@sx9" を指定
qsub -h FILENAME ジョブ投入とともにホールドする場合
qrls *RequestID 上記"-h"でホールドしたジョブをリリースする場合
qsub FILENAME1 FILENAME2 ・・・ 「リクエスト連携機能」複数のジョブを順番に指定。
先行リクエストの実行完了を待って後続リクエストが実行開始される。
(後続リクエストはHELD状態で待機)
ジョブ削除
  qdel *RequestID

*RequestID は、jobr や qstat コマンドで表示されます。
  「xxxxx.cmc」「xxxxx.sx9」「xxxxx.ile」と表示されます。

ジョブの確認方法

ILEノードとCMCノードでは、以下のように確認コマンドが異なります。
ジョブ実行時はこれらのコマンドでジョブ状態をチェックし、効率よく実行できているかも確認してください。

ILEノード
  ノードのジョブ状態  jobr
  自分のジョブ状態 qstat @ile 
CMCノード
  ノードのジョブ状態 jobrcmc ILEユーザ名が見えます(frontdから)
    jobr_cmc 自分のジョブだけユーザ名が見えます(fronta,b,cから)
  自分のジョブ状態 qstat  
    sstat 【SX-8R用】JobManipulatorのスケジューラマップにのれば見えます
    sstat9 【SX-9用】JobManipulatorのスケジューラマップにのれば見えます
    sstat -s 11 【PCC用】JobManipulatorのスケジューラマップにのれば見えます

表示例: jobr (jobrcmc、jobr_cmcも同様の表示です)

【ステータス】

  • RUN : running(実行中)
  • QUE : queued(実行待ち)
  • HLD : held(ホールドされている)
表示例: qstat

"qstat" のみの場合は CMCノードでの自分のジョブ状態、"qstat @ile" の場合は ILEノードでの自分のジョブ状態が表示されます。

【qstat利用可能オプション】

  • -f : 詳細情報を表示する
  • -Q : キューの情報を表示する

表示例: sstat

sstatコマンドは、JobManipulatorのスケジューラマップにのって初めて表示されます。
sstatだけを見て自分のジョブがなくても、まだマップに乗っていない場合は jobr や qstat コマンドで見えます。

以下の例は、マップにのったけれどまだ実行されない場合です。
STT が QUE(実行待ち)状態になっています。

sstatで表示されるのは、SX-8Rのジョブです。SX-9のジョブを見たい場合は "sstat9" コマンドになります。
"sstat9"

クラスタのジョブを見たい場合は、以下のようにオプションをつけます。
"sstat -s 11"

ジョブ実行時の注意事項

効率よく実行されているか確認

CMCノードジョブは、NQSファイルで指定したCPU数を占有して実行します。
jobrcmc や qstat コマンドで表示される、CPU時間とエラプス時間の比率で、おおよそあなたが指定したCPU数で実行しているかどうかを確認することができます。

もしCPU数を 4 で指定しているのに、CPU時間とエラプス時間の比率が 1〜3 であるとき、あなたのプログラムはきちんと並列化されていない、もしくは何らかの別の問題があることがわかります。
この場合、使われていないCPUが存在するということで、システム効率が悪くなる原因となりますし、何より他のユーザに迷惑をかけていることをよく理解してください。

必要以上の指定はしない

CMCノードジョブは特に、指定したCPU数、メモリが占有して割り当てられます。
ILEノードジョブも、指定したメモリを確保します。

上記の「効率よく実行されているか確認」と同様のことですが、200GBの指定をしたにも関わらず、実際には100GB程度であった場合、使われていないメモリがあるのに他のジョブは入ってこれず、システム効率が下がるとともに他のユーザに多大なる迷惑をかけてしまいます。

実行前にプログラムやサイズをチェックし、必要以上のCPU数、メモリは指定しないでください。

ILEノードのジョブクラス

ILEノードでは、NQSII の標準機能を利用し、CPU多重運用によるジョブ管理を行っています。
Total Run Limit、User Run Limit、Memory Run Limit で実行を制御しており、ジョブの実行状況に応じて設定を変更することがあります。
最新のジョブクラス情報は、"more /sc/ile/local/def/ileclass" を実行してください。

ILEノード(3ノード):
CPU: 8CPU/1ノード ×3
メモリ: FC-RAM64GB ×1、FC-RAM128GB ×2

以下のジョブクラスを指定すると、3ノードのうち任意のノードに投入されます。

ジョブクラス CPU数 CPU時間(h) メモリ(GB)
default Max default Max
Lp8 8 1 (*) 8 120
Lp4 4 1 (*) 4 10
Lpd(debug用) 4 30min 1 10
Lsl 1 1 (*) 2 10
Lss 1 1 6 2 2

(*) NQSファイル内で CPU時間上限値を変更することが可能です。

ILEノードのNQSファイル指定方法

※NQSサンプルファイルをお渡しできますので、CMPまでお問い合わせください。

ILEノードの場合、CPU時間とメモリを指定します。

キューの指定

#PBS -q JOBCLASS@ile

ex) Lp4 に投入する場合: #PBS -q Lp4@ile

メモリの指定

#PBS -l memsz_job=***mb

※ "-l" は、小文字のエル
"GB" での指定も可能です("gb"の表記はしないでください)

CPU時間の指定

#PBS -l cputim_job=hh:mm:ss

※ "-l" は、小文字のエル
ex) 200時間を指定する場合: #PBS -l cputime_job=200:00:00

メモリとCPU時間の両方を指定

#PBS -l cputim_job=hh:mm:ss,memsz_job=***mb

※ "-l" は、小文字のエル

CMCノードのジョブクラス

2011.6.16  PCクラスタの1ノード当たりのメモリ最大値が、16GBから15GBに変更しました。
2008.7〜 Phase2 の SX-9 のサービスが開始されました。
SX-9ジョブクラスは、9CPU 以上、64GB メモリ以上のジョブでご利用になれます。
これに伴い、SXF、SXLクラスは、SX8F、SX8L に変更しました。

ILEノードとは違い、CPU数、経過時間(エラップスタイム)、メモリを指定しなくてはいけません
最新のジョブクラス情報は、frontにて about-sx8-class , about-sx9-class コマンドを実行してください。

ジョブクラス 経過時間 CPU数 メモリ(GB)
default(min) Max(hour) default Max default Max
DBG(debug用) 1(1min) 24(10min) 1 4 1 16
SX8F 1 24 1 8 1 120
SX8L 1 120 1 32 1 1000
SX8L(届出制) 1 240 1 64 1 2000
SX9 1 24 16 9-64 64 64-4000
SX9(届出制) 1 240 16 128 64 8000
PCC 1 480 4 /node
(16nodeまで)
15 /node
(16nodeまで)

注1)DBGクラスは、従来どおりジョブを多重実行するためCPU時間も制限があります。
括弧内の数字はCPU時間の規定値と最大値です。
注2)届出制のジョブは申請制です。
注3)SX-9のクラスは、CPU数9以上でメモリ64GB以上のジョブのみ受け付けます。

 

【参考 phase1(〜'08/6)までのジョブクラス】

ジョブクラス 経過時間 CPU数 メモリ(GB)
default(min) Max(hour) default Max default Max
DBG(debug用) 1(1min) 24(10min) 1 4 1 16
SXF 1 24 1 8 1 120
SXL 1 120 1 32 1 1000
SXL(届出制) 1 240 1 64 1 2000
PCC 1 480 4 /node
(16nodeまで)
16 /node
(16nodeまで)

CMCノードのNQSファイル指定方法

※NQSサンプルファイルをお渡しできますので、CMPまでお問い合わせください。

CMCノードで利用するNQSファイルは、ILEノードとは違い、CPU数、経過時間(エラップスタイム)、メモリを指定しなくてはいけません

※旧SX-5システムでは /sxshort にデータを出力する際、バッファサイズの指定をしていましたが、これは指定しないでください。
"setenv F_SETBUF01 4096" は不要です

キューの指定

#PBS -q JOBCLASS@cmc (or @sx9)

JOBCLASSは必ず大文字で記述してください


CPU数・エラップス・メモリの指定

#PBS -l cpunum_job=CPUNUM,elapstim_req=hh:mm:ss,memsz_job=***GB

※ "-l" は、小文字のエル
"gb"の表記はしないでください。
注) 必ず"cpunum_job"を指定してください("cpunum_prc"では実行できません)

CMCノードサンプルスクリプト

CPU数:4個、経過時間:5時間30分、メモリ:10GB を指定する場合

#PBS -q SXF@cmc
#PBS -l cpunum_job=4,elapstim_req=5:30:00,memsz_job=10GB
#PBS -M user@ile.osaka-u.ac.jp ←自分のメールアドレスを指定
#PBS -m b
cd ~/nqs/
a.out

SX-9サンプルスクリプト

※CPU数:9以上、メモリ64GB以上のジョブのみ投入できます。
CPU数位:16、経過時間:1時間30分、メモリ80GBを指定する場合

#PBS -q SX9@sx9
#PBS -l cpunum_job=16,elapstim_req=1:30:00,memsz_job=80GB
#PBS -M user@ile.osaka-u.ac.jp ←自分のメールアドレスを指定
#PBS -m b
cd ~/nqs/
a.out