サイトポリシー サイトマップ
2019 年 10 月 16 日

PageTop

UGEのその他の利用方法について

以下に基本的利用方法で記載しなかった、その他のUGE利用方法について記述します。各コマンド、利用法の詳細については、マニュアルページ(スーパーコンピュータユーザのみ参照可能)のUGEマニュアルも参照してください。

MPIジョブの投入方法
ジョブの使用メモリ量を指定してジョブを投入する方法
マルチスレッド動作、複数プロセスを起動するジョブの投入方法
マルチスレッド、MPI並列動作をするジョブに対して、メモリ要求量を明示する場合の注意事項
アレイジョブの投入方法
GPUを使用するジョブの投入方法
クラスタ全体の混雑状況の確認方法
ジョブの実行結果の確認方法
GUIでジョブを投入したい場合

 


MPIジョブの投入方法

すべての計算ノードは、UGEの管理下に有る為MPIジョブ起動時にはMPI環境とUGEを連携させる必要が有ります。 MPIプログラムとUGEを連携させる為の環境としてparallel environment(PE)という環境をUGEに設定しておりこれを利用して ジョブを投入して頂きます。本システム上では以下の種類のPEを設定しています。

PE名設定されたPEの意味(スロットの割り当てポリシー)
mpi 極力多数のノード上に子プロセスを起動しようとする。
mpi-fillup 極力少数のノードに子プロセスを充填して起動しようとする。
mpi_4 1ノード当り4プロセスを起動するようにする。
mpi_8 ノード当り8プロセスを起動しようとする。

プロセスのメモリ使用量など、計算資源の利用状況を検討した上で、上のPEから利用したい環境を選択します。 選択したら、それをジョブスクリプトに"-pe pe環境名 並列数"という形式で記述します。

#$ -S /bin/bash
#$ -N Ray
#$ -pe mpi-fillup 60-80
/usr/local/bin/mpirun -np $NSLOTS -machinefile $TMPDIR/machines /home/username/Ray-1.7/Ray  \
-p /home/username/scratch/SRR033552_1.fastq /home/username/scratch/SRR033552_2.fastq \
-p /home/username/scratch/SRR033553_1.fastq /home/username/scratch/SRR033553_2.fastq \
(以下略)
    

MPIプログラムを起動する時、プログラムをどのくらいの並列数で起動するかを指定する並列数と、どのホストに 起動するかを定義するマシンファイルをmpirunコマンドに渡す必要が有ります。 UGE環境下では指示行に-peを指定すると、UGEが指定されたポリシーに適合する空いているノード(ジョブスロット)を確認し、 並列数($NSLOTS)とマシンファイル($TMPDIR/machines)を自動生成し、これをジョブスクリプトに与えます。 上記の例では、並列数を範囲指定しています。範囲指定をした場合、指定した範囲の中で空いているスロット数 をUGEが判別し、並列数とマシンファイルを自動生成します。


ジョブの使用メモリ量を指定してジョブを投入する方法

ジョブ管理システムに投入されるジョブが利用可能な仮想メモリ容量は、デフォルトでは8GBに制限されています。 この制限を超えるような仮想メモリ容量を要求するようなジョブは、ジョブ投入時に明示的に必要な仮想メモリ容量を 要求して投入します。以下のように"-l"オプションで指定してジョブを投入します。

[username@at027 ~]$ qsub -l s_vmem=8G -l mem_req=8G test.sh
    

この例では1ジョブで8GBのメモリの使用を要求してジョブを投入しています。ここで指定している"s_vmem"、"mem_req"は 以下の意味を持ちます。

 

項目名意味
s_vmem 投入ジョブが指定する仮想メモリの上限値を宣言する。ここで宣言した値はジョブの実行環境に適用され、 この値を超えてジョブが動作しようとするとジョブがkillされる。
mem_req 使用するメモリの量を宣言する。

また例えば、Mediumノード上で 1ジョブで128GBのメモリを使用するジョブを投入する場合は、

[username@at027 ~]$ qsub -l s_vmem=128G -l mem_req=128G -l medium test.sh

というようにメモリを明示的に要求してジョブを投入します。


マルチスレッド動作、複数プロセスを起動するジョブの投入方法について

プロセスとしては1つだが、マルチスレッド動作をしてCPUコアを複数使うようなプログラムや、MPI並列プログラムでは ないが親プロセスが子プロセスを複数起動して処理を行うようなプログラムの為に、"def_slot"という PEを定義しています。以下のように、def_slotの後に利用するコア数(スロット数)を指定します。

    qsub -pe def_slot 4 test.sh
    

マルチスレッド、MPI並列動作をするジョブに対して、メモリ要求量を明示する場合の注意事項

メモリ要求を明示するジョブ投入方法と、PE環境を併用する場合の注意点についてご説明します。MPI並列環境(mpi)、スレッド並列環境(def_slot) を指定して、かつ、-l s_vmem、-l mem_reqを指定した場合、並列環境で指定した並列数と指定したメモリ量が掛け合わされた容量のメモリをシステム に要求してジョブが投入されます。例えば、

    -pe def_slot 8 -l s_vmem=8G -l mem_req=8G
    -pe mpi_fillup 8 -l s_vem=8G -l mem_req=8G
    

と指定した場合、8GBのメモリを使用するプロセスを8個起動することを指定した意味となり、ジョブが使用するメモリ総量として8×8=64GBを指定したことになります。 その点について注意した上で指定する要求メモリ量を決定してください。


アレイジョブの投入方法

UGEはアレイジョブと呼ばれる概念を持ちます。 一度に多数のジョブをシステムに投入したい場合(パラメトリックスタディでパラメータを変えながらジョブを投げたい場合) はアレイジョブ機能を利用してください。決して、多数のジョブをそのまま投入しようとしないでください。システムを過負荷に陥れる場合があります。

例えば以下のように-tオプションを指定して投入します。 "-t 1-6:2"は、最小インデックス番号を1、最大インデックス番号を6とし、それに対して":2"を付加することで、1つ飛ばしのインデックス 番号を付けることを指定しています。この為、インデックス番号としては、1,3,5が指定されたことになります。これはqstatの出力の 各行の末尾に、タスクIDとして参照が可能となっています。

[username@at027 ~]$ qsub -t 1-6:2 arraytest.sh
Your job-array 10000.1-6:2 ("arraytest.sh") has been submitted
[username@at027 ~]$ qstat
job-ID     prior   name       user         state submit/start at     queue                jclass            slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------------------
     10000 0.25000 arraytest. username     r     03/04/2019 20:31:57 epyc.q@at095                                 1 1
     10000 0.25000 arraytest. username     r     03/04/2019 20:31:57 epyc.q@at095                                 1 3
     80430 0.25000 arraytest. username     r     03/04/2019 20:31:57 epyc.q@at095                                 1 5
	 

タスクIDは、ジョブスクリプト内で、SGE_TASK_IDという変数によって参照可能です。この為、アレイジョブ内の各タスクは、 SGE_TASK_IDの値を確認してそれぞれ異なる処理を行う。ということが可能です。例えばパラメトリックスタディをしたい場合、 ジョブスクリプト内で、SGE_TASK_IDを参照して、入力データを分割して切り替えるという処理を記述することによって対応することが 可能になります。


GPUを使用するジョブの投入方法

GPUを使用するジョブを投入する場合、"-l gpu"オプションの他"-l cuda=n"(nは使用するGPU数を指定。上限は4)オプションを付与します。"-l cuda=n"オプションを付与しない場合、ジョブはgpu.qに投入されますが、GPUは使用できません。

例えば2つのGPUを使用する場合、以下のように指定します。

[username@at027 ~]$ qsub -l gpu -l cuda=2 gputest.sh
Your job 10000 ("gputest.sh") has been submitted

GPUはジョブから、"cuda=n"で指定した数だけ参照可能です。

[username@at027 ~]$ cat gputest.sh
#!/bin/bash
#$ -S /bin/bash

nvidia-smi
[username@at027 ~]$ qsub -l gpu -l cuda=1 gputest.sh 
Your job 10001 ("gputest.sh") has been submitted
[username@at027 ~]$ qsub -l gpu -l cuda=2 gputest.sh 
Your job 10002 ("gputest.sh") has been submitted
[username@at027 ~]$ qsub -l gpu -l cuda=4 gputest.sh 
Your job 10003 ("gputest.sh") has been submitted
[username@at027 ~]$ cat gputesh.sh.o10001
Wed Mar  4 20:00:00 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26                 Driver Version: 410.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  On   | 00000000:15:00.0 Off |                    0 |
| N/A   32C    P0    39W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
[username@at027 ~]$ cat gputesh.sh.o10002
Wed Mar  4 20:00:00 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26                 Driver Version: 410.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  On   | 00000000:15:00.0 Off |                    0 |
| N/A   29C    P0    39W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100-SXM2...  On   | 00000000:16:00.0 Off |                    0 |
| N/A   30C    P0    39W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
[username@at027 ~]$ cat gputesh.sh.o10003
Wed Mar  4 20:00:00 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26                 Driver Version: 410.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  On   | 00000000:15:00.0 Off |                    0 |
| N/A   32C    P0    38W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100-SXM2...  On   | 00000000:16:00.0 Off |                    0 |
| N/A   32C    P0    39W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla V100-SXM2...  On   | 00000000:3A:00.0 Off |                    0 |
| N/A   30C    P0    39W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla V100-SXM2...  On   | 00000000:3B:00.0 Off |                    0 |
| N/A   31C    P0    37W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

クラスタ全体の混雑状況の確認方法

各キューのジョブの投入状況、キューの負荷状況等、全体を把握するのには、"qstat -g c"として確認することが 出来ます。

[username@at027 ~]$ qstat -g c
CLUSTER QUEUE                   CQLOAD   USED    RES  AVAIL  TOTAL aoACDS  cdsuE  
--------------------------------------------------------------------------------
epyc.q                            0.00      1      0   4159   4224      0     64 
gpu.q                             0.00      0      0     64    112      0     48 
intel.q                           0.00      0      0   1472   1472      0      0 
login.q                           0.00      4      0    380    384      0      0 
login_gpu.q                       0.00      0      0     48     48      0      0 
medium.q                          0.00      0      0    800    800      0      0 
short.q                           0.00      0      0    128    224      0     96 
    

ジョブの実行結果の確認方法

ジョブ実行終了後、そのジョブが使用したリソース量等の情報を確認するには"qreport"コマンドを使用します("qacct"コマンドでも確認できますが、可能な限り"qreport"コマンドをご利用願います)。

[username@at027 sh]$ qreport -j 80431
==============================================================
owner                username
jobnumber            100000
taskid               1
slots                1
pe_taskid            NONE
granted_pe           NONE
exit_status          0
failed               0
qname                epyc.q
hostname             at095
jobname              jobname
qsub_time            20YYMMDD-HH:50:54
start_time           20YYMMDD-HH:50:57
end_time             20YYMMDD-HH:51:57
ru_wallclock         0.15
cpu                  0.1
mem                  0.0
maxvmem              0.0G
r_mem                8.000G
r_q                  NONE
r_cpu                NONE
    

GUIでジョブを投入したい場合

qmonというコマンドがあります。詳細については、"man qmon"でオンラインマニュアルを確認して下さい。


その他の詳細について

UGEのユーザマニュアルを本システムのユーザ向けページに掲示しました。(マニュアルのページ)、詳細なオプション指定などについては、こちらもご参照ください。