ジョブの投入・管理

qsub : ジョブ投入コマンド


スーパーコンピュータのキューにジョブを投入します。
なお、オプションは実行するスクリプトファイル中の#PBS指示文でも指定可能です。

注意!

フロントエンドノードでは直接プログラムを実行せず、qsubコマンドでジョブとしてキューに投入してください。
直接プログラムが実行されていた場合、他のユーザーへ影響があるため、管理者によりキャンセルされる場合がありますので、ご了承ください。


書式

$ qsub [-q キュー名] [-l select=ノード数] [-N ジョブ名] [-M 電子メールアドレス] [-m 電子メール通知の指定] [-l walltime=経過時間上限] [-l ライセンス種類=使用ライセンス数] [実行するスクリプトファイル]


オプション一覧

オプション 説明
-q キュー名 キュー名を指定します。
キュー一覧を参照して下さい。
-l select=ノード数 使用するノード数を指定します。
省略した場合のノード数はキューのデフォルト値となります。(キュー一覧参照)
-N ジョブ名 ジョブ名を指定します。
ジョブ名は最大 236 文字まで指定できます。
リアルタイムジョブ参照システムでは64文字まで表示されます。
省略した場合はシステムが割り当てます。
-M 電子メールアドレス 受信する電子メールアドレスを指定します。
メールを受信する場合は-mオプションの指定が必須です。
-m 電子メール通知の指定 電子メール送信のポイントを指定します。
メール受信する場合は-M オプションの指定が必須です。
-l walltime=経過時間上限 ジョブの経過時間上限を指定します。
省略した場合の経過時間上限はキューのデフォルト値となります。(キュー一覧参照)
適切な値を設定することでキュー待ちのジョブが実行しやすくなります。
-l ライセンス種類=使用ライセンス数 ライセンス管理対象のアプリケーション使用時に使用ライセンス数を指定します。
省略した場合はライセンス管理対象アプリケーションを使用しないとします。
ライセンスの指定についてはアプリケーションの実行方法を参照して下さい。


使用例

・キューDP_002を使用して、2ノード使用、経過時間上限を10分、スクリプトファイルはhello.sh

$ qsub -q DP_002 -l select=2 -l walltime=00:10:00 hello.sh


スクリプトで指定する場合

#!/bin/sh
#PBS -q DP_002
#PBS -l select=2
#PBS -l walltime=00:10:00
...


・キューP_016を使用して、ジョブ開始及び終了時にuserA@test.comに送信、スクリプトファイルはhello.sh

$ qsub -q P_016 -M userA@test.com -m be hello.sh


スクリプトで指定する場合

#!/bin/sh
#PBS -q P_016
#PBS -M userA@test.com
#PBS -m be
...


・キューDP_002を使用して、ライセンス管理対象のQuantumATKを実行、スクリプトファイルはatk.sh

$ qsub -q DP_002 -l atk=1 -l atkdp=35 atk.sh


スクリプトで指定する場合

#!/bin/sh
#PBS -q DP_002
#PBS -l atk=1 -l atkdp=35
...

aprun : プログラム起動コマンド


ジョブ実行中にプログラムを起動するにはaprunコマンドを利用します。

注意!

大規模並列計算サーバでプログラムを実行する場合は必ずaprunコマンドを使用してください。
aprunを使用せずに実行した場合、I/Oノード上でプログラムが実行され、他のユーザーのジョブ実行に影響を与えるため、
管理者によりキャンセルされる場合がありますので、ご了承ください。


書式

$ aprun [-n 並列数] [-d 並列数][-N ノードあたりの並列数] [-S CPUソケットあたりの並列数] [-j 0|1|N] [--cc 配置方法] 実行プログラム


オプション一覧

オプション 説明
-n 並列数 MPI並列数を指定する。
-d 並列数 OpenMP 並列数を指定する。
(合わせてOMP_NUM_THREADSの指定も必要)
-N ノード当たりの並列数 ノードごとに配置するMPIプロセス数を指定する。
-S CPUソケットあたりの並列数 CPUソケットごとに配置するMPIプロセス数を指定する。
-j 0|1|N| CPU コアごとに配置するスレッド数を指定する。
0: HyperThreadingを使用する(デフォルト)
1: HyperThreadingを使用しない
N: HyperThreadingを使用、コア毎にNスレッドを配置
–cc 配置方法 プロセス/スレッドの配置方法を指定する。
depth: プロセスが割り当てられたCPUコアに近接するようにスレッドをバインド
(OpenMP, MPI+OpenMPのプログラムを実行する際に有効)
ジョブのパフォーマンスを高めるために以下が成り立つよう値を指定してください。
[MPI並列数(-nの値)] = [ノード数(#PBS -l select=の値)] × [ノードあたりの並列数(-Nの値)]

実行スクリプトの書式


スーパーコンピュータ上でプログラムを動作させる際に使用する実行スクリプトの書式について説明し ます。
実行スクリプトを必要とするアプリケーションを実行する際は、事前に実行スクリプトを作成しておく必要があります。
/home領域よりも/work領域のほうがI/O性能が良いため、以下の例を参考に/work 領域にデータをコピーして実行し、実行後に結果をジョブ投入したディレクトリに移動するようにしてください。

MPIを使用しないジョブの実行

#!/bin/sh
#PBS -l select=1
#PBS -q キュー名
#PBS -N ジョブ名

# ジョブ投入したディレクトリを/work領域にコピーし、/work領域に移動
DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

# プログラムの実行
aprun 実行プログラム >出力ファイル 2>エラー出力ファイル

# ジョブが終了後、結果をジョブ投入したディレクトリに移動
cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi


・例:プログラムa.outを実行

#!/bin/sh
#PBS -l select=1
#PBS -q P_016
#PBS -N sample

DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

aprun ./a.out > result.out 2> result.err

cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi


Cray XCの高速通信(ESMモード)を使用したMPIジョブの実行

#!/bin/sh
#PBS -l select=ノード数
#PBS -q キュー名
#PBS -N ジョブ名

# ジョブ投入したディレクトリを/work領域にコピーし、/work領域に移動
DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

# プログラムの実行
aprun [-n 並列数][-N ノードあたりの並列数] 実行プログラム > 出力ファイル 2> エラー出力ファイル

# ジョブが終了後、結果をジョブ投入したディレクトリに移動
cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi


・例1:1ノードで2MPIプロセスのプログラムa.outを実行

#!/bin/sh
#PBS -l select=1
#PBS -q P_016
#PBS -N mpi1

DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

aprun -n 2 -N 2 ./a.out > result.out 2> result.err

cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi


・例2:2ノードで2MPIプロセスのプログラムa.outを実行

#!/bin/sh
#PBS -l select=2
#PBS -q P_016
#PBS -N mpi2

DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

aprun -n 2 -N 1 ./a.out > result.out 2> result.err

cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi

インタラクティブモード


インタラクティブモードでジョブを投入します。
qsubコマンドにオプション-Iを付与し、キューにIP_001を指定します。

重要

プログラムの実行には必ずaprunコマンドを使用してください。

書式

$ qsub -I -q IP_001


使用例

$ qsub -I -q IP_001
qsub: waiting for job 220331.sdb to start
qsub: job 220331.sdb ready

Directory: /home/userA
Mon Sep 23 01:03:04 JST 2019

userA@mom1:~> cd $PBS_O_WORKDIR
userA@mom1: /work/userA/testdir> aprun -n 32 -j 1 ./a.out


statj : ユーザー自身のジョブの状態を確認


ユーザー自身のジョブの状態を表示します。

書式

$ statj [-x] [ [job_identifier | destination] ...]


オプション一覧

オプション 説明
-x 終了したジョブを含めてジョブ情報の表示


使用例

userA@super2:~> statj
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
3413.sdb        userA    P_016    STDIN      231503   1  36  690gb 24:00 R 00:00

qstat : ジョブの状態を確認


スーパーコンピュータのジョブの状態を表示します。

書式

Default format:
qstat [-a] [-p] [-J] [-t] [-x] [ [job_identifier | destination] ...]
Long format:
qstat -f [-p] [-J] [-t] [-x] [ [job_identifier | destination] ...]


オプション一覧

オプション 説明
-a メモリ量や経過時間、ジョブの状態の経過時間などを表示
-p ジョブ完了割合の表示
-J アレイジョブに関する制限表示
-t ジョブ情報の表示
-x 終了したジョブを含めてジョブ情報の表示
-f Long formatにて表示


使用例

userA@super2:~> qstat -a
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
3390.sdb        userA    P_016    abinit     193347   4 144 2760gb 72:00 R 47:28
3401.sdb        userA    P_016    prog9_1    121974   4 144 2760gb 72:00 R 47:26

userA@super2:~> qstat -p
Job id           Name             User             % done   S Queue
---------------- ---------------- ---------------- -------- - -----
3390.sdb         abinit           userA                  2  R P_016
3401.sdb         prog9_1          userA                  0  R P_016

userA@super2:~> qstat -t
Job id           Name             User             Time Use S Queue
---------------- ---------------- ---------------- -------- - -----
3390.sdb         abinit           userA            00:00:01 R P_016
3401.sdb         prog9_1          userA            00:00:01 R P_016

userA@super2:~ > qstat -x
Job id           Name             User             Time Use S Queue
---------------- ---------------- ---------------- -------- - -----
2235.sdb         prog9_2          userA            00:00:03 F P_016
2236.sdb         vasp4            userA            00:00:01 F P_016
2237.sdb         prog9_1          userA            00:00:01 F P_016
...

userA@super2:~> qstat -f 3390.sdb
Job Id: 3390.sdb
 Job_Name = abinit
 Job_Owner = userA@nid00204
 resources_used.cpupercent = 10
 resources_used.cput = 00:00:01
 resources_used.mem = 12836kb
 resources_used.ncpus = 72
...

statq : キュー状態を確認


スーパーコンピュータのキューの状態を表示します。

書式

Default format:
statq [destination ...]
Long format:
statq -f [destination ...]


オプション一覧

オプション 説明
-f Long formatにて表示


使用例

userA@super2:~> statq
Queue            Max   Tot   Ena Str Que   Run   Hld   Wat   Trn   Ext   Type
---------------- ----- ----- --- --- ----- ----- ----- ----- ----- ----- ----
workq                0     0 no  yes     0     0     0     0     0     0 Exec
DP_002               0     0 yes yes     0     0     0     0     0     0 Exec
P_016                0     1 yes yes     0     1     0     0     0     0 Exec
P_032                0     0 yes yes     0     0     0     0     0     0 Exec
P_064                0     0 yes yes     0     0     0     0     0     0 Exec
LP_032               0     0 yes yes     0     0     0     0     0     0 Exec
LP_064               0     0 yes yes     0     0     0     0     0     0 Exec
...

userA@super2:~> statq -f
Queue: workq
     queue_type = Execution
     total_jobs = 0
     state_count = Transit:0 Queued:0 Held:0 Waiting:0 Running:0 Exiting:0 Begun
         :0
     enabled = False
     started = True
...

qstat -B : サーバ状態を確認


スーパーコンピュータのサーバの状態を表示します。

書式

Default format:
qstat -B [destination ...]
Long format:
qstat -B -f [destination ...]


オプション一覧

オプション 説明
-B サーバの表示
-f Long formatにて表示

使用例

userA@super2:~> qstat -B
Server           Max   Tot   Que   Run   Hld   Wat   Trn   Ext   Status
---------------- ----- ----- ----- ----- ----- ----- ----- ----- -----------
sdb                  0  1155     0     1     0     0     0     0 Active
userA@super2:~> qstat -Bf
Server: sdb
    server_state = Active
    server_host = sdb
    scheduling = True
    max_queued = [u:PBS_GENERIC=200]
...

qdel : ジョブの強制終了


スーパーコンピュータのジョブを削除します。

書式

qdel [ -x ] [ -Wsuppress_email=<N> ] job_identifier [job_identifier ...]


オプション一覧

オプション 説明
-x ジョブヒストリーも含めてジョブ削除
-Wsuppress_email 削除時のメール送信数の制限

使用例

userA@super2:~/work/20180712_sample> statj
                                                       Req'd  Req'd   Elap
Job ID     Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
---------- -------- -------- ---------- ------ --- --- ------ ----- - -----
3413.sdb   userA    P_016    abinit       3710   3 216 2304gb 72:00 R 00:00
3414.sdb   userA    DP_002   STDIN       13588   1  72  768gb 00:10 R 00:00

userA@super2:~/work/20180712_sample> qdel 3414.sdb

userA@super2:~/work/20180712_sample> statj
                                                       Req'd  Req'd   Elap
Job ID     Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
---------- -------- -------- ---------- ------ --- --- ------ ----- - -----
3413.sdb   userA    P_016    abinit       3710   3 216 2304gb 72:00 R 00:00

userA@super2:~/work/20180712_sample>


jobtime : 利用実績確認コマンド


書式

$ jobtime


表示項目

項目 内容
Last Updated 更新日時
User ユーザー名
Total 割り当てノード時間
Used 累積利用時間
Remained 残り時間


使用例

userA@super2:~ > jobtime
# Last Updated: 2018/10/01 13:45
# User Total Used Remained (H)
username 500 222.32 277.68


ジョブ実行性能に関する指定


スーパーコンピュータはHyper-Threadingを有効にしているため、aprunコマンドでコアあたりのプロセスの割当を指定することにより性能改善する可能性があります。

書式
物理コアあたりのスレッド数に1を指定する場合

aprun -j 1 実行プログラム


使用例

#!/bin/bash
#PBS -j oe
#PBS -l select=1
#PBS -q P_016

DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

aprun -n 36 -N 36 -j 1 ./xhpl_skl_diag_cray_opt > result.out 2> result.err

cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf$WORKDIR; fi


  • user_manual/supercomputer/job_submission_management.txt
  • 最終更新: 2023/04/11 05:49
  • (外部編集)