各OS毎の対応(2022.12.18)
OS | 提供バージョン | リポジトリなど |
RockyLinux 9 | 22.05.6 | epel |
RockyLinux 8 | 20.11.9 | epel |
CentOS 7 | 20.11.9 | epel |
Ubuntu 20.04 | 19.05.5-1 | universe/admin |
Ubuntu 22.04 | 21.08.5-2 | universe/admin |
起点を「/opt/slrum」にして設定ファイルも同じく「/opt/slurm/etc」に配置させ
この「/opt/slrum」を共有させればいいのかなと思うが、そうなるとパッケージを用意する必要になる. クラスターが単一OSなら. ヘテロOS環境なら既存のパッケージでいいのかも
っで作ってみた(ubuntuの計算ノードとかには使えないけど)
*ubuntuのパッケージ作成方法はよく分からないので、作ってないです. ubuntu系はソースから作成なのかも
作成方法はhttps://slurm.schedmd.com/quickstart_admin.html
に従います.
まずはソースのtar.bz2を用意します
[root@slurm ~]# cat /etc/redhat-release
Rocky Linux release 8.6 (Green Obsidian)
[root@slurm ~]# git clone https://github.com/SchedMD/slurm.git
[root@slurm ~]# cd slurm/
[root@slurm slurm]# git tag |tail -n 3
slurm-22-05-6-1
slurm-22-05-7-1
start
[root@slurm slurm]#
[root@slurm slurm]# git checkout slurm-22-05-7-1
[root@slurm slurm]# git branch
* (HEAD detached at slurm-22-05-7-1)
master
[root@slurm slurm]# cd ..
[root@slurm ~]# tar --exclude-vcs --transform 's/slurm/slurm-22.05.7/' -cvjf slurm-22.05.7.tar.bz2 slurm
[root@slurm ~]# tar tvf slurm-22.05.7.tar.bz2 | head -n 3
drwxr-xr-x root/root 0 2022-12-23 15:40 slurm-22.05.7/
-rw-r--r-- root/root 595 2022-12-23 15:39 slurm-22.05.7/.travis.yml
-rw-r--r-- root/root 119 2022-12-23 15:39 slurm-22.05.7/AUTHORS
[root@slurm ~]#
slurmに載せたい機能 †
slurmの運用で有効にさせたい機能があってここでは下記を有効にしてみた
- pam
- hwloc
- freeipmi
- pmix
- nvml
他にもありましたが、numa, hdf5, ucx, x11, lua はら無効としました.
データベースでアカウント対応を行う「slurmdbd」は小規模なので要らないかなと思ったのですが、「mariadb-devel」は必要でした
っでこれら有効にしたい機能を実現させるために追加のパッケージを入れて置きます
dnf groupinstall "Development tools"
dnf install --enablerepo=devel,powertools munge-devel readline-devel pam-devel perl-ExtUtils-MakeMaker \
hwloc-devel mariadb-devel pmix-devel freeipmi-devel dbus-devel python3
bash ./cuda_12.0.0_525.60.13_linux.run (「cuda-nvml-dev」のみインストール)
macroファイルの準備 †
slurm.specを直接いじらず設定ファイル(macro file)を作成します. これでslurm.specの情報を上書きできます
[root@slurm ~]# rpmbuild --version
RPM version 4.14.3
[root@slurm ~]# vi .rpmmacros
%_prefix /opt/slurm
%_slurm_sysconfdir %{_prefix}/etc
%_with_hwloc 1
%_with_pam 1
%_without_x11 1
%_with_pmix --with-pmix=/usr
%_with_nvml --with-nvml=/usr/local/cuda-12.0
%_with_freeipmi --with-freeipmi=/usr
[root@slurm ~]#
rpmbuildでパッケージを作る †
rpmbuild -ta slurm-22.05.7.tar.bz2
(RockyLinux 9の「RPM version 4.16.1.3」なら .rpmmacros を別ファイルとして指定できる
rpmbuild -ta --load slurm.rpmmacros slurm-22.05.7.tar.bz2
作成されたrpmファイルは
[root@slurm ~]# ls -l rpmbuild/RPMS/x86_64/
total 22896
-rw-r--r--. 1 root root 18787504 Dec 24 06:00 slurm-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 20232 Dec 24 06:00 slurm-contribs-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 84176 Dec 24 06:00 slurm-devel-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 12908 Dec 24 06:00 slurm-example-configs-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 163764 Dec 24 06:00 slurm-libpmi-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 13096 Dec 24 06:00 slurm-openlava-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 175840 Dec 24 06:00 slurm-pam_slurm-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 833032 Dec 24 06:00 slurm-perlapi-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 1558356 Dec 24 06:00 slurm-slurmctld-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 776992 Dec 24 06:00 slurm-slurmd-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 857668 Dec 24 06:00 slurm-slurmdbd-22.05.7-1.el8.x86_64.rpm
-rw-r--r--. 1 root root 141888 Dec 24 06:00 slurm-torque-22.05.7-1.el8.x86_64.rpm
[root@slurm ~]#
メモ †
cuda環境のないところでrpmbuildすると「/usr/lib64/slurm/gpu_nvml.so」が用意されない.
これがないと「/etc/slurm/gres.conf」で「AutoDetect=nvml」が使えない.