Skip to content

3. ジョブ実行環境

3.1. ジョブサービスメニュー

ABCIシステムでは、以下のジョブサービスが利用可能です。

サービス名 説明 サービス課金係数 利用形態
Spot バッチ実行型ジョブサービス 1.0 バッチ利用
On-demand インタラクティブ実行型ジョブサービス 1.0 インタラクティブ利用
Reserved 事前予約型ジョブサービス 1.5 バッチ利用、インタラクティブ利用

SpotサービスおよびOn-demandサービスでは、ジョブ実行開始時にジョブが使用予定のABCIポイントを経過時間制限値を元に計算し、 減算処理を実施します。 ジョブ実行終了時に実際の経過時間を元にABCIポイントを再計算し、返却処理を実施します。

Reservedサービスでは、予約完了時に予約期間を元にABCIポイントを計算し、減算処理を実施します。予約を取消しない限り、返却処理は実施しません。

3.2. ジョブ実行リソース

ABCIシステムでは計算ノードを論理的に分割した資源タイプを利用して、ジョブにシステムリソースを割り当てます。 ジョブを投入/実行する際には、資源タイプ名を指定します。

資源タイプ 資源タイプ名 説明 割り当て物理CPUコア数 割り当てGPU数 メモリ (GiB) ローカルストレージ (GB) 資源タイプ課金係数
Full rt_F ノード占有 40 4 360 1440 1.00
G.large rt_G.large ノード共有
GPU利用
20 4 240 720 0.90
G.small rt_G.small ノード共有
GPU利用
5 1 60 180 0.30
C.large rt_C.large ノード共有
CPUのみ利用
20 0 120 720 0.60
C.small rt_C.small ノード共有
CPUのみ利用
5 0 30 180 0.20

複数ノードを使用するジョブを実行する場合は、計算ノードを占有する資源タイプrt_Fを指定してください。

Warning

ノード共有の資源タイプでは、ジョブのプロセス情報は同一ノードで実行されている他のジョブから参照可能となります。 他のジョブから参照させたくない場合、資源タイプrt_Fを指定しノード占有でジョブを実行ください。

サービス毎に利用可能な資源タイプ名および個数を以下に示します。

サービス名 資源タイプ名 個数の範囲
Spot rt_F 1-512
rt_G.large 1
rt_G.small 1
rt_C.large 1
rt_C.small 1
On-demand rt_F 1-32
rt_G.large 1
rt_G.small 1
rt_C.large 1
rt_C.small 1
Reserved rt_F 1-予約ノード数
rt_G.large 1
rt_G.small 1
rt_C.large 1
rt_C.small 1

サービス毎のジョブ経過時間制限を以下に示します。

サービス名 資源タイプ名 経過時間制限 (上限値/デフォルト)
Spot rt_F 72:00:00/1:00:00
rt_G.large, rt_C.large 72:00:00/1:00:00
rt_G.small, rt_C.small 168:00:00/1:00:00
On-demand rt_F 12:00:00/1:00:00
rt_G.large, rt_C.large 12:00:00/1:00:00
rt_G.small, rt_C.small 12:00:00/1:00:00
Reserved rt_F 無制限
rt_G.large, rt_C.large 無制限
rt_G.small, rt_C.small 無制限

SpotおよびOn-demandで複数ノードを使用するジョブを実行する場合、ノード時間積(使用ノード数 × 実行時間)に以下の制約がかかります。

サービス名 ノード時間積の最大値
Spot 2304 nodes · hours
On-demand 12 nodes · hours

ジョブサービスジョブにおけるジョブ投入数および実行数制限は以下の通りです。

制限項目 制限値
アレイジョブあたりの最大投入可能タスク数 75000
ABCI アカウントあたりの同時投入可能ジョブ数 1000
ABCI アカウントあたりの同時実行ジョブ数 200

Spotサービスでは、POSIX優先度を指定することで他ジョブより優先的に実行することが可能です。

サービス名 説明 POSIX優先度 POSIX優先度課金係数
Spot デフォルト値 -500 1.0
優先実行 -400 1.5

SpotサービスおよびOn-demandサービス毎の使用ABCIポイントの計算式は以下の通りです。

ABCI point = サービス課金係数
           × 資源タイプ課金係数
           × 資源タイプ個数
           × POSIX 優先度課金係数
           × max(経過時間[秒], 最低経過時間[秒]) / 3600

Note

  • 小数点5位以下は切り捨てられます。
  • 最低経過時間より短い経過時間ジョブを実行した場合、ABCIポイントは最低経過時間を元に計算されます。

Reservedサービス毎の使用ABCIポイントの計算式は以下の通りです。

ABCI point = サービス課金係数
           × 予約ノード数
           × 予約日数 × 24

3.3. ジョブ実行オプション

バッチ利用の場合は、qsubコマンドを使用します。 インタラクティブ利用の場合は、qrshコマンドを使用します。

qsubコマンドおよびqrshコマンドの主要なオプションを以下に示します。

オプション 説明
-g group ABCI利用グループをgroupで指定します。
-l resource_type=num 資源タイプresource_typeと、その個数numを指定します。本オプションは指定必須です。
-l h_rt=[HH:MM:]SS 経過時間制限値を指定します。[HH:MM:]SS*で指定することができます。ジョブの実行時間が指定した時間を超過した場合、ジョブは強制終了されます。
-N name ジョブ名をnameで指定します。デフォルトは、ジョブスクリプト名です。
-o stdout_name 標準出力名をstdout_nameで指定します。
-p priority SpotサービスでPOSIX優先度をpriorityで指定します。
-e stderr_name 標準エラー出力名をstderr_nameで指定します。
-j y 標準エラー出力を標準出力にマージします。
-m a ジョブが実行中止された場合にメールを送信します。
-m b ジョブ実行開始時にメールを送信します。
-m e ジョブ実行終了時にメールを送信します。
-t n[-m[:s]] アレイジョブのタスクIDをn[-m[:s]]で指定します。nは開始番号、mは終了番号、sはステップサイズを表します。
-hold_jid job_id 依存関係にあるジョブIDをjob_idで指定します。指定された依存ジョブが終了するまでジョブは実行開始されません。
-ar ar_id 予約した計算ノードを利用する際に予約ID(AR-ID)をar_idで指定します。

3.4. インタラクティブ利用

インタラクティブジョブを実行する場合は、qrshコマンドを使用します。 インタラクティブジョブ実行時にABCIポイントが不足している場合、インタラクティブジョブの実行に失敗します。

$ qrsh -g group -l resource_type=num [options]

例) インタラクティブジョブを実行

[username@es1 ~]$ qrsh -g grpname -l rt_F=1
[username@g0001 ~]$ 

X Window を利用するアプリケーションを実行する場合は、 インタラクティブノードへX転送を有効にして(-Xもしくは-Yオプションを指定して)ログインします。

[yourpc ~]$ ssh -XC -p 10022 -l username localhost

インタラクティブジョブを投入する際に-pty yes -display $DISPLAY -v TERM /bin/bashを指定します。

[username@es1 ~]$ qrsh -g grpname -l rt_F=1 -pty yes -display $DISPLAY -v TERM /bin/bash
[username@g0001 ~]$ xterm <- Xアプリケーションを起動

3.5. バッチ利用

ABCIシステムをバッチ利用する場合、実行するプログラムとは別にジョブスクリプトを作成します。 ジョブスクリプトには利用する資源タイプ名、経過時間制限値などの資源などのジョブ実行オプションを記述した上で、 実行するコマンド列を記載します。

#!/bin/bash

#$ -l rt_F=1
#$ -l h_rt=1:23:45
#$ -j y
#$ -cwd

[Environment Modules の初期化]
[Environment Modules の設定]
[プログラムの実行]

例) CUDAを利用したプログラムを実行するジョブスクリプト例

#!/bin/bash

#$-l rt_F=1
#$-j y
#$-cwd

source /etc/profile.d/modules.sh
module load cuda/9.2/9.2.88.1
./a.out

3.5.1. バッチジョブの投入

バッチジョブを実行する場合、qsubコマンドを使用します。 バッチジョブ投入時にABCIポイントが不足している場合、バッチジョブの投入に失敗します。

$ qsub -g group [options] script_name

例) ジョブスクリプトrun.shをバッチジョブとして投入

[username@es1 ~]$ qsub -g grpname run.sh
Your job 12345 ("run.sh") has been submitted

Warning

-gオプションは、ジョブスクリプト内には指定できません。

3.5.2. バッチジョブの状態の確認

バッチジョブを状態を確認するには、qstatコマンドを利用します。

$ qstat [options]

qstatコマンドの主要なオプションを以下に示します。

オプション 説明
-r ジョブのリソース情報を表示します。
-j ジョブに関する追加情報を表示します。

例)

[username@es1 ~]$ qstat
job-ID     prior   name       user         state submit/start at     queue                          jclass                         slots ja-task-ID
------------------------------------------------------------------------------------------------------------------------------------------------
     12345 0.25586 run.sh     username     r     06/27/2018 21:14:49 gpu@g0001                                                        80
項目 説明
job-ID ジョブID
prior ジョブ優先度
name ジョブ名
user ジョブのオーナー
state ジョブ状態 (r: 実行中、qw: 待機中、d: 削除中、E: エラー状態)
submit/start at ジョブ投入/開始時刻
queue キュー名
jclass ジョブクラス名
slots ジョブスロット数 (ノード数 x 80)
ja-task-ID アレイジョブのタスクID

3.5.3. バッチジョブの削除

バッチジョブを削除するには、qdelコマンドを利用します。

$ qdel job_id

例) バッチジョブを削除

[username@es1 ~]$ qstat
job-ID     prior   name       user         state submit/start at     queue                          jclass                         slots ja-task-ID
------------------------------------------------------------------------------------------------------------------------------------------------
     12345 0.25586 run.sh     username     r     06/27/2018 21:14:49 gpu@g0001                                                        80
[username@es1 ~]$ qdel 12345
username has registered the job 12345 for deletion

3.5.4. バッチジョブの標準出力と標準エラー出力

バッチジョブの標準出力ファイルと標準エラー出力ファイルは、ジョブ実行ディレクトリもしくは、 ジョブ投入時に指定されたファイルに出力されます。 標準出力ファイルにはジョブ実行中の標準出力、標準エラー出力ファイルにはジョブ実行中のエラーメッセージが出力されます。 ジョブ投入時に、標準出力ファイル、標準エラー出力ファイルを指定しなかった場合は、以下のファイルに出力されます。

  • (job_name).o(job_id) --- 標準出力ファイル
  • (job_name).e(job_id) --- 標準エラー出力ファイル

例)ジョブ名がrun.sh、ジョブIDが12345の場合

  • 標準出力ファイル名:run.sh.o12345
  • 標準エラー出力ファイル名:run.sh.e12345

3.5.5. バッチジョブの統計情報出力

バッチジョブの統計情報を出力するには、qacctコマンドを利用します。

$ qacct [options]

qacctコマンドの主要なオプションを以下に示します。

オプション 説明
-g group groupのジョブに関する情報を表示します。
-j job_id job_idのジョブに関する情報を表示します。
-t n[-m[:s]] アレイジョブのタスクIDをn[-m[:s]]で指定します。指定されたタスクIDにマッチするジョブの情報のみ表示されます。本オプションは-jオプションを指定した場合のみ使用可能です。

例) バッチジョブの統計情報を参照

[username@es1 ~]$ qacct -j 12345
==============================================================
qname        gpu
hostname     g0001
group        group 
owner        username
project      group 
department   group
jobname      run.sh
jobnumber    12345
taskid       undefined
account      username
priority     0
cwd          NONE
submit_host  es1.abci.local
submit_cmd   /bb/system/uge/latest/bin/lx-amd64/qsub -P username -l h_rt=600 -l rt_F=1
qsub_time    07/01/2018 11:55:14.706
start_time   07/01/2018 11:55:18.170
end_time     07/01/2018 11:55:18.190
granted_pe   perack17
slots        80
failed       0
deleted_by   NONE
exit_status  0
ru_wallclock 0.020
ru_utime     0.010
ru_stime     0.013
ru_maxrss    6480
ru_ixrss     0
ru_ismrss    0
ru_idrss     0
ru_isrss     0
ru_minflt    1407
ru_majflt    0
ru_nswap     0
ru_inblock   0
ru_oublock   8
ru_msgsnd    0
ru_msgrcv    0
ru_nsignals  0
ru_nvcsw     13
ru_nivcsw    1
wallclock    3.768
cpu          0.022
mem          0.000
io           0.000
iow          0.000
ioops        0
maxvmem      0.000
maxrss       0.000
maxpss       0.000
arid         undefined
jc_name      NONE

主な表示項目は以下の通りです。 その他項目の詳細はman sge_accountingを参照ください。

項目 説明
jobnunmber ジョブID
taskid アレイジョブのタスクID
qsub_time ジョブの実行投入時刻
start_time ジョブの実行開始時刻
end_time ジョブの実行終了時刻
failed ジョブスケジューラのジョブ終了コード
exit_status ジョブの終了ステータス
wallclock ジョブの実行時間(前後処理を含む)

3.5.6. 環境変数

ジョブ実行中に、ジョブスクリプトもしくはコマンドラインで利用できる環境変数は以下の通りです。

環境変数 説明
ENVIRONMENT ジョブの場合、"BATCH"が割り当てられる
JOB_ID ジョブID
JOB_NAME ジョブ名
JOB_SCRIPT ジョブスクリプト名
NHOSTS ジョブに割り当てられたホスト数
PE_HOSTFILE ジョブに割り当てられたホスト、スロット、キュー名が記載されたファイルへのパス
RESTARTED ジョブが再実行された場合は1、それ以外は0
SGE_JOB_HOSTLIST ジョブに割り当てられたホストが記載されたファイルへのパス
SGE_LOCALDIR ジョブに割り当てられたローカルストレージへのパス
SGE_O_WORKDIR ジョブ投入時の作業ディレクトリへのパス
SGE_TASK_ID アレイジョブのタスクID(アレイジョブでない場合は"undefined")
SGE_TASK_FIRST アレイジョブの最初のタスクID
SGE_TASK_LAST アレイジョブの最後のタスクID
SGE_TASK_STEPSIZE アレイジョブのステップサイズ

3.6. 事前予約

Reservedサービスでは、計算ノードを事前に予約することができ、計画的なジョブ実行が可能となります。

項目 説明
最小予約日数 1日
最大予約日数 30日
システムあたりの最大同時予約可能ノード数 442ノード
1予約あたりの最大予約ノード数 32
1予約あたりの最大予約ノード時間積 12,288ノード時間積
予約受付開始時刻 30日前の午前10時
予約受付締切時刻 予約開始前日の午後9時
予約取消受付期間 予約開始前日の午後9時
予約開始時刻 予約開始日の午前10時
予約終了時刻 予約終了日の午前9時30分

3.6.1. 予約の実行

Warning

計算ノードの予約は、利用責任者もしくは利用管理者のみが実施できます。

計算ノードを予約するには、ABCI利用ポータルもしくはqrsubコマンドを使用します。

$ qrsub options
オプション 説明
-a YYYYMMDD 予約開始日をYYYYMMDDで指定します。
-d days 予約日数をdaysで指定します。 -eオプションとは排他です。
-e YYYYMMDD 予約終了日をYYYYMMDD指定します。-dオプションとは排他です。
-g group ABCI利用グループをgroupで指定します。
-N name 予約名をnameで指定します。英数字およびアンダーバーのみ指定可能で、最大64文字まで指定できます。
-n nnnode 予約するノード数をnnnodeで指定します。

例) 2018年7月5日から1週間 (7日間) 計算ノード4台を予約

[username@es1 ~]$ qrsub -a 20180705 -d 7 -g grpname -n 4 -N "Reserve_for_AI"
Your advance reservation 12345 has been granted

計算ノードの予約が完了した時点でABCIポイントを消費します。

3.6.2. 予約状態の確認

予約状態を確認するには、ABCI利用ポータルもしくはqrstatコマンドを使用します。

例)

[username@es1 ~]$ qrstat
ar-id      name       owner        state start at             end at               duration    sr
----------------------------------------------------------------------------------------------------
     12345 Reserve_fo root         w     07/05/2018 10:00:00  07/12/2018 09:30:00  167:30:00    false
項目 説明
ar-id 予約ID (AR-ID)
name 予約名
owner 常にrootと表示
state 予約状態
start at 予約開始日 (予約開始時刻は常に午前10時)
end at 予約終了日 (予約終了時刻は常に午前9時30分)
duration 予約期間 (hhh:mm:ss)
sr 常にfalseと表示

システムあたりの予約可能ノード数を確認するには、ABCI利用ポータルもしくはqrstatコマンドの--availableオプションを使用します。

[username@es1 ~]$ qrstat --available
06/27/2018  441
07/05/2018  432
07/06/2018  434

Note

計算ノードが予約されていない日付は表示されません。

3.6.3. 予約の取り消し

Warning

予約の取消は利用責任者もしくは利用管理者のみが実施できます。

予約を取り消すには、ABCI利用ポータルもしくはqrdelコマンドを使用します。

例) 予約を取消

[username@es1 ~]$ qrdel 12345