Ubuntu on WSL安装作业调度器Slurm
前言
Slurm是高性能计算机上使用最广泛的作业资源调度器,它能够管理多节点CPU计算资源,也支持管理GPU计算资源。
下面介绍单节点部署slurm的方法,通过slurm管理小型工作站计算资源。单节点安装相比集群安装简化很多步骤。
测试环境
- 工作站:12核24线程 CPU,1块NVIDIA RTX 3060 GPU。
- Ubuntu 24.04 LTS @WSL
- slurm-wlm 23.11.4
安装
这里通过Ubuntu apt包管理器安装slurm,相比源代码安装简单方便。
- 安装slurm及依赖munge
$ sudo apt install munge slurm-wlm- 查询节点信息,后续slurm配置需要
$ hostname
$ slurmd -C- 配置slurm.conf文件
slurm提供了网页版生成配置信息的方法,只需要填入对应的参数,就能一键生成配置信息。
使用浏览器打开/usr/share/doc/slurmctld/slurm-wlm-configurator.easy.html(WSL中可以利用wslview调用Windows的浏览器打开网页或者拷贝这个文件到Windows中打开)。
将生成的配置信息拷贝到/etc/slurm/slurm.conf中
$ sudo vi /etc/slurm/slurm.conf- 开启slurmctld和slurmd服务
$ sudo systemctl enable slurmctld
$ sudo service slurmctld start
$ sudo systemctl enable slurmd
$ sudo service slurmd start- 启动munge服务
$ sudo /etc/init.d/munge start - 检查Slurm服务状态
$ sinfo
$ scontrol show node测试
- srun测试
srun -p exp -n 8 hostname- sbatch提交MPI作业测试
#!/bin/bash
#SBATCH -J test
#SBATCH -p exp
#SBATCH -n 4
sleep 30
mpirun ./mpi_hello$ sbatch job.shGPU资源支持
工作站有一块NVIDIA RTX 3060的显卡,希望通过slurm进行计算资源管理。
首先修改前面介绍的slurm.conf配置文件,添加GresTypes=gpu以及Gres字段。
GresTypes=gpu
NodeName=node00 CPUs=24 RealMemory=31953 Gres=gpu:1 Sockets=1 CoresPerSocket=12 ThreadsPerCore=2 State=UNKNOWN然后添加gres.conf配置文件
NodeName=node00 Name=gpu File=/dev/dxg注意这里的File使用的是/dev/dxg,而不是常见的dev/nvidia0,这是因为WSL Ubuntu虚拟化通过/dev/dxg访问Windows的GPU驱动。
具体说明:https://learn.microsoft.com/en-us/windows/wsl/faq
GPU access in WSL happens through a /dev/dxg device, which routes GPU calls out to the Windows GPU. This setup is different than a traditional Linux set up.GPU作业脚本:
#!/bin/bash
#SBATCH -p exp
#SBATCH -n 1
#SBATCH --gres=gpu:1
sleep 10
./matrixMul # 来自CUDA Samples程序提交作业,sbatch run.sh

程序运行LOG:
[Matrix Multiply Using CUDA] - Starting...
GPU Device 0: "Ampere" with compute capability 8.6
MatrixA(320,320), MatrixB(640,320)
Computing result using CUDA Kernel...
done
Performance= 904.44 GFlop/s, Time= 0.145 msec, Size= 131072000 Ops, WorkgroupSize= 1024 threads/block
Checking computed result for correctness: Result = PASS
NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.问题排查
如果发现节点不能正常使用,可能配置文件有错误,比如由于配置错误导致节点状态为drain。
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
exp* up infinite 1 drain node00问题排查时可以查看slurm log文件:
- /var/log/slurm/slurmctld.log
- /var/log/slurm/slurmd.log
或者查看服务状态systemctl status slurmctld。
sinfo -R也能告知节点故障原因。
REASON USER TIMESTAMP NODELIST
gres/gpu count repor slurm 2024-09-14T08:35:12 node00参考资料
https://nablacfd.github.io/2019/01/27/Notes-of-installing-slurm-in-Ubuntu-WSL/