複数の CPU コアを使用するジョブは、使用する CPU コアの数を宣言して qsub します。利用者は、 qsub するジョブ (の中のプログラム) が使用する CPU の数を把握・制御し、その実行に十分なスロット数を AGE に宣言・要求しなければなりません。 1 スロットあたり 1 CPU コア、既定 2.1GB のメモリがあります。

計算ノードの搭載 CPU コア数とスロット数の関係

SHIROKANE の計算ノードのそれぞれには AGE のキュー に対応するキューインスタンスの役割があり、役割を果たすためにリソースを確保しジョブを実行するスロットを持ちます。

ある計算ノードにどのキューに対応するスロットがあるかは qstat コマンド-f オプションを付けることで表示できます。例えば計算ノード Thin の sc400 には以下のように mjobs.q が割り当てられています。

$ qstat -f | grep sc400
mjobs.q@sc400i                 BP    0/14/24        0.35     lx-amd64

出力結果の 3 列目の数字 (この例の場合は 0/14/24) は resv/used/tot. に説明があります。この例の sc400 の場合、「mjobs.q に対応する 24 スロットを持ち、そのうち 14 スロットで現在ジョブを実行している」ことが分かります。

計算ノードが持つスロット数は、その計算ノードが搭載している CPU コア数と一致しています。 1 スロットを使って実行されるジョブは最大で 1 CPU コアを計算に使うことを期待しています。qsub コマンドデフォルトでは、 1 ジョブは 1 スロットを確保します。複数の CPU コアを使うジョブは、使用する CPU コアと同じスロットの数を宣言、確保し実行しなければなりません。複数の CPU コアを使うジョブとは、マルチスレッドジョブや子プロセスを生成するジョブの内、それら複数のスレッドやプロセスがアクティブに動くジョブです。

  • プログラムが使用する CPU の数をまかなえるスロット数を要求せずに、複数の CPU コアを使うジョブを実行した場合、計算ノードが過負荷となります。

要求するスロット数の指定方法

ジョブが要求するスロット数は qsub コマンド-pe オプションの def_slot パラレルエンヴァイロメントで指定します。def_slot を指定しない場合、要求するスロット数は 1 です。

$ qsub -pe def_slot <スロット数> [ジョブスクリプト]

またはジョブスクリプト中に次のように記述します

...
#$ -pe def_slot <スロット数>
...

例えば 4 スロットを使用する (= 4 CPU コアを使用する) 場合は以下のように 4 スロットを要求し、 qsub コマンドを実行します。

$ qsub -pe def_slot 4 [ジョブスクリプト]

またはジョブスクリプト中に次のように記述します

...
#$ -pe def_slot 4
...

このようにしてスロット数を指定したジョブの要求スロット数は、 qstat コマンド の表示の slots カラムに見ることができます。

def_slot 指定時の要求メモリ量の指定について

ジョブのメモリの要求 (s_vmem) は 1 スロットあたりの要求値です。 def_slot によりスロット数を複数に指定すると、ジョブ全体が要求するメモリサイズは s_vmem による要求値に def_slot によるスロット数を乗じたものになります。s_vmem にはジョブ全体が要求するメモリサイズをスロット数で割った値を指定してください。

def_slot s_vmem ジョブのメモリ要求
なし (-pe def_slot 1 と同じ)なし2.1GB
-pe def_slot 2なし2*2.1GB
なし (-pe def_slot 1 と同じ)-l s_vmem=8G8GB
-pe def_slot 4-l s_vmem=8G4*8GB
-pe def_slot 16-l s_vmem=64G1024GB
計算ノード Thin では、搭載メモリ量を超えるため、実行できない

1 スロットあたり 8 G バイトを要求し、4 スロットを使用する (= 4 CPU コアを使用する) 場合は以下のようになります。 (ジョブは 32 G バイト要求する)

$ qsub -l s_vmem=8G -pe def_slot 4 [ジョブスクリプト名]

またはジョブスクリプト中の記述にて

...
#$ -l s_vmem=8G
#$ -pe def_slot 4
...