1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slurm 25.05.3 を AlmaLinux 8.10 にインストール

Last updated at Posted at 2025-11-17

概要

AlmaLinux 8.10 に Slurm 25.05.3 をインストールした際の作業記録。

AlmaLinux 8.10 に含まれる Slurm 20 系は GRES や GPU 周りの機能が古く、RTX 50 シリーズの GPU ではエラーが出たため、Slurm 25.05.3 を使用することにした。

Slurm 25 の特色

Slurm 25(正式には Slurm 25.02 / 25.05 系)は、Slurm 24 系からさらに大きく改善された「次世代 Slurm」と呼べるほど機能追加・刷新が入ったバージョン。特に GPU 対応の強化、スケジューリングの効率改善、大規模クラスタの安定性向上 が大きなポイントである。

  • GPU 管理がさらに強化(NVIDIA RTX 50 シリーズなど最新 GPU へ最適化)
  • cgroup v2 がデフォルト化し、リソース制御が強力に
  • IPv6・大規模クラスタ環境の安定性向上
  • slurmrestd(REST API)の大幅強化

検証環境

  • CPU: Ryzen 9 9950X
  • マザーボード: ASRock Steel Legend X870
  • GPU: NVIDIA RTX 5080
  • OS: AlmaLinux 8.10

作業記録

Slurm 25 や OiwerTools をインストールする前に色々とインストールしておく必要があるが、後日記述予定。一般的なサーバー構築に必要なモジュールを入れてれば、下記の操作で問題なくインストールできるはず。

Powertools を有効化

AlmaLinux 8 では、EPEL と同様に Powertools を有効化する必要がある。

sudo vi /etc/yum.repos.d/almalinux-powertools.repo

enabled=0enabled=1 に変更して保存する。

libsz.so.2(libaec)のインストール

Slurm の依存関係として libsz.so.2 が必要なためインストールする。

sudo dnf install -y libaec libaec-devel

Microsoft リポジトリ(packages.microsoft.com)を追加

Microsoft が提供している Slurm 25 用リポジトリを追加する。
 参考:https://packages.microsoft.com/yumrepos/slurm-el8/Packages/s/

sudo tee /etc/yum.repos.d/slurm.repo << 'EOF'
[slurm]
name=Slurm packages
baseurl=https://packages.microsoft.com/yumrepos/slurm-el8
enabled=1
gpgcheck=0
EOF

Slurm 25 のインストール

バージョン指定しないと最新のバージョンがインストールされます。

sudo dnf install slurm slurm-slurmd slurm-slurmctld slurm-slurmdbd

munge のインストールと設定

sudo dnf install munge munge-libs munge-devel

#munge key を作成:
sudo create-munge-key
sudo chown -R munge:munge /etc/munge
sudo systemctl enable --now munge

状態確認

sudo systemctl enable --now munge

slurm の設定

sudo useradd -r -m slurm
mkdir -p /var/spool/slurmctld
mkdir -p /var/spool/slurmd
mkdir -p /var/log/slurm
chown slurm:slurm /var/spool/slurmctld
chown slurm:slurm /var/log/slurm

slurm.conf を編集

slurm 24 とは異なり、/etc/slurm が自動生成されないので、自分で作る必要がある。

sudo mkdir -p /etc/slurm
sudo chown root:root /etc/slurm

/etc/slurm/slurm.conf を編集する。
メモリ容量も記述する(RealMemory=30000)。
GresTypes=gpu を行を追加しないと scontrol show node sibelius02 のコマンドの際に GPU が認識されない。GresTypes=gpu は、ChatGPT に何回聞いても分からなかったので、自分で調べる必要があった。生成 AI を使用してソフトウェアのインストールや環境構築を行うと必ず数箇所詰まるところがある印象。

/etc/slurm/slurm.conf
# ===== Basic cluster info =====
ClusterName=sibelius_cluster
ControlMachine=sibelius02

# ===== Slurm user =====
SlurmUser=slurm
AuthType=auth/munge

# ===== State files =====
StateSaveLocation=/var/spool/slurmctld
SlurmdSpoolDir=/var/spool/slurmd

# ===== Scheduling =====
SchedulerType=sched/backfill
SlurmctldTimeout=300
SlurmdTimeout=300

# ===== Logging =====
SlurmctldLogFile=/var/log/slurmctld.log
SlurmdLogFile=/var/log/slurmd.log

# ===== Resources =====
GresTypes=gpu
NodeName=sibelius02 CPUs=32 RealMemory=30000 Gres=gpu:1
PartitionName=normal Nodes=sibelius02 Default=YES MaxTime=INFINITE State=UP

gres.conf の編集

Slurm 25 では GPU を UUID で書く必要はなく、File 指定が推奨。

/etc/gres.conf
NodeName=sibelius01 Name=gpu File=/dev/nvidia0

権限設定

sudo systemctl enable --now slurmctld

slurmd.service の調整

Slurm 24 では、/usr/lib/systemd/system/slurmd.service を編集する必要があったが、Slurm 25 では不要。

Slurm 起動

sudo systemctl enable --now slurmctld
sudo systemctl enable --now slurmd

sinfoコマンドで以下のように表示されることを確認する。

PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
normal*      up 7-00:00:00      1   idle sibelius01

gpu を認識しているかの確認

# 確認コマンド
scontrol show node sibelius02

以下のように表示される。Gres=gpu:1 となっていることを確認。

NodeName=sibelius02 Arch=x86_64 CoresPerSocket=1 
   CPUAlloc=0 CPUEfctv=32 CPUTot=32 CPULoad=0.00
   AvailableFeatures=(null)
   ActiveFeatures=(null)
   Gres=gpu:1
   NodeAddr=sibelius02 NodeHostName=sibelius02 Version=25.05.2
   OS=Linux 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 
   RealMemory=30000 AllocMem=0 FreeMem=26252 Sockets=32 Boards=1
   State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
   Partitions=normal 
   BootTime=2025-11-15T16:24:45 SlurmdStartTime=2025-11-15T17:14:38
   LastBusyTime=2025-11-15T17:14:42 ResumeAfterTime=None
   CfgTRES=cpu=32,mem=30000M,billing=32
   AllocTRES=
   CurrentWatts=0 AveWatts=0
# 確認コマンド
srun --gres=gpu:1 nvidia-smi
# 結果の表示
Sat Nov 15 17:17:08 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.105.08             Driver Version: 580.105.08     CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 5080        Off |   00000000:01:00.0 Off |                  N/A |
| 45%   29C    P0             27W /  360W |       0MiB /  16303MiB |      2%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
# 確認コマンド
slurmd -C
# 結果の表示
NodeName=sibelius02 CPUs=32 Boards=1 SocketsPerBoard=1 CoresPerSocket=16 ThreadsPerCore=2 RealMemory=30954 Gres=gpu:nvidia_geforce_rtx_5080:1
Found gpu:nvidia_geforce_rtx_5080:1 with Autodetect=nvidia (Substring of gpu name may be used instead)
UpTime=0-00:54:17

Slurm 25 では、slurm が rtx 50 シリーズを自動的に検出してくる!すごい!

Slurm テストジョブ

srun --gres=gpu:1 nvidia-smi

sbatch で計算を実行する際は、以下のようにジョブスクリプトを作成し、sbatch submit.sh でジョブを投入する。

submit.sh
#!/bin/bash
#SBATCH -J slurm_test            # ジョブ名
#SBATCH -p normal             # パーティション名
#SBATCH -c 32                 # タスク数(必要に応じて変更)
#SBATCH --gres=gpu:1          # GPU を使う場合
#SBATCH --time=24:00:00       # 実行時間

cd $SLURM_SUBMIT_DIR

# ====== ここから実際の処理 ======
hostname
echo ' '
nvidia-smi
echo ' '

# conda 初期化(重要:source が必要)
source $HOME/miniconda3/etc/profile.d/conda.sh
conda activate boltz2

# 計算の実行
python boltz predict model.yaml --use_msa_server

あとがき

これまでは Fedora を使用していたが、頻繁なバージョンアップへの追随が負担になってきたため、AlmaLinux に移行した。また、PC クラスター環境では LDAP ではなく NIS を利用したかったことも OS 変更の理由。AlmaLinux 9 以降では NIS が非推奨となり、標準では利用できない。そのため、NIS が利用可能な AlmaLinux 8 系を選択した。

おまけ Slurm 24.05.06 の作業ログ

最終的には Slurm 25 系を採用したが、24 系も検討したので、その作業ログを残しておく。

概要

AlmaLinux 8.10 に Slurm 24.05.6 をインストールした際の作業記録。

これまでは Fedora を使用していたが、頻繁なバージョンアップへの追随が負担になってきたため、AlmaLinux に移行した。また、PC クラスター環境では LDAP ではなく NIS を利用したかったことも OS 変更の理由。

AlmaLinux 9 以降では NIS が非推奨となり、標準では利用できない。そのため、NIS が利用可能な AlmaLinux 8 系を選択した。

AlmaLinux 8 に含まれる Slurm 20 系は GRES や GPU 周りの機能が古く、RTX 50 シリーズの GPU ではエラーが出たため、Slurm 24.05.6 を使用することにした。

検証環境

同じ

作業記録

Powertools を有効化

AlmaLinux 8 では、EPEL と同様に Powertools を有効化する必要がある。

sudo vi /etc/yum.repos.d/almalinux-powertools.repo

enabled=0enabled=1 に変更して保存する。

libsz.so.2(libaec)のインストール

Slurm の依存関係として libsz.so.2 が必要なためインストールする。

sudo dnf install -y libaec libaec-devel

Microsoft リポジトリ(packages.microsoft.com)を追加

Microsoft が提供している Slurm 24 用リポジトリを追加する。
 参考:https://packages.microsoft.com/yumrepos/slurm-el8/Packages/s/

sudo tee /etc/yum.repos.d/slurm.repo << 'EOF'
[slurm]
name=Slurm packages
baseurl=https://packages.microsoft.com/yumrepos/slurm-el8
enabled=1
gpgcheck=0
EOF

Slurm24 のインストール

sudo dnf install slurm-24.05.6 slurm-slurmd-24.05.6 slurm-slurmctld-24.05.6 slurm-slurmdbd-24.05.6

munge のインストールと設定

sudo dnf install munge munge-libs munge-devel

#munge key を作成:
sudo create-munge-key
sudo chown -R munge:munge /etc/munge
sudo systemctl enable --now munge

状態確認

systemctl restart munge
systemctl status munge

slurm の設定

mkdir -p /var/spool/slurmctld
mkdir -p /var/spool/slurmd
mkdir -p /var/log/slurm
chown slurm:slurm /var/spool/slurmctld
chown slurm:slurm /var/log/slurm

slurm.conf を編集

/etc/slurm/slurm.conf を以下のように編集する。
メモリ容量も記述する(RealMemory=30000)。

# ----- Basic -----
ClusterName=local24
ControlMachine=sibelius01

SlurmUser=slurm
AuthType=auth/munge
StateSaveLocation=/var/spool/slurm/ctld
SlurmdSpoolDir=/var/spool/slurmd
ReturnToService=1

# ----- Timeouts -----
SlurmctldTimeout=600
SlurmdTimeout=600

# ----- SelectType -----
SelectType=select/cons_tres
SelectTypeParameters=CR_Core

# ----- Plugins -----
TaskPlugin=task/affinity

# ----- GRES GPU -----
GresTypes=gpu
NodeName=sibelius01 CPUs=32 RealMemory=30000 Gres=gpu:1 State=UNKNOWN
PartitionName=normal Nodes=sibelius01 Default=YES MaxTime=7-00:00:00 State=UP

Slurm 24 では、cons_tres のみ対応で、cons_res は非対応。

gres.conf の編集

Slurm 24 では GPU を UUID で書く必要はなく、File 指定が推奨。

NodeName=sibelius01 Name=gpu File=/dev/nvidia0

### slurmd.service の調整

ネットワーク起動タイミングの問題を避けるため After= と Wants= を追加。
/usr/lib/systemd/system/slurmd.service に以下のように書く。

[Unit]
Description=Slurm node daemon
After=munge.service network-online.target remote-fs.target sssd.service
Wants=network-online.target
#ConditionPathExists=/etc/slurm/slurm.conf

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/slurmd
EnvironmentFile=-/etc/default/slurmd
RuntimeDirectory=slurm
RuntimeDirectoryMode=0755
ExecStart=/usr/sbin/slurmd --systemd $SLURMD_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
LimitNOFILE=131072
LimitMEMLOCK=infinity
LimitSTACK=infinity
Delegate=yes
TasksMax=infinity

# Uncomment the following lines to disable logging through journald.
# NOTE: It may be preferable to set these through an override file instead.
#StandardOutput=null
#StandardError=null

[Install]
WantedBy=multi-user.target

Slurm 起動

sudo systemctl start slurmd slurmctld
sudo systemctl status slurmd slurmctld

slurmd slurmctld ともに active running となっていることを確認する。

sinfoコマンドで以下のように表示されることを確認する。

PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
normal*      up 7-00:00:00      1   idle sibelius01

gpu を認識しているかの確認

scontrol show node sibelius01

以下のように表示される。Gres=gpu:1 となっていることを確認。

NodeName=sibelius01 Arch=x86_64 CoresPerSocket=1 
   CPUAlloc=0 CPUEfctv=32 CPUTot=32 CPULoad=0.00
   AvailableFeatures=(null)
   ActiveFeatures=(null)
   Gres=gpu:1
   NodeAddr=sibelius01 NodeHostName=sibelius01 Version=24.05.6
   OS=Linux 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 
   RealMemory=30000 AllocMem=0 FreeMem=3066 Sockets=32 Boards=1
   State=IDLE ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
   Partitions=normal 
   BootTime=2025-11-13T15:05:19 SlurmdStartTime=2025-11-14T14:16:57
   LastBusyTime=2025-11-14T15:48:54 ResumeAfterTime=None
   CfgTRES=cpu=32,mem=30000M,billing=32
   AllocTRES=
   CurrentWatts=0 AveWatts=0

Slurm テストジョブ

srun --gres=gpu:1 nvidia-smi

sbatch で計算を実行する際は、以下のようにジョブスクリプトを作成し、sbatch submit.sh でジョブを投入する。

submit.sh
#!/bin/bash
#SBATCH -J slurm_test            # ジョブ名
#SBATCH -p normal             # パーティション名
#SBATCH -c 32                 # タスク数(必要に応じて変更)
#SBATCH --gres=gpu:1          # GPU を使う場合
#SBATCH --time=24:00:00       # 実行時間

cd $SLURM_SUBMIT_DIR

# ====== ここから実際の処理 ======
hostname
echo ' '
nvidia-smi
echo ' '

# conda 初期化(重要:source が必要)
source $HOME/miniconda3/etc/profile.d/conda.sh
conda activate boltz2

# 計算の実行
python boltz predict model.yaml --use_msa_server
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?