編集不可のページ History 添付ファイル

 

ページ名: "HowToSubmitJob"の差分
11と12のリビジョン間の差分
2019-09-09 06:11:47時点のリビジョン11
サイズ: 16454
編集者: hitachi04
コメント:
2019-09-09 06:36:25時点のリビジョン12
サイズ: 16511
編集者: hitachi04
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 479: 行 479:

行 485: 行 483:
(1) ジョブの状態表示 (1) ジョブキューの状態表示
{{{
qstat -q
}}}

(2) ジョブの状態表示
行 490: 行 493:
(2) ジョブのリソース割当て状況やQueue状態での待ち要因を表示 (3) ジョブのリソース割当て状況やQueue状態での待ち要因を表示
行 495: 行 498:
(3) 空きリソースの確認 (4) 空きリソースの確認

ジョブの実行

バッチジョブ

ジョブ投入方法

PBS Professional用の実行スクリプトを作成し,qsubコマンドで次のようにジョブを投入します.

$ qsub -q キュー名 実行スクリプト名

例えば,研究用キューgSrchqにジョブを投入する場合は次のようにします.

$ qsub -q gSrchq 実行スクリプト名

並列数の指定は,実行スクリプト中で次のように行います.

#PBS -l select=使用ノード数:mpiprocs=1ノードあたりの並列数

例:1ノードを利用し,ノード内の並列数を16とした場合

#PBS -l select=1:mpiprocs=16

例:4ノードを利用し,各ノード内の並列数を16とした場合

#PBS -l select=4:mpiprocs=16

利用するメモリ容量を指定して実行したい場合は,実行スクリプト中で次のように記述します.

#PBS -l select=使用ノード数:mem=ノードあたりのメモリ容量:mpiprocs=1ノードあたりの並列数:

例:1ノードを利用し,ノード内の並列数を16,ジョブあたりのメモリ容量を16GBとした場合

#PBS -l select=1:mem=16gb:mpiprocs=16

利用する演算ノードを指定して実行したい場合は,次のように記述します.

#PBS -l select=1:vnode=ホストA:mpiprocs=ホストAでの並列数+1:vnode=ホストB:mpiprocs=ホストBでの並列数,・・・

例:演算ノードxsnd10,xsnd11を利用し,各ノード内の並列数を16とした場合

#PBS -l select=1:vnode=xsnd10:mpiprocs=16+vnode=xsnd11:mpiprocs=16

* 演算ノードのホスト名はzsnd00~xsnd13です(システム構成-ハードウェア構成 参照).

* xsnd00~xsnd13はTesla V100を各2枚搭載しています.

GPGPUを指定して実行したい場合は,次のように記述します.ngpusにはノードあたりのGPU数(0~2)を指定します。 (GPGPUはgSrchq, gLrchq, gEduqで使用可能です)

#PBS -l select=1:ngpus=<GPU数>

ジョブ実行時間を指定して実行したい場合は,次のように記述します.

#PBS -l walltime=hh:mm:ss

例:ジョブ実行時間を336時間とする場合

#PBS -l walltime=336:00:00

qsubコマンドの主なオプションを以下に示します.

オプション

使用例

意味

-e

-e filename

標準エラー出力の内容を指定されたファイル名に出力する.-eオプションが指定されていない場合は,qsubコマンドが実行されたディレクトリ上に作成される.その際のファイル名は“ジョブ名.eジョブ番号”になる.

-o

-o filename

標準出力の内容を指定されたファイル名に出力する.-oオプションが指定されていない場合は,qsubコマンドが実行されたディレクトリ上に作成される.その際のファイル名は“ジョブ名.oジョブ番号”になる.

-j

-j join

標準出力,標準エラー出力を1個のファイルにマージするかしないかの動作を指定する.
-j oe:標準出力に標準エラー出力をマージする
-j eo:標準エラー出力に標準出力をマージする
-j n: 標準出力と標準エラー出力をマージしない(デフォルト)

-q

-q destination

ジョブを投入するキューを指定する.

-l

-l resource_list

ジョブの実行に必要なリソース資源を指定する.

-N

-N name

ジョブ名を指定する(文字数は15文字まで).デフォルトはスクリプトでジョブが投入された場合は,スクリプトのファイル名となる.そうでない場合は,“STDIN”になる.

-m

-m mail_events

ジョブの状態をメールで通知する指定を行う.
-m n:メールを送信しない
-m a:異常終了時
-m b:処理開始時
-m e:処理終了時

-M

-M user_list

メールを送信するメールアドレスを指定する.

-v

-v DOCKER_IMAGE=<image>

指定したDockerイメージ上でジョブを実行.

-v SINGULARITY_IMAGE=<image>

指定したSingularityイメージ上でジョブを実行.

-I

-I

インタラクティブ(対話型)ジョブを実行します.

サンプルスクリプト:Intel MPI - Intelコンパイラを使用する場合

### sample
#!/bin/sh
#PBS -q gSrchq
#PBS -l select=1:ncpus=4:host=xsnd01
#PBS -v DOCKER_IMAGE=prg-env:2019.08

source /etc/profile
cd $PBS_O_WORKDIR

mpirun -np 4 ./a.out

* ジョブの投入先(gSrchq)はスクリプト内でも指定できます.

サンプルスクリプト:OpenMPI - Intelコンパイラを使用する場合

### sample
#!/bin/sh
#PBS -q gSrchq
#PBS -l select=1:ncpus=4:host=xsnd01
#PBS -v DOCKER_IMAGE=prg-env:2019.08

source /etc/profile

module unload intelmpi.intel
module load openmpi.intel

cd $PBS_O_WORKDIR

mpirun -np 4 ./a.out

* ジョブの投入先(gSrchq)はスクリプト内でも指定できます.

サンプルスクリプト:GPGPUプログラムを利用する場合

### sample
#!/bin/sh
#PBS -q gSrchq
#PBS -l select=1:ncpus=1:ngpus=2:host=xsnd01
#PBS -v DOCKER_IMAGE=prg-env:2019.08

cat $PBS_NODEFILE

./cuda-sample-program

ANSYS Multiphysicsジョブ

シングルジョブ

以下に,実行スクリプト例を示します.

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=1
#PBS -q wSrchq

module load ansys14.5

cd $PBS_O_WORKDIR

ansys145 -b nolist -p AA_T_A -i vm1.dat -o vm1.out -j vm1

*vm1.datは/common/ansys14.5/ansys_inc/v145/ansys/data/verifにあります.

並列ジョブ

以下に,実行スクリプト例を示します.

例:Shared Memory ANSYSを用いる場合

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=4
#PBS -q wSrchq

module load ansys14.5

cd $PBS_O_WORKDIR

ansys145 -b nolist -p AA_T_A -i vm141.dat -o vm141.out -j vm141 -np 4

例:Distributed ANSYSを用いる場合

### sample
#!/bin/sh
#PBS -l nodes=2:ppn=2
#PBS -q wSrchq

module load ansys14.5

cd $PBS_O_WORKDIR

ansys145 -b nolist -p AA_T_A -i vm141.dat -o vm141.out -j vm141 -np 4 -dis

*vm141.datは/common/ansys14.5/ansys_inc/v145/ansys/data/verifにあります.

ANSYS HFSSジョブ

ANSYS HFSS利用マニュアルに利用方法の詳細が説明されています。 そちらをご参照下さい。

ANSYS CFXジョブ

シングルジョブ

以下に,実行スクリプト例を示します.

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=1
#PBS -q wSrchq

module load ansys14.5

cd $PBS_O_WORKDIR

cfx5solve -def StaticMixer.def

*StaticMixer.defは/common/ansys14.5/ansys_inc/v145/CFX/examplesにあります.

並列ジョブ

以下に,実行スクリプト例を示します.

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=4
#PBS -q wSrchq

module load ansys14.5

cd $PBS_O_WORKDIR

cfx5solve -def StaticMixer.def -part 4 -start-method 'Intel MPI Local Parallel'

*StaticMixer.defは/common/ansys14.5/ansys_inc/v145/CFX/examplesにあります.

ABAQUSジョブ

シングルジョブ

以下に,実行スクリプト例を示します.

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=1
#PBS -q wSrchq

module load abaqus-6.12-3

cd $PBS_O_WORKDIR

abaqus job=1_mass_coarse

*1_mass_coarse.inpは/common/abaqus-6.12-3/6.12-3/samples/job_archive/samples.zipにあります.

COMSOL Multiphysicsジョブ

<=★ 実行方法を確認後、記載する

GAUSSIANジョブ

サンプル入力ファイル(methane.com)

%NoSave
%Mem=512MB
%NProcShared=4
%chk=methane.chk
#MP2/6-31G opt

methane

0  1
 C                 -0.01350511    0.30137653    0.27071342
 H                  0.34314932   -0.70743347    0.27071342
 H                  0.34316773    0.80577472    1.14436492
 H                  0.34316773    0.80577472   -0.60293809
 H                 -1.08350511    0.30138971    0.27071342

シングルジョブ

以下に,実行スクリプト例を示します.

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=1
#PBS -q wSrchq

module load gaussian09-C.01

cd $PBS_O_WORKDIR

g09 methane.com

並列ジョブ

以下に,実行スクリプト例を示します.

### sample
#!/bin/sh
#PBS -l nodes=1:ppn=4,mem=3gb,pvmem=3gb
#PBS -q wSrchq

cd $PBS_O_WORKDIR

module load gaussian09-C.01

g09 methane.com

インタラクティブジョブ

ジョブ投入方法

qsubの-Iオプションを使用することで、対話型にジョブを実行することができます。 下記の例では2CPUコア、メモリ16GiB、1GPUをのリソースを割当て、bashを起動しジョブの中で対話型操作(ホスト名確認、GPU確認)を行う場合の例です。GPGPUはジョブに割当てられたGPGPUのみ表示されます。

-bash-4.2$ qsub -I -q gSrchq -l select=1:ncpus=2:mem=16g:ngpus=1 -- bash
qsub: waiting for job 578.xregistry0 to start
qsub: job 578.xregistry0 ready

bash-4.2$ uname -n
xsnd00.edu.tut.ac.jp
bash-4.2$ nvidia-smi
Thu Sep  5 19:58:48 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| 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-PCIE...  On   | 00000000:3B:00.0 Off |                    0 |
| N/A   30C    P0    23W / 250W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

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

qsub: job 578.xregistry0 completed

GaussView

以下のコマンドを実行します.

$ gview

画面が起動します.

Patran

以下のコマンドを実行します.

$ patran

画面が起動します.

コンテナイメージの指定

DockerまたはSingularityコンテナ上でジョブを実行することが可能です。 Dockerを使用する場合は-v DOCKER_IMAGE=<イメージ名>、Singularityを使用する場合はSINGULARITY_IMAGE=<イメージ名>を指定してジョブを起動します。 指定可能なイメージ名は下記コマンドで確認できます。

-bash-4.2$ showimages
conda3/chainer:6.3.0-ompi
nvcr.io/nvidia/caffe:19.07-py2
nvcr.io/nvidia/caffe2:18.08-py3
nvcr.io/nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
nvcr.io/nvidia/digits:19.07-caffe
nvcr.io/nvidia/mxnet:19.07-py3
nvcr.io/nvidia/pytorch:19.07-py3
nvcr.io/nvidia/tensorflow:19.07-py2
nvcr.io/nvidia/tensorflow:19.07-py3
nvidia/cuda:10.1-cudnn7-devel-centos7
prg-env:2019.08

Dockerジョブの実行例

DockerジョブはDOCKER_IMAGEで指定したイメージのコンテナを作成し、コンテナ上でジョブを起動します。 Dockerイメージにサービス(EntryPoint)がある場合は、各サービスにアクセスするIPアドレス:ポート番号が表示されます。Dockerジョブのホスト名は<割当ノード名>-<ジョブ番号>になります。 下記の例ではTensorflowコンテナ上でbashを起動し、pythonでTensorflowをインポートしています。

-bash-4.2$ qsub -I -q gSrchq select=1:ncpus=2:mem=16g:ngpus=1 \
  -v DOCKER_IMAGE=nvcr.io/nvidia/tensorflow:19.07-py3 -- bash
qsub: waiting for job 580.xregistry0 to start
qsub: job 580.xregistry0 ready

Access Port:
        <proto>://133.15.52.212:6142/ -> container port 6064
        <proto>://133.15.52.212:6227/ -> container port 8888
        <proto>://133.15.52.212:6427/ -> container port 6006

z991212@xsnd00-580-xregistry0:/home/home1/z991212$ uname -n
xsnd00-580-xregistry0
z991212@xsnd00-580-xregistry0:/home/home1/z991212$ python -c "import tensorflow"
2019-09-05 11:19:08.962826: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
z991212@xsnd00-580-xregistry0:/home/home1/z991212$ exit
exit

qsub: job 580.xregistry0 completed

Singularityジョブの実行例

SingularityジョブはSINGULARITY_IMAGEで指定したイメージのコンテナを作成し、コンテナ上でジョブを起動します。 Singularityではイメージ内のサービス(EntryPoint)は使用できません。Singularityジョブのホスト名は通常ジョブと同様に<割当てノード名>になります。 下記の例ではTensorflowコンテナ上でbashを起動し、pythonでTensorflowをインポートしています。

-bash-4.2$ qsub -I -q gSrchq -l select=1:ncpus=2:mem=16g:ngpus=1 \
  -v SINGULARITY_IMAGE=nvcr.io/nvidia/tensorflow:19.07-py3 -- bash
qsub: waiting for job 581.xregistry0 to start
qsub: job 581.xregistry0 ready

[singularity] version=3.3.0-1, image=nvcr.io/nvidia/tensorflow:19.07-py3
z991212@xsnd00:/home/home1/z991212$ uname -n
xsnd00.edu.tut.ac.jp
z991212@xsnd00:/home/home1/z991212$ python -c "import tensorflow"
2019-09-05 20:20:25.580823: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudart.so.10.1
z991212@xsnd00:/home/home1/z991212$ exit
exit

qsub: job 581.xregistry0 completed

利用リソースの指定

ジョブで使用するリソースを投入するキューの標準値以外を使用する場合は-lオプションで指定します。 各キューの標準/最大リソースは下記コマンドで確認できます。

qstat -Qf <キュー名>

-lオプションで指定可能な主なリソースは下記の通りです。

リソース名

説明

|| select || ノード数 || 1以上の整数 ||

ncpus

CPUコア数/ノード

1以上の整数

mem

メモリ使用量/ノード

整数<mb|gb>

ngpus

GPU使用数/ノード

0以上の整数

walltime

最大実行時間

HH:MM:SS

ジョブのリソースを指定する-lオプションはwalltimeとリソース指定を別々に指定する必要があります。 (1) 最大実行時間を30分、1ノードあたり4CPUコア、メモリ16GB、2GPUのリソースを使用する場合

#PBS -q gSrchq
#PBS -l select=1:ncpus=4:mem=16g:ngpus=2
#PBS -l walltime=00:30:00

cd ${PBS_O_HOME}
./a.out

ジョブの管理

ジョブの状態を確認する

ジョブ,キューの状態確認にはqstatコマンドを利用します.

(1) ジョブキューの状態表示

qstat -q

(2) ジョブの状態表示

qstat

(3) ジョブのリソース割当て状況やQueue状態での待ち要因を表示

qstat -asw

(4) 空きリソースの確認

pbsnodes -ajS

投入したジョブをキャンセルする

ジョブのキャンセルにはqdelコマンドを使用します.

qdel jobID

job IDはqstatコマンドより確認してください.

Running状態ジョブがキャンセルできない場合は下記コマンドで強制的にジョブを終了することができます。

qdel -Wforce jobID