添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

slurm三种作业提交模式

srun [options] program 命令属于交互式提交作业,有屏幕输出,但容易受网络波动影响,断网或关闭窗口会导致作业中断。一般仅在调试程序时使用此方式提交作业。语法为: srun [OPTIONS...] executable [args...]

srun 命令示例:

srun -p gpu -w g [ 1100 -1101 ] -N 2 -n 80 -t 20 A.exe

交互式提交 A.exe 程序。如果不关心节点和时间限制,可简写为 srun -p gpu -n 80 A.exe

其中,

-p gpu 指定提交作业到 gpu 队列;
-w g[1100-1101] 指定使用节点 g[1100-1101];
-N 2 指定使用 2 个节点;
-n 40 指定进程数为 40,
-t 20 指定作业运行时间限制为 20 分钟。

srun 的一些常用命令选项:

参数选项
功能
-N 3 指定节点数为 3
-n 12 指定进程数为 12
-c 12 指定每个进程(任务)使用的CPU核 为12,一般运行OpenMP等多线程程序时需,普通MPI程序不需要指定。
--gres=gpu:4 指定每台机器使用4张GPU卡。
-p gpu 指定提交作业到 gpu 队列
-w g[100-101] 指定提交作业到 g100、g101 节点
-x g[100,106] 排除 g100、g106 节点
--o out.log 指定标准输出到 out.log 文件
-e err.log 指定重定向错误输出到 err.log 文件
-J JOBNAME 指定作业名为 JOBNAME
-t 20 限制运行 20 分钟

srun 的其他选项可通过 srun --help 查看。

Slurm 支持利用 sbatch 命令采用批处理方式运行作业,sbatch 命令在脚本正确传递给作业调度系统后立即退出,同时获取到一个作业号。作业等所需资源满足后开始运行。

sbatch 提交一个批处理作业脚本到 Slurm。批处理脚本名可以在命令行上通过传递给 sbatch,如没有指定文件名,则 sbatch 从标准输入中获取脚本内容。

脚本文件基本格式:

这种方式不受本地网络波动影响,提交作业后可以关闭本地电脑。sbatch 命令没有屏幕输出,默认输出日志为提交目录下的 slurm-xxx.out 文件,可以使用tail -f slurm-xxx.out 实时查看日志,其中 xxx 为作业号。

1.sbatch 命令示例(40 个进程提交 A.exe 程序):

编写脚本 job1.sh,内容如下:

#!/bin/bash
srun -n 40 A.exe

然后在命令行执行 sbatch -p gpu job1.sh 提交作业。脚本中的#!/bin/bash 是 bash脚本的固定格式。从脚本的形式可以看出,提交脚本是一个 shell 脚本,因此常用的 shell 脚本语法都可以使用。作业开始运行后,在提交目录会生成一个slurm-xxx.out 日志文件,其中 xxx 表示作业号。

2.sbatch 命令示例(指定 2 个节点,4 个进程,每个进程 12 个 cpu 核提交A.exe 程序,限制运行 60 分钟):

编写脚本 job2.sh,内容如下:

#!/bin/bash
#SBATCH -N 2
#SBATCH -n 4
#SBATCH -c 12
#SBATCH -t 60
A.exe

然后在命令行执行 sbatch -p gpu job2.sh 就可以提交作业。其中#SBATCH 注释行是 slurm 定义的作业执行方式说明,一些需要通过命令行指定的设置可以通过这些说明写在脚本里,避免了每次提交作业写很长的命令行。

salloc 命令用于申请节点资源,一般用法如下:

1、执行 salloc -N 1 -p gpu,申请 1 台服务器资源;
2、执行 squeue 查看分配到的节点资源,比如分配到 g100;
3、执行 ssh g100 登陆到所分配的节点;
4、登陆节点后可以执行需要的提交命令或程序;