OpenPBSに限らないがqsubで計算リソースを要請して合致した計算ノードにジョブが渡されるが
その時に mpirun で使用される machimefile が $PBS_NODEFILE として提供される。

実体はジョブIDをファイル名に持って「/var/lib/pbs/aux/156.pbs」とかになる。

その中身は

[saber@pbs ~]$ qsub -q bio -l nodes=1:ppn=4 -I
 
[saber@n01 ~]$ ls -l $PBS_NODEFILE
-rw-r--r-- 1 root root 224 Aug  4 23:34 /var/lib/pbs/aux/156.pbs
 
[saber@n01 ~]$ cat $PBS_NODEFILE
n01
n01
n01
n01
[saber@n01 ~]$

$PBS_NODEFILE は割り当てられた計算ノード(n01)の ppn 個数になる。

っでOpenPBSは以前からの継承で「-l nodes=XX:ppn=YY」フォーマットでリソース要求も受け付けるが、
もともとは「-l select=XX:ncpus=YY」とかの「select」で行う。このフォーマットを用いると

[saber@pbs ~]$ qsub -q bio -l select=1:ncpus=4 -I
 
[saber@n01 ~]$ cat $PBS_NODEFILE
n01
[saber@n01 ~]$

と一行しかない。これで「mpirun -machinefile $PBS_NODEFILE」としても4mpiなプログラムは動かない. 4つのプログラムを動かすのにどのcpuを使えと指示される machinefile で 1coreしか記載がないので

どうも正しくは「-l select=XX:ncpus=YY:mpiprocs=YY」が必要なようで

[saber@pbs ~]$ qsub -q bio -l select=1:ncpus=4:mpiprocs=4 -I
 
[saber@n01 ~]$ cat $PBS_NODEFILE
n01
n01
n01
n01
[saber@n01 ~]$

となる。一応「-l select=XX:mpiprocs=YY」と「ncpus=YY」を除いても $PBS_NODEFILE は同じような内容になるが、定義としては「-l select=XX:ncpus=YY:mpiprocs=YY」がいいみたい

「nodes=X:ppn=Y」ではダメなの?

別に構わない。
だが、OpenPBS/GPUのような hook 機能を使ってGPUリソースを占有したい場合、
「nodes=X:ppn=Y」なフォーマットは受け付けられないようで
-l select=YY:ncpus=YY:mpiprocs=YY:ngpus=ZZ」と「select」フォーマットでないとGPUリソースを定義する「ngpus=ZZ」が加えられない...

relionとcryoSPARCを共存で利用する場合は考慮が必要な個所かなと思っている

selectって何?

セットの数?言葉で難しい...ので事例で

[saber@pbs ~]$ qsub -q bio -l select=1:ncpus=2:mpiprocs=2 -I
 
[saber@n01 ~]$ cat $PBS_NODEFILE
n01
n01
[saber@n01 ~]$

と「-l select=1:ncpus=2:mpiprocs=2」なら2core占有できる。この時にselect=2にすると

[saber@pbs ~]$ qsub -q bio -l select=2:ncpus=2:mpiprocs=2 -I
 
[saber@n01 ~]$ cat $PBS_NODEFILE
n01
n01
n01
n01
[saber@n01 ~]$

と4つのcoreが占有できる. 「ncpus=2:mpiprocs=2」を単位としてそれをいくつ用意するかとなる. 1台の計算ノードのリソースを上回るなら同じqueueの中でもう一台の計算ノードからリソースが振り分けられる

[saber@pbs ~]$ qsub -q bio -l select=3:ncpus=2:mpiprocs=2 -I
 
[saber@n01 ~]$ cat $PBS_NODEFILE
n01
n01
n01
n01
n02
n02
[saber@n01 ~]$

次にGPUも交えて、「ncpus=2:mpiprocs=2:ngpus=1」と2core+1GPUのセットで2つ使いたい場合
「qsub -q bio -l select=2:ncpus=2:mpiprocs=2:ngpus=1」とするとGPUは2枚消費される。全体で4core+2GPU。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-08-05 (金) 00:30:41 (51d)