https://github.com/benny0323/slurm-with-gpu
This is what you need: A detailed desciption about Slurm with GPU cluster
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (6.2%) to scientific vocabulary
Repository
This is what you need: A detailed desciption about Slurm with GPU cluster
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Slurm With GPU
SLURM (Simple Linux Utility for Resource Management)是一种可扩展的工作负载管理器,已被全世界的国家超级计算机中心广泛采用。 它是免费且开源的,根据GPL通用公共许可证发行。
GPU集群是一个计算机集群,其中每个节点配备有图形处理单元(GPU)。通过图形处理单元(GPGPU)上的通用计算来利用现代GPU的计算能力,可以使用GPU集群执行非常快速的计算。GPU集群可以使用来自两个主要独立硬件供应商的硬件(AMD和NVIDIA)。
由于跨系统文本编码的问题,我们强烈建议您只用英文字符和数字命名文件夹和目录,并且不要使用特殊字符,以确保作业能顺利运行。
以下是个人在使用GPU集群时记录的一些操作步骤与心得体会,如有问题请及时指正!
Step 1: anaconda的安装与conda虚拟环境的激活(该部分在之前的仓库中有提及,请参阅)
Step 2: 任务/作业提交
注意:使用GPU集群运行自己的代码时,与在普通的以Ubuntun系统上搭建的服务器不同,我们知道在普通的服务器上运行代码的时候只需要cd到相应目录,并输入python XXXX.py即可运行,但是使用GPU集群来运行自己的代码时并不是如此。 原因是因为GPU集群依赖于Slurm这一作业调度系统,要求用户通过撰写shell脚本的方式提交脚本作业(包括作业命令与资源申请),其次加入运行队列等待排队,最后输出作业结果,其大致流程图如下:

按照上述流程,我们首先要撰写一个shell脚本(举个例子)
具体内容包括如下:
!/bin/bash ###SBATCH参数以#开头,非注释,必须有!
SBATCH --job-name=Myjob ###作业名称
SBATCH --nodes=1 ###使用节点数量
SBATCH --ntasks=8 ###总的进程数(CPU核数)
SBATCH --ntasks-per-node=8 ###每个节点的进程数,1个节点此项无需指定
SBATCH --gres=gpu:1 ###每个节点使用的GPU数量,CPU作业此项此项无需指定
SBATCH --partition=low ###使用的分区,目前有3个分区
SBATCH --output=%j.out ###作业正确输出文件,%j代表作业ID
SBATCH --error=%j.err ###作业错误输出文件
写完脚本后,我们利用sbatch(批处理模式)将脚本提交,比如:sbatch submission.sh(假设我的shell脚本名字为submission)。
注:slurm 有三种模式提交作业,分别为交互模式,批处理模式,分配模式,这三种方式只是作业提交方式的区别,在管理、调度、机时计算同等对待。一般使用批处理模式sbatch提交作业。
用sbatch提交完作业后,系统会返回一个JOBID,随即进入调度状态。如下所示

在资源满足要求时,分配计算节点。分配到计算资源后,自动在计算节点执行用户所编辑的脚本内的命令,sbatch 命令提交作业,终端断开连接作业依然在后台运行束,直到脚本执行结束作业自动退出 (或者在作业运行时执行 scancel 命令取消作业后作业自动停止)
计算开始后,工作目录中会生成以作业号.err/.out文件,为作业的输出
一个完整的脚本作业文件:
注意:
选择 partition:-p p-RTX2080
指定具体的机器:-w pgpu04 (必须要先指定-p)
补充知识:
sinfo 集群状态
drain(节点故障) alloc(节点在用) idle(节点可用) down(节点下线) mix(节点部分占用,但仍有剩余资源)

squeue 查看作业信息

R 正在运行 PD 正在排队 CG 即将完成 CD 已完成
查看特定用户的作业信息 squeue grep| XXX
Have any questions and bugs? Please tell me and I will answer and fix them.
参考资料
https://blog.csdn.net/zzixwx/article/details/129397139
https://www.imperial.ac.uk/computing/people/csg/guides/hpcomputing/gpucluster/
https://slurm.schedmd.com/resource_limits.html
Star History
Owner
- Name: Benny Chan
- Login: Benny0323
- Kind: user
- Location: Hanghou,Zhejiang Province
- Company: Hangzhou Dianzi University
- Repositories: 1
- Profile: https://github.com/Benny0323
Hi. I'm an undergraduate student from Hangzhou Dianzi University who is specialized in Artificial Intelligence!
GitHub Events
Total
- Push event: 8
Last Year
- Push event: 8