Slurmの概要#
Slurm とは#
Slurm Workload Manager (Slurm) はジョブ管理システム(ジョブスケジューラー)です。Slurm を利用することで、これまで1台のマシン上で実行していたプログラムを、複数の計算ノード上で円滑に実行することが可能となります。
ジョブとは#
CPUやメモリ等の計算資源が割り当てられる処理単位です。シェルスクリプト(コマンドやパラメータを記載したファイル)を実行すると、1つのジョブとして扱われます。
ジョブ実行の流れ#
ご自身の端末(UnitA)、もしくはシンクラ仮想デスクトップ(UnitB,C)からスーパーコンピューターのログインノードにログインする。
sbatch
コマンドでジョブを投入する。ジョブの状態確認は
squeue
コマンドで行う。ジョブの実行結果を確認する。
ヒント
sbatch
やsqueue
はSlurmが提供するコマンドです。
パーティションとは#
ジョブを投入するキューです。キューに投入されたジョブは、SlurmによりCPUやメモリ等のリソースが割り当てられ次第、実行されます。
パーティション毎に、計算ノードのスペックや用途が決められているため、実行したいジョブに最適なパーティションを選ぶことが重要です。
実行時間の制限#
複数のユーザが限られたリソースを共有するため、パーティション毎に実行時間の制限を設けています。制限時間を超過すると、Slurmによりジョブは破棄されます。
パーティションの区分#
パーティションには大きく分けて、バッチパーティションとインタラクティブパーティションがあります。
バッチパーティション#
ジョブはスクリプトに記述した通り、計算ノード上で実行されます。ジョブを実行するためのパーティションです。
インタラクティブパーティション#
計算ノードにログインし、対話的にコマンドを実行します。主に、バッチパーティションへジョブを大量投入する前に、スクリプトの挙動や必要リソースを確認するために利用します。
パーティション区分ごとの使用例#
- バッチパーティションの使用例
投入するジョブの準備をします(スクリプト作成など)。
sbatch
コマンドにより、ジョブを投入します。squeue
コマンドにより、ジョブが計算ノード上で実行されることを確認します。実行終了後、ジョブの結果を確認します
- インタラクティブパーティションの使用例
slurmlogin
コマンドにより、計算ノードにログインします。計算ノード上で対話的に任意のコマンドを実行します。
exit
コマンドで計算ノードからログアウトします。
パーティションの一覧#
パーティションの使い分け方法#
mjobs |
1週間以内の通常バッチジョブの実行(デフォルトパーティション) AMD製CPU搭載 |
mjobs2 |
1週間以内の通常バッチジョブの実行 Intel製CPU搭載 |
intr |
インタラクティブパーティションとして使用 AMD製CPU搭載 |
intr2 |
インタラクティブパーティションとして使用 Intel製CPU搭載 |
lljobs |
2ヶ月以内の長期バッチジョブの実行 AMD製CPU搭載 |
tmem |
大量のメモリを要するバッチジョブの実行(共有メモリ型計算機を使用) AMD製CPU搭載 |
gpu |
48時間以内のGPUバッチジョブを実行 |
gpu_intr |
GPUを要するジョブ用のインタラクティブパーティションとして使用 |
注釈
mjobsは各Unitで最低10ノード割り当てられており、状況に応じてノード数が変化します。
UnitA#
パーティション名 |
ノード数 |
1ノードのスペック |
実行時間上限 |
||
---|---|---|---|---|---|
CPUコア数 |
メモリ |
GPU台数 |
|||
mjobs |
10~ |
128 |
512GB |
- |
1 week |
mjobs2 |
3~ |
40 |
192GB |
- |
1 week |
intr |
10~ |
128 |
512GB |
- |
12 hours |
intr2 |
3~ |
128 |
192GB |
- |
12 hours |
lljobs |
2 |
128 |
512GB |
- |
2 months |
tmem |
1 |
128 |
4TB |
- |
2 weeks |
gpu |
2 |
128 |
512GB |
8 |
48 hours |
gpu_intr |
1 hour |
UnitB#
パーティション名 |
ノード数 |
1ノードのスペック |
実行時間上限 |
||
---|---|---|---|---|---|
CPUコア数 |
メモリ |
GPU台数 |
|||
mjobs |
20~ |
128 |
512GB |
- |
1 week |
mjobs2 |
3~ |
40 |
192GB |
- |
1 week |
intr |
20~ |
128 |
512GB |
- |
12 hours |
intr2 |
3~ |
40 |
192GB |
- |
12 hours |
lljobs |
2 |
128 |
512GB |
- |
2 months |
tmem |
1 |
128 |
4TB |
- |
2 weeks |
UnitC#
パーティション名 |
ノード数 |
1ノードのスペック |
実行時間上限 |
||
---|---|---|---|---|---|
CPUコア数 |
メモリ |
GPU台数 |
|||
mjobs |
20~ |
128 |
512GB |
- |
1 week |
mjobs2 |
14~ |
40 |
192GB |
- |
1 week |
intr |
20~ |
128 |
512GB |
- |
12 hours |
intr2 |
20~ |
40 |
192GB |
- |
12 hours |
lljobs |
2 |
128 |
512GB |
- |
2 months |
tmem |
1 |
128 |
4TB |
- |
2 weeks |
gpu |
1 |
128 |
512GB |
8 |
48 hours |
gpu_intr |
1 hour |
ジョブのデフォルト値#
ジョブ投入時にパーティションを指定しない場合、mjobsが自動的に選択されます(デフォルトパーティション)。
CPUコア数とメモリに関するデフォルト値は下表のとおりです。
要求項目 |
デフォルト値 |
変更する場合のオプション |
備考 |
---|---|---|---|
CPUコア数 |
1CPUコア / ジョブ |
-c CPUコア数 |
|
10CPUコア / GPU |
-c CPUコア数 |
gpu、gpu_intrを利用する場合のみ。 n CPUコア数は10未満に設定することはできません。 |
|
メモリ |
3.9GB / CPUコア |
--mem-per-cpu=メモリ数(MB) |