Slurmの概要#

Slurm とは#

Slurm Workload Manager (Slurm) はジョブ管理システム(ジョブスケジューラー)です。Slurm を利用することで、これまで1台のマシン上で実行していたプログラムを、複数の計算ノード上で円滑に実行することが可能となります。

ジョブとは#

CPUやメモリ等の計算資源が割り当てられる処理単位です。シェルスクリプト(コマンドやパラメータを記載したファイル)を実行すると、1つのジョブとして扱われます。

ジョブ実行の流れ#

  1. ご自身の端末(UnitA)、もしくはシンクラ仮想デスクトップ(UnitB,C)からスーパーコンピューターのログインノードにログインする。

  2. シェルスクリプトの作成、ジョブのテストを行い、ジョブ投入の準備をする。

  3. sbatchコマンドでジョブを投入する。

  4. ジョブの状態確認はsqueueコマンドで行う。

  5. ジョブの実行結果を確認する。

ヒント

sbatchsqueueはSlurmが提供するコマンドです。

パーティションとは#

ジョブを投入するキューです。キューに投入されたジョブは、SlurmによりCPUやメモリ等のリソースが割り当てられ次第、実行されます。

パーティション毎に、計算ノードのスペックや用途が決められているため、実行したいジョブに最適なパーティションを選ぶことが重要です。

実行時間の制限#

複数のユーザが限られたリソースを共有するため、パーティション毎に実行時間の制限を設けています。制限時間を超過すると、Slurmによりジョブは破棄されます。

パーティションの区分#

パーティションには大きく分けて、バッチパーティションインタラクティブパーティションがあります。

バッチパーティション#

ジョブはスクリプトに記述した通り、計算ノード上で実行されます。ジョブを実行するためのパーティションです。

インタラクティブパーティション#

計算ノードにログインし、対話的にコマンドを実行します。主に、バッチパーティションへジョブを大量投入する前に、スクリプトの挙動や必要リソースを確認するために利用します。

パーティション区分ごとの使用例#

  • バッチパーティションの使用例
    1. 投入するジョブの準備をします(スクリプト作成など)。

    2. sbatchコマンドにより、ジョブを投入します。

    3. squeueコマンドにより、ジョブが計算ノード上で実行されることを確認します。

    4. 実行終了後、ジョブの結果を確認します

  • インタラクティブパーティションの使用例
    1. slurmloginコマンドにより、計算ノードにログインします。

    2. 計算ノード上で対話的に任意のコマンドを実行します。

    3. exitコマンドで計算ノードからログアウトします。

パーティションの一覧#

パーティションの使い分け方法#

mjobs

1週間以内の通常バッチジョブの実行(デフォルトパーティション)

intr

インタラクティブパーティションとして使用

lljobs

2ヶ月以内の長期バッチジョブの実行

tmem

大量のメモリを要するバッチジョブの実行(共有メモリ型計算機を使用)

gpu

48時間以内のGPUバッチジョブを実行

gpu_intr

GPUを要するジョブ用のインタラクティブパーティションとして使用

注釈

mjobsは各Unitで最低20ノード割り当てられており、状況に応じてノード数が変化します。

UnitA#

パーティション名

ノード数

1ノードのスペック

実行時間上限

CPUコア数

メモリ

GPU台数

mjobs

20~

128

512GB

-

1 week

intr

2

128

512GB

-

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

intr

2

128

512GB

-

12 hours

lljobs

2

128

512GB

-

2 months

tmem

1

128

4TB

-

2 weeks

UnitC#

パーティション名

ノード数

1ノードのスペック

実行時間上限

CPUコア数

メモリ

GPU台数

mjobs

20~

128

512GB

-

1 week

intr

2

128

512GB

-

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

mjobs2

20

40

192GB

-

1 week

ジョブのデフォルト値#

ジョブ投入時にパーティションを指定しない場合、mjobsが自動的に選択されます(デフォルトパーティション)。

CPUコア数とメモリに関するデフォルト値は下表のとおりです。

要求項目

デフォルト値

変更する場合のオプション

備考

CPUコア数

1CPUコア / ジョブ

-c CPUコア数

10CPUコア / GPU

-c CPUコア数

gpu、gpu_intrを利用する場合のみ。 n CPUコア数は10未満に設定することはできません。

メモリ

3.9GB / CPUコア

--mem-per-cpu=メモリ数(MB)