ジョブの投入・管理

qsub : ジョブ投入コマンド


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

書式

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


オプション一覧

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


使用例

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

$ qsub -q A_004 -l select=2 -l walltime=1:00:00 hello.sh


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

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


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

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


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

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


・キューA_004を使用して、ジョブ名をTEST、スクリプトファイルはhello.sh

$ qsub -q A_004 –N TEST hello.sh


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

#!/bin/sh
#PBS -q A_004
#PBS -N TEST
...

実行スクリプトの書式


アクセラレータサーバ上でプログラムを動作させる際に使用する実行スクリプトの書式について説明します。
実行スクリプトを必要とするアプリケーションを実行する際は、事前に実行スクリプトを作成しておく必要があります。
/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

# プログラムの実行
実行プログラム >出力ファイル 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 A_004
#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

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

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


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

# プログラムの実行
mpirun [ -np 並列数 | -ppn ノードあたりの並列数 ] -hostfile $PBS_NODEFILE 実行プログラム > 出力ファイル 2> エラー出力ファイル

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


・例1:Intelコンパイラでコンパイルしたプログラムa.outを2ノード、72MPIプロセスで実行

#!/bin/sh
#PBS -l select=2
#PBS -q A_004
#PBS -N mpi

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

mpirun -np 72 -ppn 36 -hostfile $PBS_NODEFILE ./a.out > result.out 2> result.err

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



インタラクティブモード


インタラクティブモードでジョブを投入します。
qsubコマンドにオプション-Iを付与し、キューにIA_001g、CA_001、CA_001g、IC_001、CC_001のいずれかを指定します。

書式

$ qsub -I -q キュー名


使用例

$ qsub -I -q IA_001g
qsub: waiting for job 22351.gpu1 to start
qsub: job 22351.gpu1 ready

-bash-4.2$ ./a.out



共有キューCA_001・CA_001g・CC_001へのジョブ投入方法


共有キューCA_001、CA_001gおよびCC_001にジョブ を投入する方法について記載します。
共有キューはノードを他のジョブと共有して使用するキューです。
CA_001 およびCA_001g で実行したジョブにはデフォルトで1CPU、1GPUが割り当てられます。qsubコマンドのオプション指定により、最大で18CPU、5GPUまで使用可能です。 インタラクティブモードでの実行も可能です。
CC_001 で実行したジョブには、デフォルトで1CPU が割り当てられます。qsub コマンドのオプション指定により、最大で18CPU まで使用可能です。インタラクティブモードでの実行も可能です。

書式
・CA_001 またはCA_001g の場合

$ qsub -q キュー名 [ -I ] [ -l select=1[:ncpus=CPU数][:ngpus=GPU数] [実行するスクリプトファイル] ]


・CC_001 の場合

$ qsub -q キュー名 [ -I ] [ -l select=1[:ncpus=CPU数] [実行するスクリプトファイル] ]


使用例
・例:キューCA_001を利用して、2CPU、1GPUでインタラクティブモード実行するコマンド

$ qsub -I -q CA_001 -l select=1:ncpus=2:ngpus=1
qsub: waiting for job 22351.gpu1 to start
qsub: job 22351.gpu1 ready

-bash-4.2$ ./a.out


・例:キューCA_001gを利用して、18CPU、5GPUでプログラムa.outを実行するスクリプト
CA_001gを利用する場合は/work_da領域からジョブを投入してください。

#!/bin/sh
#PBS -l select=1:ncpus=18:ngpus=5
#PBS -q CA_001g
#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

mpirun -np 18 -ppn 18 -hostfile $PBS_NODEFILE ./a.out > result.out 2> result.err
cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi


・例:キューCC_001を利用して、2CPUでインタラクティブモード実行するコマンド

$ qsub -I -q CC_001 -l select=1:ncpus=2
qsub: waiting for job 90289.gpu1 to start
qsub: job 90289.gpu1 ready

-bash-4.2$ ./a.out


・例:キューCC_001を利用して、18CPUでプログラムa.outを実行するスクリプト

#!/bin/sh
#PBS -l select=1:ncpus=18
#PBS -q CC_001
#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

mpirun -np 18 -ppn 18 -hostfile $PBS_NODEFILE ./a.out > result.out 2> result.err
cd; if cp -raf $WORKDIR/$DIRNAME $PBS_O_WORKDIR/.. ; then rm -rf $WORKDIR; fi


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


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

書式

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


オプション一覧

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


使用例

userA@gpu2:~> statj
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
3413.gpu1       userA    A_004    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@gpu2:~> qstat -a
                                                            Req'd  Req'd   Elap
Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
3390.gpu1       userA    A_004    abinit     193347   4 144 2760gb 72:00 R 47:28
3401.gpu1       userA    A_004    prog9_1    121974   4 144 2760gb 72:00 R 47:26

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

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

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

userA@gpu2:~> qstat -f 3390.gpu1
Job Id: 3390.gpu1
 Job_Name = abinit
 Job_Owner = userA@gpu2
 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@gpu2:~> 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
A_004                0     0 yes yes     0     0     0     0     0     0 Exec
MA_008               0     1 yes yes     0     1     0     0     0     0 Exec
SA_016               0     0 yes yes     0     0     0     0     0     0 Exec
DA_002g              0     0 yes yes     0     0     0     0     0     0 Exec
DC_002               0     0 yes yes     0     0     0     0     0     0 Exec
C_002                0     0 yes yes     0     0     0     0     0     0 Exec
...

userA@gpu2:~> 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@gpu2:~> qstat -B
Server           Max   Tot   Que   Run   Hld   Wat   Trn   Ext   Status
---------------- ----- ----- ----- ----- ----- ----- ----- ----- -----------
gpu1                 0  1155     0     1     0     0     0     0 Active
userA@gpu2:~> qstat -Bf
Server: gpu1
    server_state = Active
    server_host = gpu1
    scheduling = True
    max_queued = [o:PBS_ALL=10000]
...

qdel : ジョブの強制終了


アクセラレータサーバのジョブを削除します。

書式

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


オプション一覧

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

使用例

userA@gpu2:~/work/20180712_sample> qstat
Job id            Name              User              Time Use S Queue
----------------  ----------------  ----------------  -------- - -----
3413.gpu1         abinit            userA             00:00:00 R A_004
3414.gpu1         STDIN_gpu2_22     userA             00:00:00 R A_004

userA@gpu2:~/work/20180712_sample> qdel 3414.gpu1

userA@gpu2:~/work/20180712_sample> statj
userA@gpu2:~/work/20180712_sample> qstat
Job id            Name              User              Time Use S Queue
----------------  ----------------  ----------------  -------- - -----
3413.gpu1         abinit            userA             00:00:00 R A_004

userA@gpu2:~/work/20180712_sample>


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


書式

$ jobtime


表示項目

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


使用例

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


MPIジョブの実行方法


MPI環境として、IntelMPIが利用可能です。

書式
ジョブ実行にはmpirunコマンドを使用します。

mpirun [ -np 並列数 ] [ -ppn ノードあたりの並列数 ] -hostfile $PBS_NODEFILE 実行プログラム


重要

※ジョブのパフォーマンスを高めるために以下が成り立つよう値を指定してください。
[ MPI並列数(-npの値) ] = [ ノード数(#PBS -l select=の値) ] × [ ノードあたりの並列数(-ppnの値) ]


使用例

#!/bin/bash
#PBS -j oe
#PBS -l select=1
DIRNAME=`basename $PBS_O_WORKDIR`
WORKDIR=/work/$USER/$PBS_JOBID
mkdir -p $WORKDIR
cp -raf $PBS_O_WORKDIR $WORKDIR
cd $WORKDIR/$DIRNAME

mpirun -np 36 -hostfile $PBS_NODEFILE /usr/local/app/ABINIT/current/src/98_main/abinit < input.files > result.out 2> result.err

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


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