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によりジョブは破棄されます。

ジョブ投入数の制限

複数のユーザが限られたリソースを共有するため、プロジェクト毎にジョブ投入数の上限値を設定しています。ジョブ投入上限値を超えてジョブを投入しようとするとエラーになります。プロジェクトで投入中のジョブ数の確認は、slurminfoコマンドで確認が可能です。

ジョブ投入上限値

10,000(プロジェクトごと)

ヒント

sbatchコマンド 、slurmloginコマンド でジョブ投入上限値を超過してジョブを投入した場合、以下のエラーメッセージが出力します。

  1. sbatchコマンドでジョブ投入上限値超過時のエラー

sbatch: error: AssocGrpSubmitJobsLimit
sbatch: error: Batch job submission failed: Job violates accounting/QOS (Job submit limit, user's size and/or time limits)
  1. slurmloginコマンドでジョブ投入上限値超過時のエラー

srun: error: AssocGrpSubmitJobsLimit
srun: error: Unable to allocate resource: Job violates accounting/QOS (Job submit limit, user's size and/or time limits)

パーティションの区分

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

バッチパーティション

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

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

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

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

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

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

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

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

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

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

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

パーティションの一覧

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

パーティション

説明

mjobs_24

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

AMD製CPU搭載

Ubuntu 24.04向けのパーティション

mjobs2_24

1週間以内の通常バッチジョブの実行

Intel製CPU搭載

Ubuntu 24.04向けのパーティション

intr_24

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

AMD製CPU搭載

Ubuntu 24.04向けのパーティション

intr2_24

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

Intel製CPU搭載

Ubuntu 24.04向けのパーティション

lljobs_24

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

AMD製CPU搭載

Ubuntu 24.04向けのパーティション

tmem_24

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

AMD製CPU搭載

Ubuntu 24.04向けのパーティション

gpu_24

1週間以内のGPUバッチジョブを実行

Ubuntu 24.04向けのパーティション

gpu_intr_24

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

Ubuntu 24.04向けのパーティション

以下のパーティションは終了しました。

パーティション(終了)

説明

mjobs

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

AMD製CPU搭載

Ubuntu 20.04向けのパーティション

mjobs2

1週間以内の通常バッチジョブの実行

Intel製CPU搭載

Ubuntu 20.04向けのパーティション

intr

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

AMD製CPU搭載

Ubuntu 20.04向けのパーティション

intr2

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

Intel製CPU搭載

Ubuntu 20.04向けのパーティション

lljobs

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

AMD製CPU搭載

Ubuntu 20.04向けのパーティション

tmem

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

AMD製CPU搭載

Ubuntu 20.04向けのパーティション

gpu

1週間以内のGPUバッチジョブを実行

Ubuntu 20.04向けのパーティション

gpu_intr

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

Ubuntu 20.04向けのパーティション

注釈

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

各パーティションの設定

パーティション名

ノード数

1ノードのスペック

実行時間上限

CPUコア数

メモリ

GPU台数

mjobs_24

5~

128

512GB

-

1 week

mjobs2_24

3~

40

192GB

-

1 week

intr_24

5~

128

512GB

-

12 hours

intr2_24

3~

40

192GB

-

12 hours

lljobs_24

2

128

512GB

-

2 months

tmem_24

1

128

4TB

-

2 weeks

gpu_24

1

128

512GB

8

1 week

gpu_intr_24

1 hour

ジョブのデフォルト値

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

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

要求項目

デフォルト値

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

備考

CPUコア数

1CPUコア / ジョブ

-c CPUコア数

10CPUコア / GPU

-c CPUコア数

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

メモリ

3.9GB / CPUコア

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