slurm 作业调度系统指南(一)

2025 年 1 月 6 日 星期一(已编辑)
/ ,
12
这篇文章上次修改于 2025 年 3 月 20 日 星期四,可能部分内容已经不适用,如有疑问可询问作者。

slurm 作业调度系统指南(一)

在超算中心离不开 slurm 刚参加工作时,学校没学过,也没有系统的培训。刚开始还不了解登录节点、运算节点的,(超算系统上还是魔改的slurm)。甚至一段时间都在登录节点跑过作业。工作至今偶然也会遇到新人不会使用slurm把账号跑崩的情况。 在此记录一下常用到的命令。


查看空闲节点

交任务前先看看交到是什么分区~

sinfo

提交任务

srun

最基础的提交任务指令

srun -N 1 -n 1 -p cp1 python test.py
# -N 节点数
# -n 进程数
# -p 分区

# 更多参数具体看 srun --help

sbatch

批量提交任务, 其中 #SBATCH 对应 srun 的参数

  1. 准备脚本 test.sh
#!/bin/bash
#SBATCH -o job-nvidia.out
#SBATCH -p XXXX
#SBATCH -n 1
#SBATCH -N 1
#SBATCH --time=00:00:30
module add cuda/11.8
nvidia-smi
  1. 执行脚本
sbatch test.sh

or

# 那就不用设置 SBATCH 
sbatch -n 1 -N 1 test.sh

进阶使用

提交任务并进入运行节点

类似进入docker screen ,方便调试程序。

srun -p XXX -N 1 -n 1 -t 0-01:00 --pty /bin/bash #一小时

通过命令行传递参数

创建动态sbatch脚本的方法实现cmd传递参数 ⬇️

vim main.sh
#!/bin/bash
cpus=$1
nodes=$2
name=$3

# 创建一个具有动态SBATCH指令的新脚本
cat > generated_script.sh <<EOF
#!/bin/bash
#SBATCH --partition=cp5
#SBATCH -n $cpus
#SBATCH -N $nodes
#SBATCH --time=00:15:00
#SBATCH -J LLMTEST.
#SBATCH --output=./output/cp5-${name}-${cpus}-${nodes}.output
source /fs2/home/test653/zeta/.bashrc
conda activate chatglm
python main.py
EOF

# 提交新生成的作业脚本
sbatch generated_script.sh
./main.sh 1 1

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...