简单使用
方法一:
交互式使用方式:使用 salloc 请求资源,然后可以使用 ssh 连接节点后使用。squeue 用来查看 job
salloc -N1 -n1 --exclusive
squeue -u `username` --state=running
ssh casxxx
详解解释
–exclusive 为独占节点,
方法二:
srun -N 2 -n 24 -p debug -q debug programname > ouputfile
-N 表示节点个数,-n 表示总进程数,-p 表示分区,-q表示优先级,programname 表示要运行的程序, > ouputfile 表示屏幕输出保存的文件。
sbatch 提交作业
- 先写作业脚本 xxx.slurm
- 然后再使用命令
sbatch xxx.slurm
提交作业 - 以下为一个作业脚本示例
#!/bin/bash
#SBATCH --job-name=hostname
#SBATCH --partition=cpu
#SBATCH -N 1
#SBATCH --mail-type=end
#SBATCH --mail-user=YOU@EMAIL.COM
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --time=00:00:10
#SBATCH --exclusive
/bin/hostname
向cpu队列申请1个节点,将作业最大运行时长限制设置为10秒,并在作业完成时通知。在此作业中执行的命令是/bin/hostname。
更多例子:http://hpc.pku.edu.cn/_book/guide/slurm/sbatch.html
申请cpu
#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH -p C032M0128G
#SBATCH --qos=low
#SBATCH -J myFirstJob
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
hostname
解释:
#SBATCH -o job.%j.out # 脚本执行的输出将被保存在job.%j.out文件下,%j表示作业号;
#SBATCH -p C032M0128G # 作业提交的指定分区为C032M0128G;
#SBATCH --qos=low # 指定作业的QOS为low;
#SBATCH -J myFirstJob # 作业在调度系统中的作业名为myFirstJob;
#SBATCH --nodes=1 # 申请节点数为1;
#SBATCH --ntasks-per-node=1 # 每个节点上运行一个任务,默认一情况下也可理解为每个节点使用一个核心;
申请 GPU 的作业例子
#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=GPU
#SBATCH --qos=low
#SBATCH -J myFirstGPUJob
#SBATCH --nodes=1 # 申请一个节点
#SBATCH --ntasks-per-node=6
#SBATCH --gres=gpu:tian_xp:1 # 每个节点上申请一块GPU卡
nvidia-smi
注:使用 scontrol show nodes
可以查看节点的配置,申请gpu需要指定类型:--gres=gpu:titan_xp:1
表示申请1块类型为titan_xp的GPU。
geforce_rtx_2080_ti
注意:必须加分区才能申请成功
一些常用的命令
- scancel jobid :取消某个job
- sacct :查看之前的任务
- squeue:查看作业状态
- sinfo:查看分区和节点信息
- scontrol show nodes:查看节点的配置信息
其他教程地址
http://bicmr.pku.edu.cn/~wenzw/pages/slurm.html