交互式作业提交srun¶
Slurm作业通常分为交互式和批量式两种。 交互式作业通常用于代码编译、脚本调试、交互式计算等工作。 长期后台计算的任务通常以作业脚本的方式进行批量提交 批处理作业sbatch 。
简介¶
交互式提交作业:在shell窗口中执行 srun 命令,主要命令格式如下:
$ srun [options] program
srun常用选项¶
srun包括多个选项,其中最常用的选项主要有以下几个:
-n, –ntasks=number 指定要运行的任务数。请求为number 个任务分配资源,默认为每个任务一个处理器核
-c, –cpus-per-task=ncpus 告知资源管理系统控制进程,作业步的每个任务需要ncpus 个处理器核。若未指定此选项,则控制进程默认为每个任务分配一个处理器核。
-N, –nodes=minnodes[-maxnodes]
请求为作业至少分配minnodes个节点。调度器可能觉得在多于 minnodes个节点上运行作业。可以通过maxnodes限制最多分配的节点数目(例如“-N 2-4”或“–nodes=2-4”)。最少和最多节点数目 可以相同以指定特定的节点数目(例如,“-N 2”或“–nodes=2-2” 将请求两个且仅两个节点)。分区的节点数目限制将覆盖作业的请求。 如果作业的节点限制超出了分区中配置的节点数目,作业将被拒绝。 如果没有指定-N,缺省行为是分配足够多的节点以满足-n和-c参数的 需求。在允许的限制范围内以及不延迟作业开始运行的前提下,作业将被分配尽可能多的节点。
-p, –partition=partition name 在指定分区中分配资源。如未指定,则由控制进程在系统默认分区中分配资源。
-w, –nodelist=node name list 请求指定的节点名字列表。作业分配资源中将至少包含这些节点。列表可以用逗号分隔的节点名或节点范围(如cpu[01-05,07,…],其中cpu为节点名称)指定,或者用 文件名指定。如果参数中包含“/”字符,则会被当作文件名。如果指定了最大节点数如-N 1-2,但是文件中有多余2个节点,则请求列 表中只使用前2个节点。
-x, –exclude=node name list
不要将指定的节点分配给作业。如果包含“/”字符,参数将被当作 文件名。srun将把作业请求提交到控制进程,然后在远程节点上启动 所有进程。如果资源请求不能立即被满足,srun将阻塞等待,直到资源可用以运行作业。如果指定了–immediate选项,则srun将在资源 不是立即可用时终止。
-h, –help 若需使用srun更多选项,可通过“srun –h”或“srun –help”查看.
使用示例¶
在分区hw-32C768G上指定任务数运行hostname:
$ srun -n 4 -p hw-32C768G --comment=group_name hostname
cpu1
cpu1
cpu1
cpu1
在分区hw-32C768G,节点cpu[4-7]上运行hostname:
$srun -n 4 -w cpu[4-7] -p hw-32C768G --comment=group_name hostname
cpu7
cpu6
cpu5
cpu4
# multiple tasks per node
$srun -n 8 -w cpu[4-7] -p hw-32C768G --comment=group_name hostname
cpu5
cpu6
cpu7
cpu4
cpu4
cpu4
cpu4
cpu4
在hw-32C768G分区,运行8个任务的hostname,每个节点一个任务,分配的节点中不包含节点cpu[4-7]:
$ srun -n 8 -x cpu[4-7] -p hw-32C768G --comment=group_name hostname
cpu8
cpu8
cpu8
cpu8
cpu8
cpu8
cpu8
cpu8