sbatch

部分: Slurm 命令 (1)
更新: Slurm 命令
索引

 

名称

sbatch - 提交批处理脚本到 Slurm。

 

概要

sbatch [选项(0)...] [ : [选项(N)...]] 脚本(0) [参数(0)...]

选项定义了在共同调度的异构作业中的多个作业。 有关异构作业的更多详细信息,请参见文档
https://slurm.schedmd.com/heterogeneous_jobs.html

 

描述

sbatch 将批处理脚本提交到 Slurm。批处理脚本可以通过命令行上的文件名传递给 sbatch,或者如果未指定文件名,sbatch 将从标准输入读取脚本。

批处理脚本可以包含一行或多行以 "#SBATCH" 开头,后面跟着本页面上记录的任何 CLI 选项。#SBATCH 指令由 Slurm 直接读取,因此包括变量名在内的特定于 shell 的语法将被视为字面文本。一旦到达脚本中的第一行非注释、非空白行,将不再处理更多的 #SBATCH 指令。请参见下面的示例。

sbatch 在脚本成功传输到 Slurm 控制器并分配了 Slurm 作业 ID 后立即退出。批处理脚本不一定会立即获得资源,它可能会在待处理作业的队列中等待一段时间,直到所需资源可用。

默认情况下,标准输出和标准错误都被定向到名为 "slurm-%j.out" 的文件,其中 "%j" 被替换为作业分配号。该文件将在作业分配的第一个节点上生成。除了批处理脚本本身,Slurm 不会移动用户文件。

当作业分配最终授予批处理脚本时,Slurm 在分配节点的第一个节点上运行批处理脚本的单个副本。

以下文档描述了各种选项对作业和任务的 CPU 分配的影响。
https://slurm.schedmd.com/cpu_management.html

 

返回值

sbatch 成功时返回 0,失败时返回错误代码。

 

脚本路径解析

批处理脚本按以下顺序解析:

1. 如果脚本以 "." 开头,则路径构造为: 当前工作目录 / 脚本
2. 如果脚本以 "/" 开头,则路径被视为绝对路径。
3. 如果脚本在当前工作目录中。
4. 如果脚本可以通过 PATH 解析。请参见 path_resolution(7)。

当前工作目录是调用进程的工作目录,除非传递了 --chdir 参数,这将覆盖当前工作目录。

 

选项

-A, --account=<账户>
将此作业使用的资源计费到指定账户。 账户 是一个任意字符串。作业提交后,可以使用 scontrol 命令更改账户名称。

--acctg-freq=<数据类型>=<间隔>[,<数据类型>=<间隔>...]
定义作业计费和分析采样间隔(以秒为单位)。 这可以用来覆盖 slurm.conf 文件中的 JobAcctGatherFrequency 参数。<数据类型>=<间隔> 指定 jobacct_gather 插件的任务采样间隔或由 acct_gather_profile 插件指定的分析类型的采样间隔。可以指定多个以逗号分隔的 <数据类型>=<间隔> 对。支持的 数据类型 值包括:
task
jobacct_gather 插件的采样间隔以及 acct_gather_profile 插件的任务分析。
注意: 此频率用于监控内存使用情况。如果强制执行内存限制,用户可以请求的最高频率是 slurm.conf 文件中配置的频率。无法禁用。

energy
使用 acct_gather_energy 插件进行能量分析的采样间隔。

network
使用 acct_gather_interconnect 插件进行 Infiniband 分析的采样间隔。

filesystem
使用 acct_gather_filesystem 插件进行文件系统分析的采样间隔。

任务采样间隔的默认值为 30 秒。 所有其他间隔的默认值为 0。 间隔为 0 将禁用指定类型的采样。 如果任务采样间隔为 0,则仅在作业终止时收集计费信息(减少 Slurm 对作业的干扰)。
较小(非零)值对作业性能的影响更大,但对于任务少于 10,000 的应用程序,30 秒的值不太可能被注意到。

-a, --array=<索引>
提交作业数组,多个作业将以相同的参数执行。 索引 规范标识应使用哪些数组索引值。可以使用逗号分隔的列表和/或带有 "-" 分隔符的值范围指定多个值。例如,"--array=0-15" 或 "--array=0,6,16-32"。 还可以使用带有冒号和数字的后缀指定步长函数。例如,"--array=0-15:4" 相当于 "--array=0,4,8,12"。 可以使用 "%" 分隔符指定作业数组中同时运行的最大任务数。 例如,"--array=0-15%4" 将限制此作业数组中同时运行的任务数为 4。 最小索引值为 0。 最大值为配置参数 MaxArraySize 的值减一。 注意: 目前,联合作业数组仅在本地集群上运行。

--batch=<列表>
节点可以由 Slurm 管理员分配 特性。 用户可以使用此选项指定其批处理脚本所需的这些 特性。 例如,作业的分配可能包括具有 "haswell" 和 "knl" 特性的 Intel Haswell 和 KNL 节点。 在这样的配置中,批处理脚本通常会在更快的 Haswell 节点上执行。 这将通过选项 "--batch=haswell" 指定。 规范可以使用和运算符和或运算符,使用与符号和竖线分隔符。例如: "--batch=haswell|broadwell" 或 "--batch=haswell|big_memory"。 --batch 参数必须是作业的 --constraint=<列表> 参数的子集(即作业不能仅请求 KNL 节点,但要求脚本在 Haswell 节点上执行)。 如果请求无法从分配给作业的资源中满足,批处理脚本将在作业分配的第一个节点上执行。

--bb=<规范>
突发缓冲区规范。规范的形式依赖于系统。 另请参见 --bbf。 使用 --bb 选项时,Slurm 解析此选项并创建一个临时的突发缓冲区脚本文件,该文件由突发缓冲区插件内部使用。有关更多信息和示例,请参见 Slurm 的突发缓冲区指南:
https://slurm.schedmd.com/burst_buffer.html

--bbf=<文件名>
包含突发缓冲区规范的文件路径。 规范的形式依赖于系统。 这些突发缓冲区指令将插入到提交的批处理脚本中。 有关更多信息和示例,请参见 Slurm 的突发缓冲区指南:
https://slurm.schedmd.com/burst_buffer.html

-b, --begin=<时间>
立即将批处理脚本提交到 Slurm 控制器,就像正常一样,但告诉控制器在指定时间之前推迟作业的分配。

时间可以是 HH:MM:SS 的形式,以在特定时间运行作业(秒是可选的)。 (如果该时间已经过去,则假定为第二天。) 您还可以指定 午夜中午十一点(上午 11 点)、下午茶(下午 3 点)或 茶点时间(下午 4 点),并且您可以在早上或晚上运行时使用 AMPM 后缀。 您还可以通过指定 MMDDYYMM/DD/YYYYYY-MM-DD 的形式指定作业将运行的日期。使用以下格式组合日期和时间 YYYY-MM-DD[THH:MM[:SS]]。您还可以给出像 now + count time-units 的时间,其中时间单位可以是 seconds(默认)、minuteshoursdaysweeks,并且您可以告诉 Slurm 在今天运行作业,使用关键字 today,并在明天运行作业,使用关键字 tomorrow。 该值可以在作业提交后使用 scontrol 命令更改。 例如:

   --begin=16:00
   --begin=now+1hour
   --begin=now+60           (默认以秒为单位)
   --begin=2010-01-20T12:34:00

关于日期/时间规范的说明:
 - 尽管代码允许 HH:MM:SS 时间规范的 "秒" 字段,但请注意,Slurm 调度程序的轮询时间不够精确,无法保证在确切的秒数上调度作业。作业将在指定时间之后的下一个轮询中有资格开始。确切的轮询间隔取决于 Slurm 调度程序(例如,默认调度/内置为 60 秒)。
 - 如果未指定时间(HH:MM:SS),默认值为(00:00:00)。
 - 如果指定了没有年份的日期(例如,MM/DD),则假定为当前年份,除非 MM/DD 和 HH:MM:SS 的组合在该年份中已经过去,此时使用下一年。

-D, --chdir=<目录>
在执行之前将批处理脚本的工作目录设置为 目录。路径可以指定为完整路径或相对路径,指向执行命令的目录。

--cluster-constraint=[!]<列表>
指定联邦集群必须具有的特性,以便向其提交兄弟作业。如果集群至少具有指定的一个特性,Slurm 将尝试向该集群提交兄弟作业。如果包含 "!" 选项,Slurm 将尝试向没有指定特性的集群提交兄弟作业。

-M, --clusters=<字符串>
要发出命令的集群。多个集群名称可以用逗号分隔。 作业将提交到提供最早预期作业启动时间的一个集群。默认值为当前集群。值为 <I>all</I> 将查询在所有集群上运行。请注意 --export 选项以控制在集群之间导出的环境变量。 请注意,slurmdbd 必须正常运行,以便此选项正常工作,除非在配置了 FederationParameters=fed_display 的联合中运行。

--comment=<字符串>
如果使用空格或某些特殊字符,则用双引号括起来的任意注释。

-C, --constraint=<列表>
节点可以由 Slurm 管理员分配 特性。 用户可以使用约束选项指定其作业所需的这些 特性。如果您正在寻找“软”约束,请参见 --prefer 以获取更多信息。 仅具有与作业约束匹配的特性的节点将用于满足请求。 可以使用 AND、OR、匹配 OR、资源计数等指定多个约束(某些运算符在所有系统类型上不受支持)。

注意: 可更改特性是由 NodeFeatures 插件定义的特性。

支持的 --constraint 选项包括:

单一名称
仅使用具有指定特性的节点。 例如,--constraint="intel"

节点计数
请求可以通过在特性名称后附加星号和计数来指定所需的节点数。 例如,--nodes=16 --constraint="graphics*4" 表示作业需要 16 个节点,并且至少四个节点必须具有 "graphics." 特性。 如果请求多个特性并使用节点计数,则请求必须用方括号括起来。

注意: 此选项不受 NodeFeatures 插件的支持。 可以使用异构作业代替。

AND
仅使用具有所有指定特性的节点。 使用与符号作为 AND 运算符。 例如,--constraint="intel&gpu"

OR
仅使用具有至少一个指定特性的节点。 使用竖线作为 OR 运算符。如果未请求可更改特性,则分配中的节点可以具有不同的特性。例如, salloc -N2 --constraint="intel|amd" 可能导致作业分配,其中一个节点具有 intel 特性,另一个节点具有 amd 特性。 但是,如果表达式包含可更改特性,则所有 OR 运算符将自动视为匹配 OR,以便作业分配中的所有节点具有相同的特性集。例如, salloc -N2 --constraint="foo|bar&baz" 作业分配了两个节点,其中两个节点都具有 foo,或 bar 和 baz(一个或两个节点可以具有 foo、bar 和 baz)。辅助 NodeFeatures 插件将找到与作业分配中的所有节点匹配的第一组节点特性;这些特性被设置为节点的活动特性,并传递给 RebootProgram(请参见 slurm.conf(5))和辅助脚本(请参见 helpers.conf(5))。在这种情况下,辅助插件使用与作业分配中的两个节点匹配的 "foo" 或 "bar,baz" 的第一个。

匹配 OR
如果仅应使用一组可能选项中的一个,则使用 OR 运算符并将选项括在方括号中。 例如,--constraint="[rack1|rack2|rack3|rack4]" 可能用于指定所有节点必须在集群的单个机架上分配,但可以使用这四个机架中的任何一个。

多个计数
可以通过使用 AND 运算符并将选项括在方括号中来指定多个资源的特定计数。 例如,--constraint="[rack1*2&rack2*4]" 可能用于指定必须从具有 "rack1" 特性的节点中分配两个节点,并且必须从具有 "rack2" 特性的节点中分配四个节点。

注意: 此构造不支持多个 Intel KNL NUMA 或 MCDRAM 模式。例如,虽然 --constraint="[(knl&quad)*2&(knl&hemi)*4]" 不受支持,但 --constraint="[haswell*2&(knl&hemi)*4]" 是支持的。 多个 KNL 模式的规范需要使用异构作业。

注意: 此选项不受 NodeFeatures 插件的支持。

注意: 多个计数可能导致作业以非最佳网络布局分配。

方括号
方括号可用于指示您正在寻找具有不同要求的节点集,这些要求包含在方括号内。例如, --constraint="[(rack1|rack2)*1&(rack3)*2]" 将为您获取一个具有 "rack1" 或 "rack2" 特性的节点和两个具有 "rack3" 特性的节点。 如果请求多个特性并使用节点计数,请求必须用方括号括起来。

注意: 方括号仅保留用于 多个计数匹配 OR 语法。 AND 运算符要求每个特性内部的计数用方括号括起来(即 "[quad*2&hemi*1]")。Slurm 只允许每个作业有一组括号约束。

注意: 辅助 NodeFeatures 插件不支持方括号。可以在没有方括号的情况下请求匹配 OR,使用竖线字符并至少有一个可更改特性。

括号
括号可用于将相似的节点特性分组。例如, --constraint="[(knl&snc4&flat)*4&haswell*1]" 可能用于指定需要四个具有 "knl"、"snc4" 和 "flat" 特性的节点以及一个具有 "haswell" 特性的节点。 括号也可以用于分组操作。如果没有括号,节点特性将严格从左到右解析。 例如, --constraint="foo&bar|baz" 请求具有 foo 和 bar,或 baz 的节点。 --constraint="foo|bar&baz" 请求具有 foo 和 baz,或 bar 和 baz 的节点(注意 baz 是与所有内容 AND 的)。 --constraint="foo&(bar|baz)" 请求具有 foo 和至少一个 bar 或 baz 的节点。 注意: 括号内的 OR 不应与 KNL NodeFeatures 插件一起使用,但受辅助 NodeFeatures 插件支持。

--container=<容器路径>
OCI 容器包的绝对路径。

--container-id=<容器 ID>
OCI 容器的唯一名称。

--contiguous
如果设置,则分配的节点必须形成一个连续的集合。

注意: 此选项仅适用于 topology/flat 插件。 其他拓扑插件会修改节点顺序并阻止此选项生效。

-S, --core-spec=<数量>
每个节点由作业保留的专用核心计数,用于系统操作,而不用于应用程序。 如果启用 AllowSpecResourcesUsage,作业可以使用此选项覆盖其所有分配节点的 CoreSpecCount。 被覆盖的专用核心仍将保留用于系统进程。 作业将获得其余核心的隐式 --exclusive 分配,导致作业的进程能够使用(并为其收费)除被覆盖的专用核心之外的节点上的所有核心。 此选项不能与 --thread-spec 选项一起使用。

注意: 显式设置作业的专用核心值隐式设置 --exclusive 选项。

--cores-per-socket=<核心>
将节点选择限制为每个插槽至少具有指定数量的核心的节点。有关启用任务/亲和性插件时的其他信息,请参见上面的 -B 选项。
注意: 如果未指定 -n,此选项可能隐式设置任务数(每个请求的线程一个任务)。

--cpu-freq=<p1>[-p2][:p3]

请求在计算节点上为此 sbatch 脚本内部的 srun 命令启动的作业步骤以某个请求的频率运行(如果可能)。

p1 可以是 [#### | low | medium | high | highm1],这将把频率 scaling_speed 设置为相应的值,并将频率 scaling_governor 设置为 UserSpace。有关值的定义,请参见下面。

p1 可以是 [Conservative | OnDemand | Performance | PowerSave],这将把 scaling_governor 设置为相应的值。该治理者必须在 slurm.conf 选项 CpuFreqGovernors 设置的列表中。

p2 存在时,p1 将是最小缩放频率,p2 将是最大缩放频率。在这种情况下,治理者 p3 或 CpuFreqDef 不能是 UserSpace,因为它不支持范围。

p2 可以是 [#### | medium | high | highm1]。p2 必须大于 p1,并且与 UserSpace 治理者不兼容。

p3 可以是 [Conservative | OnDemand | Performance | PowerSave | SchedUtil | UserSpace] 这将把治理者设置为相应的值。

如果 p3 是 UserSpace,则频率 scaling_speed、scaling_max_freq 和 scaling_min_freq 将静态设置为 p1 定义的值。

任何请求的频率低于可用的最低频率将被四舍五入到可用的最低频率。以同样的方式,任何请求的频率高于可用的最高频率将被四舍五入到可用的最高频率。

slurm.conf 中的 CpuFreqDef 参数将用于在没有 p3 的情况下设置治理者。如果没有 CpuFreqDef,默认治理者将使用每个 CPU 中设置的系统当前治理者。因此,不允许在没有 CpuFreqDef 或特定治理者的情况下指定范围。

目前可接受的值包括:

####
以千赫为单位的频率

最低可用频率

最高可用频率

高M1
(高减去一)将选择下一个最高可用频率

尝试设置可用范围中间的频率

保守
尝试使用保守 CPU 治理者

按需
尝试使用按需 CPU 治理者(默认值)

性能
尝试使用性能 CPU 治理者

节能
尝试使用节能 CPU 治理者

用户空间
尝试使用用户空间 CPU 治理者

当请求 --cpu-freq 选项时,以下信息环境变量在作业步骤中设置。

        SLURM_CPU_FREQ_REQ

如果在发出 'srun' 命令时设置了此环境变量,则此环境变量也可用于提供 CPU 频率请求的值。 命令行上的 --cpu-freq 将覆盖环境变量值。环境变量的形式与命令行相同。 有关 SLURM_CPU_FREQ_REQ 变量的描述,请参见 环境变量 部分。

注意: 此参数被视为请求,而不是要求。 如果作业步骤的节点不支持设置 CPU 频率,或者请求的值超出合法频率的范围,则会记录错误,但允许作业步骤继续。

注意: 仅为作业步骤的 CPU 设置频率意味着任务被限制在这些 CPU 上。如果未配置任务限制(即启用任务/亲和性 TaskPlugin,或启用任务/cgroup TaskPlugin,并在 cgroup.conf 中设置 "ConstrainCores=yes"),则忽略此参数。

注意: 当步骤完成时,每个选定 CPU 的频率和治理者将重置为先前的值。

注意: 提交带有 --cpu-freq 选项的作业时,使用 linuxproc 作为 ProctrackType 可能会导致作业在会计能够轮询作业信息之前运行得太快。因此,并非所有会计信息都将存在。

--cpus-per-gpu=<ncpus>
请求为每个分配的 GPU 分配 ncpus 个处理器。 继承此值的步骤将隐含 --exact。 与 --cpus-per-task 选项不兼容。

-c, --cpus-per-task=<ncpus>
通知 Slurm 控制器后续作业步骤将需要每个任务 ncpus 个处理器。未使用此选项时,控制器将尝试为每个任务分配一个处理器。

例如, 考虑一个有 4 个任务的应用程序,每个任务需要 3 个处理器。如果我们的集群由四个处理器节点组成,我们只请求 12 个处理器,控制器可能只给我们 3 个节点。然而,通过使用 --cpus-per-task=3 选项,控制器知道每个任务需要在同一节点上使用 3 个处理器,控制器将授予 4 个节点的分配,每个任务一个节点。

--deadline=<OPT>
如果在此截止日期之前无法结束,则删除作业(开始 > (截止日期 - 时间[-min] ))。 默认值为没有截止日期。请注意,如果在作业所在的分区上未配置 DefaultTimeMaxTime,则作业需要指定某种形式的时间限制(--time[-min]),如果要使用截止日期。

有效的时间格式为:
HH:MM[:SS] [AM|PM]
MMDD[YY] 或 MM/DD[/YY] 或 MM.DD[.YY]
MM/DD[/YY]-HH:MM[:SS]
YYYY-MM-DD[THH:MM[:SS]]]
now[+count[seconds(default)|minutes|hours|days|weeks]]

--delay-boot=<分钟>
如果作业在此时间段内有资格运行,则不重启节点以满足此作业的特性规范。 如果作业等待的时间少于指定的时间段,它将仅使用已经具有指定特性的节点。 参数以分钟为单位。 系统管理员可以使用 slurm.conf 文件中的 SchedulerParameters 配置参数的 delay_boot 选项设置默认值,否则默认值为零(无延迟)。

-d, --dependency=<依赖列表>
推迟此作业的开始,直到满足指定的依赖关系。一旦依赖关系满足,它将从作业中删除。 <依赖列表> 的形式为 <类型:作业_id[:作业_id][,类型:作业_id[:作业_id]]> 或 <类型:作业_id[:作业_id][?类型:作业_id[:作业_id]]>。 如果使用 "," 分隔符,则必须满足所有依赖关系。 如果使用 "?" 分隔符,则可以满足任何依赖关系。 只能使用一个分隔符。例如:
-d afterok:20:21,afterany:23
这意味着作业只能在作业 20 和 21 返回代码为 0 之后运行,并且作业 23 完成。然而:
-d afterok:20:21?afterany:23
这意味着任何条件(afterok:20 或 afterok:21 或 afterany:23)都足以释放作业。 许多作业可以共享相同的依赖关系,这些作业甚至可能属于不同的用户。该值可以在作业提交后使用 scontrol 命令更改。 允许在联合中对远程作业的依赖关系。 一旦作业依赖关系由于前一作业的终止状态而失败,即使前一作业重新排队并在后续执行中具有不同的终止状态,依赖作业将永远不会运行。
after:job_id[[+time][:jobid[+time]...]]
在指定作业启动或取消后,经过作业启动或取消后的 'time'(以分钟为单位),此作业可以开始执行。如果未给出 'time',则在启动或取消后没有延迟。

afterany:job_id[:jobid...]
此作业可以在指定作业终止后开始执行。 这是默认的依赖类型。

afterburstbuffer:job_id[:jobid...]
此作业可以在指定作业终止后开始执行,并且任何相关的突发缓冲区阶段输出操作已完成。

aftercorr:job_id[:jobid...]
此作业数组的任务可以在指定作业中对应的任务 ID 成功完成后开始执行(以退出代码为零完成)。

afternotok:job_id[:jobid...]
此作业可以在指定作业以某种失败状态终止后开始执行(非零退出代码、节点失败、超时等)。 此作业必须在指定作业仍处于活动状态时提交,或在指定作业结束后的 MinJobAge 秒内提交。

afterok:job_id[:jobid...]
此作业可以在指定作业成功执行后开始执行(以退出代码为零完成)。 此作业必须在指定作业仍处于活动状态时提交,或在指定作业结束后的 MinJobAge 秒内提交。

singleton
此作业可以在任何先前启动的共享相同作业名称和用户的作业终止后开始执行。 换句话说,在任何时候,只有一个由该名称和用户拥有的作业可以运行或暂停。 在联合中,除非在 slurm.conf 中使用 DependencyParameters=disable_remote_singleton,否则必须在所有集群上满足单例依赖关系。

-m, --distribution={*|block|cyclic|arbitrary|plane=<size>}[:{*|block|cyclic|fcyclic}[:{*|block|cyclic|fcyclic}]][,{Pack|NoPack}]

指定远程进程的替代分配方法。 对于作业分配,这设置将用于后续 srun 请求的环境变量,并且还会影响将为作业分配选择哪些核心。

此选项控制分配资源的节点上的任务分配,以及将这些资源分配给任务以进行绑定(任务亲和性)。第一个分配方法(在第一个 ":" 之前)控制任务分配到节点的方式。第二个分配方法(在第一个 ":" 之后)控制分配的 CPU 在插槽之间的分配,以便绑定到任务。第三个分配方法(在第二个 ":" 之后)控制分配的 CPU 在核心之间的分配,以便绑定到任务。只有在启用任务亲和性时,第二和第三种分配才适用。第三种分配仅在配置了任务/cgroup 插件时支持。每种分配类型的默认值由 * 指定。

请注意,使用 select/cons_tres 时,每个插槽和节点分配的 CPU 数量可能不同。有关资源分配、任务分配到节点和任务绑定到 CPU 的更多信息,请参阅 mc_support 文档。

第一个分配方法(任务在节点之间的分配):

*
使用默认方法将任务分配到节点(块)。

block
块分配方法将任务分配到节点,使得连续的任务共享一个节点。例如,考虑分配三个每个有两个 CPU 的节点。一个四任务的块分配请求将把这些任务分配到节点上,其中任务一和二在第一个节点,任务三在第二个节点,任务四在第三个节点。如果任务数量超过分配的节点数量,块分配是默认行为。

cyclic
循环分配方法将任务分配到节点,使得连续的任务在连续的节点上分配(以轮询方式)。例如,考虑分配三个每个有两个 CPU 的节点。一个四任务的循环分配请求将把这些任务分配到节点上,其中任务一和四在第一个节点,任务二在第二个节点,任务三在第三个节点。 请注意,当 SelectType 为 select/cons_tres 时,可能不会在每个节点上分配相同数量的 CPU。任务分配将在所有尚未分配给任务的节点之间轮询。如果任务数量不大于分配的节点数量,则循环分配是默认行为。

plane
任务以大小 <size> 的块进行分配。必须给出大小或设置 SLURM_DIST_PLANESIZE。分配给每个节点的任务数量与循环分配相同,但分配给每个节点的任务 ID 取决于平面大小。此选项不能与其他分配规范组合。 有关更多详细信息(包括示例和图表),请参阅 mc_support 文档和 https://slurm.schedmd.com/dist_plane.html

arbitrary
任意分配方法将按照环境变量 SLURM_HOSTFILE 指定的文件中列出的顺序分配进程。如果列出了此变量,它将覆盖任何指定的其他方法。如果未设置,则默认方法为块。 主机文件必须至少包含请求的主机数量,并且每行一个或用逗号分隔。如果指定任务数量(-n, --ntasks=<number>),您的任务将在节点上按照文件的顺序布局。
注意: 作业分配中的任意分配选项仅控制分配给作业的节点,而不控制这些节点上 CPU 的分配。此选项主要用于控制 srun 命令中现有作业分配的作业步骤任务布局。
注意: 如果给定任务数量并且也给定请求的节点列表,则如果列表中的节点数量大于任务数量,则将使用该列表中的节点数量减少到与任务数量匹配。

第二个分配方法(在插槽之间分配 CPU 以进行绑定):

*
使用默认方法在插槽之间分配 CPU(循环)。

block
块分配方法将连续分配的 CPU 从同一插槽中分配给任务绑定,然后使用下一个连续的插槽。

cyclic
循环分配方法将为给定任务绑定的分配 CPU 从同一插槽中连续分配,并从下一个连续的插槽中为下一个任务分配,以轮询方式在插槽之间分配。 需要多个 CPU 的任务将尽可能在单个插槽上分配所有这些 CPU。
注意: 在启用超线程的节点上,未请求完整核心的任务可能会在插槽之间分配。可以通过指定 --ntasks-per-core=1 来避免这种情况,这将强制任务分配完整的核心。

fcyclic
fcyclic 分配方法将为任务绑定分配的 CPU 从连续的插槽中以轮询方式分配。 需要多个 CPU 的任务将以循环方式在插槽之间分配每个 CPU。

第三个分配方法(在核心之间分配 CPU 以进行绑定):

*
使用默认方法在核心之间分配 CPU(继承自第二个分配方法)。

block
块分配方法将连续分配的 CPU 从同一核心中分配给任务绑定,然后使用下一个连续的核心。

cyclic
循环分配方法将为给定任务绑定的分配 CPU 从同一核心中连续分配,并从下一个连续的核心为下一个任务分配,以轮询方式在核心之间分配。

fcyclic
fcyclic 分配方法将为任务绑定的分配 CPU 从连续的核心中以轮询方式分配。

可选控制任务在节点之间的分配:

Pack
与其将作业步骤的任务均匀分配到其分配的节点上,不如尽可能紧密地将它们打包到节点上。 这仅在使用 "block" 任务分配方法时适用。

NoPack
与其将作业步骤的任务尽可能紧密地打包到节点上,不如均匀分配它们。 此用户选项将优先于 SelectTypeParameters CR_Pack_Nodes 配置参数。

-e, --error=<filename_pattern>
指示 Slurm 将批处理脚本的标准错误直接连接到 "filename pattern" 中指定的文件名。 默认情况下,标准输出和标准错误都指向同一个文件。 对于作业数组,默认文件名为 "slurm-%A_%a.out","%A" 被作业 ID 替换,"%a" 被数组索引替换。 对于其他作业,默认文件名为 "slurm-%j.out",其中 "%j" 被作业 ID 替换。 有关文件名规范选项,请参见下面的 filename pattern 部分。

-x, --exclude=<node_name_list>
明确排除某些节点不被分配给作业的资源。

--exclusive[={user|mcs|topo}]
作业分配不能与其他正在运行的作业(或使用 "=topo" 的拓扑段)共享节点(或仅与其他用户共享,使用 "=user" 选项,或与 "=mcs" 选项共享)。 如果未指定 user/mcs/topo(即作业分配不能与其他正在运行的作业共享节点),则作业将在分配中的所有节点上分配所有 CPU 和 GRES,但仅分配请求的内存。这是为了支持组调度,因为挂起的作业仍然驻留在内存中。要请求节点上的所有内存,请使用 --mem=0。 默认的共享/独占行为取决于系统配置,分区的 OverSubscribe 选项优先于作业的选项。 注意: 由于共享 GRES(MPS)不能与共享 GRES(GPU)同时分配,因此此选项仅分配所有共享 GRES,而不分配任何基础共享 GRES。

注意: 此选项与 --oversubscribe 是互斥的。

--export={[ALL,]<environment_variables>|ALL|NIL|NONE}
识别从提交环境中传播到启动应用程序的环境变量。请注意,SLURM_* 变量始终会传播。
--export=ALL
如果未指定 --export,则为默认模式。用户的所有环境将被加载(无论是来自调用者的环境还是如果指定了 --get-user-env 则来自干净环境)。

--export=NIL
仅定义用户环境中的 SLURM_* 和 SPANK 选项变量。用户必须使用要执行的二进制文件的绝对路径来定义环境。 用户不能使用 "NIL" 指定显式环境变量。

与 NONE 不同,NIL 不会自动使用 --get-user-env 机制创建用户的环境。

--export=NONE
仅定义用户环境中的 SLURM_* 和 SPANK 选项变量。用户必须使用要执行的二进制文件的绝对路径来定义环境。 用户不能使用 "NONE" 指定显式环境变量。 但是,Slurm 将隐式尝试在执行脚本的节点上加载用户的环境,就好像指定了 --get-user-env 一样。

此选项对于在一个集群上提交并在另一个集群上执行的作业特别重要(例如,具有不同路径)。 为了避免步骤继承环境导出设置(例如 "NONE"),作业脚本中的环境变量 SLURM_EXPORT_ENV 应设置为 "ALL"。

--export=[ALL,]<environment_variables>
导出所有 SLURM_* 和 SPANK 选项环境变量以及显式定义的变量。多个环境变量名称应用逗号分隔。 环境变量名称可以指定以传播当前值(例如 "--export=EDITOR")或特定值可以被导出(例如 "--export=EDITOR=/bin/emacs")。如果指定了 "ALL",则将加载所有用户环境变量,并优先于任何显式给定的环境变量。
示例: --export=EDITOR,ARG1=test
在此示例中,传播的环境将仅包含用户环境中的变量 EDITORSLURM_* 环境变量和 ARG1=test。

示例: --export=ALL,EDITOR=/bin/emacs
此示例有两种可能的结果。如果调用者定义了 EDITOR 环境变量,则作业的环境将从调用者的环境中继承该变量。如果调用者没有为 EDITOR 定义环境变量,则作业的环境将使用 --export 给定的值。

注意: NONE 和 [ALL,]<environment_variables> 隐式地像定义了 --get-user-env 一样工作。请参见其各自部分的影响。

--export-file={<filename>|<fd>}
如果指定的参数为 3 到 OPEN_MAX 之间的数字,则将假定为可读文件描述符(STDIN 和 STDOUT 不支持作为有效参数)。否则假定为文件名。将定义在 <filename> 中的环境变量或从 <fd> 读取的环境变量导出到作业的执行环境。内容是一个或多个环境变量定义,形式为 NAME=value,每个定义之间用空字符分隔。这允许在环境定义中使用特殊字符。

--extra=<string>
一个任意字符串,如果使用空格或某些特殊字符,则用单引号或双引号括起来。

如果启用 SchedulerParameters=extra_constraints,则此字符串用于根据每个节点的 Extra 字段进行节点过滤。

-B, --extra-node-info=<sockets>[:cores[:threads]]
限制节点选择为至少具有指定数量的插槽、每个插槽的核心和/或每个核心的线程的节点。
注意: 这些选项不指定资源分配大小。 每个指定的值被视为最小值。 可以使用星号 (*) 作为占位符,表示要利用所有可用的该类型资源。值也可以指定为 min-max。如果需要,可以在单独的选项中指定各个级别:
    --sockets-per-node=<sockets>
    --cores-per-socket=<cores>
    --threads-per-core=<threads>
如果启用了任务/亲和性插件,则以这种方式指定的分配还会导致随后启动的任务绑定到线程,如果 -B 选项指定了线程计数,否则绑定到指定的核心计数,否则绑定到插槽计数。 如果 SelectType 配置为 select/cons_tres,则必须具有 CR_Core、CR_Core_Memory、CR_Socket 或 CR_Socket_Memory 参数,以便尊重此选项。 如果未指定,scontrol show job 将显示 'ReqS:C:T=*:*:*'。此选项适用于作业分配。
注意: 此选项与 --hint--threads-per-core--ntasks-per-core 是互斥的。
注意: 此选项可能隐式设置任务数量(如果未指定 -n),每个请求的线程一个任务。

--get-user-env
此选项将告诉 sbatch 检索在 --uid 选项中指定的用户的登录环境变量。 通过运行类似 "su - <username> -c /usr/bin/env" 的命令并解析输出来检索环境变量。 请注意,sbatch 环境中已经设置的任何环境变量将优先于用户的登录环境中的任何环境变量。在调用 sbatch 之前清除您不希望传播到生成程序的任何环境变量。如果用户环境检索失败或超时,作业将被中止、重新排队并保持。

注意: 显式或隐式使用 --get-user-env 依赖于能够创建 PID 和挂载命名空间的能力。强烈建议确保 PID 和挂载命名空间的创建是可用的且没有限制(检查 /proc/sys/user/max_[pid|mnt]_namespaces 不为 0)。虽然它们并不是 --get-user-env 工作的严格必要条件,但它们确保在检索环境后不会留下孤儿进程。

--gid=<group>
如果 sbatch 以 root 身份运行,并且使用了 --gid 选项,则以 group 的组访问权限提交作业。group 可以是组名或数字组 ID。

--gpu-bind=[verbose,]<type>
等同于 --tres-bind=gres/gpu:[verbose,]<type>。 有关所有选项和文档,请参见 --tres-bind

--gpu-freq=[<type]=value>[,<type=value>][,verbose]
请求分配给作业的 GPU 配置特定频率值。 此选项可用于独立配置 GPU 及其内存频率。 作业完成后,所有受影响的 GPU 的频率将重置为最高可能值。 在某些情况下,系统功率上限可能会覆盖请求的值。 字段 type 可以是 "memory"。 如果未指定 type,则隐含为 GPU 频率。 value 字段可以是 "low"、"medium"、"high"、"highm1" 或以兆赫(MHz)为单位的数字值。 如果指定的数字值不可用,将使用尽可能接近的值。有关值的定义,请参见下文。 verbose 选项会记录当前 GPU 频率信息。 使用示例包括 "--gpu-freq=medium,memory=high" 和 "--gpu-freq=450"。

支持的 value 定义:

low
最低可用频率。

medium
尝试设置可用范围中间的频率。

high
最高可用频率。

highm1
(high minus one) 将选择下一个最高可用频率。

-G, --gpus=[type:]<number>
指定作业所需的 GPU 总数。 可以提供可选的 GPU 类型规范。 例如 "--gpus=volta:3"。 另请参见 --gpus-per-node--gpus-per-socket--gpus-per-task 选项。
注意: 分配必须在每个节点上至少包含一个 GPU,或者如果使用类型,则每个节点上必须包含每种 GPU 类型的一个。使用异构作业,如果不同节点需要不同的 GPU 类型。

--gpus-per-node=[type:]<number>
指定作业在作业资源分配中每个节点所需的 GPU 数量。 可以提供可选的 GPU 类型规范。 例如 "--gpus-per-node=volta:3"。 可以请求多个选项,以逗号分隔的列表,例如: "--gpus-per-node=volta:3,kepler:1"。 另请参见 --gpus--gpus-per-socket--gpus-per-task 选项。

--gpus-per-socket=[type:]<number>
指定作业在作业资源分配中每个插槽所需的 GPU 数量。 可以提供可选的 GPU 类型规范。 例如 "--gpus-per-socket=volta:3"。 可以请求多个选项,以逗号分隔的列表,例如: "--gpus-per-socket=volta:3,kepler:1"。 要求作业指定每个节点的插槽数量(--sockets-per-node)。 另请参见 --gpus--gpus-per-node--gpus-per-task 选项。

--gpus-per-task=[type:]<number>
指定作业在作业资源分配中每个任务所需的 GPU 数量。 可以提供可选的 GPU 类型规范。 例如 "--gpus-per-task=volta:1"。可以请求多个选项,以逗号分隔的列表,例如: "--gpus-per-task=volta:3,kepler:1"。另请参见 --gpus--gpus-per-socket--gpus-per-node 选项。 此选项需要显式的任务计数,例如 -n、--ntasks 或 "--gpus=X --gpus-per-task=Y",而不是使用 -N、--nodes 指定模糊的节点范围。 此选项将隐式设置 --tres-bind=gres/gpu:per_task:<gpus_per_task>,或者如果指定了多个 GPU 类型,则设置 --tres-bind=gres/gpu:per_task:<gpus_per_task_type_sum>。但是,可以使用显式的 --tres-bind=gres/gpu 规范覆盖该设置。

--gres=<list>
指定每个节点请求的通用可消耗资源的逗号分隔列表。 列表中每个条目的格式为 "name[[:type]:count]"。 name 是可消耗资源的类型(例如 GPU)。 type 是资源的可选分类(例如 a100)。 count 是这些资源的数量,默认值为 1。 计数可以有后缀 "k" 或 "K"(1024 的倍数),"m" 或 "M"(1024 x 1024 的倍数),"g" 或 "G"(1024 x 1024 x 1024 的倍数),"t" 或 "T"(1024 x 1024 x 1024 x 1024 的倍数),"p" 或 "P"(1024 x 1024 x 1024 x 1024 x 1024 的倍数)。 指定的资源将在每个节点上分配给作业。 可用的通用可消耗资源由系统管理员配置。 如果选项参数为 "help",将打印可用的通用可消耗资源列表,并且命令将退出。 使用示例包括 "--gres=gpu:2"、"--gres=gpu:kepler:2" 和 "--gres=help"。

--gres-flags=<type>
指定通用资源任务绑定选项。

multiple-tasks-per-sharing
否定 one-task-per-sharing。如果在 SelectTypeParameters 中默认设置了此选项,则此选项非常有用。

disable-binding
否定 enforce-binding。如果在 SelectTypeParameters 中默认设置了此选项,则此选项非常有用。

enforce-binding
作业可用的唯一 CPU 将是绑定到所选 GRES 的那些(即,在 gres.conf 文件中标识的 CPU 将被严格执行)。此选项可能导致作业启动延迟。 例如,要求两个 GPU 和一个 CPU 的作业将被延迟,直到单个插槽上的两个 GPU 可用,而不是使用绑定到不同插槽的 GPU,但是,由于改善了通信速度,应用程序性能可能会提高。 要求节点配置有多个插槽,并且资源过滤将在每个插槽的基础上执行。
注意: 此选项可以在 SelectTypeParameters 中默认设置。
注意: 此选项特定于 SelectType=cons_tres
注意: 如果尝试在多个插槽上的多个 GRES 上强制绑定,此选项可能会产生未定义的结果。

one-task-per-sharing
不允许不同任务从同一共享 GRES 中分配共享 GRES。
注意: 仅在请求共享 GRES 时使用 --tres-per-task 时强制执行此标志。
注意: 此选项可以在 SelectTypeParameters=ONE_TASK_PER_SHARING_GRES 中默认设置。
注意: 此选项特定于 SelectTypeParameters=MULTIPLE_SHARING_GRES_PJ

-h, --help
显示帮助信息并退出。

--hint=<type>
根据应用程序提示绑定任务。
注意: 此选项暗示某些相关选项的特定值,这会阻止与用户指定的 --ntasks-per-core--threads-per-core-B 一起使用。 这些冲突选项将在指定为命令行参数时覆盖 --hint。如果冲突选项作为环境变量指定,则命令行参数中的 --hint 将优先。
compute_bound
选择计算密集型应用程序的设置: 在每个插槽中使用所有核心,每个核心一个线程。

memory_bound
选择内存密集型应用程序的设置: 在每个插槽中仅使用一个核心,每个核心一个线程。

multithread
使用额外线程进行核心内多线程,这可以使通信密集型应用程序受益。 仅支持任务/亲和性插件。

nomultithread
不使用额外线程进行核心内多线程; 将任务限制为每个核心一个线程。 仅支持任务/亲和性插件。

help
显示此帮助信息

-H, --hold
指定作业以保持状态提交(优先级为零)。 可以使用 scontrol 释放被保持的作业,以重置其优先级(例如 "scontrol release <job_id>")。

--ignore-pbs
忽略批处理脚本中指定的所有 "#PBS" 和 "#BSUB" 选项。

-i, --input=<filename_pattern>
指示 Slurm 将批处理脚本的标准输入直接连接到 "filename pattern" 中指定的文件名。

默认情况下,"/dev/null" 在批处理脚本的标准输入上打开,标准输出和标准错误都指向名为 "slurm-%j.out" 的文件,其中 "%j" 被作业分配号替换,如下面的 filename pattern 部分所述。

-J, --job-name=<jobname>
指定作业分配的名称。指定的名称将在查询系统上运行的作业时与作业 ID 号一起出现。默认值为批处理脚本的名称,或者如果脚本在 sbatch 的标准输入中读取,则为 "sbatch"。

--kill-on-invalid-dep=<yes|no>
如果作业有无效依赖且永远无法运行,则此参数告诉 Slurm 是否终止它。被终止的作业状态将为 JOB_CANCELLED。 如果未指定此选项,则适用系统范围的行为。 默认情况下,作业保持待处理状态,原因是 DependencyNeverSatisfied,或者如果 slurm.conf 中指定了 kill_invalid_depend,则作业被终止。

-L, --licenses=<license>[@db][:count][,license[@db][:count]...]
指定必须分配给此作业的许可证(或集群所有节点上可用的其他资源)。 许可证名称后可以跟一个冒号和计数(默认计数为 1)。 可以请求多个许可证。如果它们用逗号(",",表示 AND)分隔,则作业需要所有请求的许可证。例如,"--licenses=foo:4,bar"。如果用管道("|",表示 OR)分隔,则作业只需要请求的许可证之一。例如,"--licenses=foo:4bar"。不能同时使用 AND 和 OR。 要提交使用远程许可证的作业,即由 slurmdbd 提供的许可证,请指定提供许可证的服务器名称。 例如 "--license=nastran@slurmdb:12"。

注意: 提交异构作业时,许可证请求只能在第一个组件作业上进行。 例如 "sbatch -L ansys:2 : script.sh"。

注意: 如果在 AccountingStorageTres 中跟踪许可证并且使用 OR,则 ReqTRES 将显示所有请求的 tres,以逗号分隔。AllocTRES 将仅显示分配给作业的许可证。

注意: 当作业请求 OR 的许可证时,Slurm 将尝试按请求的顺序分配许可证。此指定顺序将优先于即使在请求的保留上可以满足的其余请求的许可证。这也适用于当 SchedulerParameters=bf_licenses 配置时的回填计划。

--mail-type=<type>
当发生某些事件类型时,通过电子邮件通知用户。 有效的 type 值为 NONE、BEGIN、END、FAIL、REQUEUE、ALL(等同于 BEGIN、END、FAIL、INVALID_DEPEND、REQUEUE 和 STAGE_OUT)、INVALID_DEPEND(依赖关系从未满足)、STAGE_OUT(突发缓冲区阶段完成并拆除完成)、TIME_LIMIT、TIME_LIMIT_90(达到时间限制的 90%)、TIME_LIMIT_80(达到时间限制的 80%)、TIME_LIMIT_50(达到时间限制的 50%)和 ARRAY_TASKS(为每个数组任务发送电子邮件)。 可以在逗号分隔的列表中指定多个 type 值。 NONE 将抑制所有事件通知,忽略任何其他指定的值。 默认情况下,不会发送电子邮件通知。 要通知的用户由 --mail-user 指定。

除非指定 ARRAY_TASKS 选项,否则作业 BEGIN、END、FAIL 和 REQUEUE 的邮件通知适用于整个作业数组,而不是为作业数组中的每个任务生成单独的电子邮件消息。

--mail-user=<user>
接收状态变化电子邮件通知的用户,如 --mail-type 所定义。这可以是完整的电子邮件地址或用户名。如果指定了用户名,则将附加 slurm.conf 中 MailDomain 的值以创建电子邮件地址。 默认值为提交用户。

--mcs-label=<mcs>
仅在启用兼容的 MCSPlugin 时使用。此参数是用户所属的组(mcs/group)或任意标签字符串(mcs/label)。在这两种情况下,默认情况下不会分配标签。有关更多详细信息,请参阅 MCS 文档:<https://slurm.schedmd.com/mcs.html>

--mem=<size>[units]
指定每个节点所需的实际内存。 默认单位为兆字节。 可以使用后缀 [K|M|G|T] 指定不同的单位。 默认值为 DefMemPerNode,最大值为 MaxMemPerNode。如果配置了这两个参数,可以使用 scontrol show config 命令查看。 此参数通常在将整个节点分配给作业时使用(SelectType=select/linear)。 另请参见 --mem-per-cpu--mem-per-gpu--mem--mem-per-cpu--mem-per-gpu 选项是互斥的。如果将 --mem--mem-per-cpu--mem-per-gpu 作为命令行参数指定,则它们将优先于环境。

注意: 内存大小规范为零被视为特殊情况,并授予作业访问每个节点上的所有内存。

注意: 每个 slurmstepd 进程使用的内存包含在作业的总内存使用中。它通常消耗 20MiB 到 200MiB 之间的内存,尽管这可能因系统配置和任何加载的插件而异。

注意: 除非 Slurm 配置为使用强制机制,否则内存请求将不会严格执行。有关更多详细信息,请参见 cgroup.conf(5)手册页中的 ConstrainRAMSpaceslurm.conf(5)手册页中的 OverMemoryKill

--mem-bind=[{quiet|verbose},]<type>
将任务绑定到内存。仅在启用任务/亲和性插件并且 NUMA 内存功能可用时使用。 请注意,CPU 和内存绑定的分辨率可能在某些架构上有所不同。 例如,CPU 绑定可能在处理器内的核心级别执行,而内存绑定将在节点级别执行,其中 "节点" 的定义可能因系统而异。 默认情况下,不执行内存绑定;任何使用任何 CPU 的任务都可以使用任何内存。此选项通常用于确保每个任务绑定到离其分配的 CPU 最近的内存。不建议使用除 "none" 或 "local" 以外的任何类型。

注意: 要让 Slurm 始终报告在 shell 中执行的所有命令的所选内存绑定,可以通过将 SLURM_MEM_BIND 环境变量值设置为 "verbose" 来启用详细模式。

--mem-bind 在使用时,将设置以下信息环境变量:

   SLURM_MEM_BIND_LIST
   SLURM_MEM_BIND_PREFER
   SLURM_MEM_BIND_SORT
   SLURM_MEM_BIND_TYPE
   SLURM_MEM_BIND_VERBOSE

有关单个 SLURM_MEM_BIND* 变量的更详细描述,请参见 环境变量 部分。

支持的选项包括:

help
显示此帮助信息

local
使用与正在使用的处理器本地的内存

map_mem:<list>
通过在任务(或排名)上设置内存掩码进行绑定,如所指定的,其中 <list> 为 <numa_id_for_task_0>,<numa_id_for_task_1>,... 映射是针对节点指定的,并且相同的映射应用于每个节点上的任务(即,每个节点上的最低任务 ID 映射到列表中指定的第一个 ID,依此类推)。 NUMA ID 被解释为十进制值,除非它们前面带有 '0x',在这种情况下它们被解释为十六进制值。 如果任务(或排名)的数量超过此列表中的元素数量,则列表中的元素将根据需要从列表的开头重新使用。 为了简化对大量任务计数的支持,列表可以在后面跟随一个星号和重复计数。 例如 "map_mem:0x0f*4,0xf0*4"。 为了获得可预测的绑定结果,作业中每个节点的所有 CPU 应分配给作业。

mask_mem:<list>
通过在任务(或排名)上设置内存掩码进行绑定,如所指定的,其中 <list> 为 <numa_mask_for_task_0>,<numa_mask_for_task_1>,... 映射是针对节点指定的,并且相同的映射应用于每个节点上的任务(即,每个节点上的最低任务 ID 映射到列表中指定的第一个掩码,依此类推)。 NUMA 掩码 始终 被解释为十六进制值。 请注意,如果掩码不以 [0-9] 开头,则必须在掩码前面加上 '0x',以便将其视为数值。 如果任务(或排名)的数量超过此列表中的元素数量,则列表中的元素将根据需要从列表的开头重新使用。 为了简化对大量任务计数的支持,列表可以在后面跟随一个掩码和重复计数。 例如 "mask_mem:0*4,1*4"。 为了获得可预测的绑定结果,作业中每个节点的所有 CPU 应分配给作业。

no[ne]
不将任务绑定到内存(默认)

p[refer]
优先使用第一个指定的 NUMA 节点,但允许
 使用 其他 可用 NUMA 节点。

q[uiet]
在任务运行之前安静地绑定(默认)

rank
按任务排名绑定(不推荐)

sort
对空闲缓存页面进行排序(在 Intel KNL 节点上运行 zonesort)

v[erbose]
显示详细信息

slurm_link" id="OPT_v[erbose]" href="#OPT_v[erbose]">
在任务运行之前详细报告绑定信息

--mem-per-cpu=<大小>[单位]
每个可用分配CPU所需的最小内存。 默认单位为兆字节。 默认值为DefMemPerCPU,最大值为 MaxMemPerCPU(见下面的例外)。如果配置了这两个参数,可以使用scontrol show config命令查看。 请注意,如果作业的--mem-per-cpu值超过配置的 MaxMemPerCPU,则用户的限制将被视为每个任务的内存限制;--mem-per-cpu将被减少到不大于 MaxMemPerCPU的值;--cpus-per-task将被设置,且 --cpus-per-task的值乘以新的--mem-per-cpu 值将等于用户指定的原始--mem-per-cpu值。 如果单个处理器分配给作业(SelectType=select/cons_tres),通常会使用此参数。 如果按核心、插槽或整个节点分配资源,则分配给作业的CPU数量可能会高于任务计数,--mem-per-cpu的值应相应调整。 另请参见--mem--mem-per-gpu--mem--mem-per-cpu--mem-per-gpu 选项是互斥的。

注意:如果作业请求的最终内存量 无法满足分区中配置的任何节点,则作业将被拒绝。 如果作业分配使用--exclusive选项,并且--mem-per-cpu 乘以节点上的CPU数量大于该节点的总内存,则可能会发生这种情况。

注意:这适用于作业分配中的可用分配CPU。 当每个核心配置多个线程时,这一点很重要。 如果作业请求--threads-per-core的线程数少于核心上存在的线程数 (或--hint=nomultithread,这意味着 --threads-per-core=1),作业将无法使用核心上的额外线程,这些线程将不包括在每个CPU的内存计算中。 但如果作业可以访问核心上的所有线程,即使作业没有 明确请求这些线程,这些线程也将被包括在每个CPU的内存计算中。

在以下示例中,每个核心有两个线程。

在第一个示例中,由于未使用--threads-per-core,两个任务可以在同一核心的不同超线程上运行。第三个任务使用第二个核心的两个线程。每个CPU分配的内存包括所有线程:

$ salloc -n3 --mem-per-cpu=100
salloc: Granted job allocation 17199
$ sacct -j $SLURM_JOB_ID -X -o jobid%7,reqtres%35,alloctres%35
  JobID                             ReqTRES                           AllocTRES
------- ----------------------------------- -----------------------------------
  17199     billing=3,cpu=3,mem=300M,node=1     billing=4,cpu=4,mem=400M,node=1

在第二个示例中,由于--threads-per-core=1,每个 任务被分配一个完整的核心,但每个核心只能使用一个 线程。分配的CPU包括每个核心上的所有线程。然而,每个CPU分配的内存仅包括每个核心中的可用线程。

$ salloc -n3 --mem-per-cpu=100 --threads-per-core=1
salloc: Granted job allocation 17200
$ sacct -j $SLURM_JOB_ID -X -o jobid%7,reqtres%35,alloctres%35
  JobID                             ReqTRES                           AllocTRES
------- ----------------------------------- -----------------------------------
  17200     billing=3,cpu=3,mem=300M,node=1     billing=6,cpu=6,mem=300M,node=1

--mem-per-gpu=<大小>[单位]
每个分配的GPU所需的最小内存。 默认单位为兆字节。 可以使用后缀[K|M|G|T]指定不同的单位。 默认值为DefMemPerGPU,可在全局和每个分区基础上使用。 如果配置了这些参数,可以使用scontrol show configscontrol show partition命令查看。 另请参见--mem--mem--mem-per-cpu--mem-per-gpu 选项是互斥的。

--mincpus=<n>
指定每个节点的最小逻辑CPU/处理器数量。

--network=<类型>
指定与交换机或网络相关的信息。 类型的解释依赖于系统。 当在Cray上本地运行Slurm时支持此选项。它用于请求使用网络性能计数器。 每个请求仅允许一个值。 所有选项不区分大小写。 在此配置中,支持的值包括:
system
使用系统范围的网络性能计数器。仅请求的节点 将被标记为作业分配中使用。如果作业没有 填满整个系统,其他作业使用NPC时,剩余的节点将无法使用,如果空闲,它们的状态将显示为 PerfCnts。这些节点仍然可供其他不使用NPC的作业使用。

blade
使用刀片网络性能计数器。仅请求的节点 将被标记为作业分配中使用。如果作业没有 填满分配给作业的整个刀片,这些刀片将无法被其他使用NPC的作业使用,如果空闲,它们的状态将显示为 PerfCnts。这些节点仍然可供其他不使用NPC的作业使用。

在所有情况下,作业分配请求必须指定 --exclusive选项。否则请求将被拒绝。

此外,使用这些选项时,步骤不允许共享刀片, 因此如果在刀片上运行的步骤没有占用刀片上的所有节点,资源将保持空闲。

network选项在具有HPE Slingshot网络的系统上也可用。 它可用于请求作业VNI(用于作业中作业步骤之间的通信)。 它还可以用于覆盖为作业步骤分配的默认网络资源。可以在以逗号分隔的列表中指定多个值。

tcs=<class1>[:<class2>]...
为应用程序配置的流量类别集合。 支持的流量类别包括DEDICATED_ACCESS、LOW_LATENCY、BULK_DATA和 BEST_EFFORT。流量类别也可以指定为TC_DEDICATED_ACCESS、 TC_LOW_LATENCY、TC_BULK_DATA和TC_BEST_EFFORT。

no_vni
不为此作业分配任何VNI(即使是多节点)。

job_vni
为此作业分配一个作业VNI。

single_node_vni
即使是单节点作业,也为此作业分配一个作业VNI。

adjust_limits
如果设置,slurmd将通过取每个NIC的最大资源数量并减去 任何系统网络服务的保留或使用值(取较高者)来设置网络资源预留的上限; 这是默认值。

no_adjust_limits
如果设置,slurmd将仅根据每个资源配置的默认值和应用程序中的任务数量计算网络资源预留; 它不会根据已存在的系统网络服务的资源使用情况设置这些预留请求的上限。 设置此选项意味着基于网络资源耗尽,更多的应用程序启动可能会失败,但如果应用程序 绝对需要一定数量的资源才能运行,此选项将确保这一点。

disable_rdzv_get
禁用Slingshot NIC中的会合获取,这可以提高某些应用程序的性能。

def_<rsrc>=<val>
此资源的每个CPU保留分配。

res_<rsrc>=<val>
此资源的每个节点保留分配。 如果设置,覆盖每个CPU的分配。

max_<rsrc>=<val>
此资源的每个节点最大限制。

depth=<depth>
每个CPU资源分配的乘数。 默认值为节点上保留的CPU数量。

可以请求的资源包括:

txqs
传输命令队列。默认值为每个CPU 2,最大值为每个节点1024。

tgqs
目标命令队列。默认值为每个CPU 1,最大值为每个节点512。

eqs
事件队列。默认值为每个CPU 2,最大值为每个节点2047。

cts
计数器。默认值为每个CPU 1,最大值为每个节点2047。

tles
触发器列表条目。默认值为每个CPU 1,最大值为每个节点2048。

ptes
可移植表条目。默认值为每个CPU 6,最大值为每个节点2048。

les
列表条目。默认值为每个CPU 16,最大值为每个节点16384。

acs
寻址上下文。默认值为每个CPU 2,最大值为每个节点1022。

--nice[=调整值]
以调整后的调度优先级在Slurm中运行作业。没有 调整值时,调度优先级降低100。负的nice值会提高优先级,否则会降低优先级。调整范围为 +/- 2147483645。只有特权用户可以指定负的调整值。

-k, --no-kill[=off]
如果分配的节点之一失败,则不自动终止作业。用户将承担故障容错的责任 如果节点失败。 作业分配不会被撤销,因此用户可以在其分配的剩余节点上启动新的 作业步骤。 此选项不会设置SLURM_NO_KILL环境变量。 因此,当节点失败时,运行在该节点上的步骤将被终止,除非 SLURM_NO_KILL环境变量被显式设置,或者作业分配内的srun调用显式请求了--no-kill。

指定可选参数“off”以禁用SBATCH_NO_KILL环境变量的效果。

默认情况下,如果其分配的任何节点失败,Slurm将终止整个作业分配。

--no-requeue
指定批处理作业在任何情况下都不应重新排队 (见下面的说明)。 设置此选项将阻止系统管理员能够 重新启动作业(例如,在计划的停机后)、从 节点故障中恢复或在被更高优先级作业抢占时重新排队。 当作业被重新排队时,批处理脚本将从头开始启动。 另请参见--requeue选项。 JobRequeue配置参数控制集群上的默认 行为。

注意:如果将ForceRequeueOnFail设置为slurm.conf中的PrologFlags参数选项,则可以覆盖此设置。

-F, --nodefile=<node_file>
--nodelist类似,但列表包含在名为 node file的文件中。列表中的节点名称也可以跨多行 在文件中。文件中的重复节点名称将被忽略。 列表中节点名称的顺序不重要;节点名称 将由Slurm排序。

-w, --nodelist=<node_name_list>
请求特定的主机列表。 作业将包含所有这些主机,并可能根据需要添加其他主机以满足资源要求。 列表可以指定为以逗号分隔的主机列表、主机范围 (例如,host[1-5,7,...])或文件名。 如果您指定的主机列表包含“/”字符,则将假定该主机列表为文件名。 如果您指定的最小节点或处理器数量大于提供的主机列表可以满足的数量,则将根据需要在其他节点上分配额外资源。 列表中的重复节点名称将被忽略。 列表中节点名称的顺序不重要;节点名称 将由Slurm排序。

-N, --nodes=<minnodes>[-maxnodes]|<size_string>
请求分配至少minnodes个节点给此作业。 还可以使用maxnodes指定最大节点数。 如果只指定一个数字,则将其用作最小和 最大节点数。节点计数也可以指定为size_string。 size_string规范确定应使用哪些节点值。 多个值可以使用逗号分隔的列表或 通过后缀包含冒号和 数字值的“-”分隔符的步进函数指定。 例如,“--nodes=1-15:4”相当于“--nodes=1,5,9,13”。 分区的节点限制优先于作业的限制。 如果作业的节点限制超出其 关联分区允许的范围,作业将保持在PENDING状态。 这允许在稍后时间执行,当分区 限制更改时。 如果作业节点限制超过分区中配置的节点数,则作业将被拒绝。 请注意,环境 变量SLURM_JOB_NUM_NODES将被设置为实际 分配给作业的节点计数。有关更多信息,请参见环境变量部分。 如果未指定-N,默认行为是分配足够的节点以满足请求的资源,如 通过每个作业规范选项表达的,例如-n-c--gpus。 作业将在指定范围内分配尽可能多的节点,而不会延迟作业的启动。 节点计数规范可以包括一个数字值,后跟“k”后缀 (将数字值乘以1,024)或“m”后缀(将数字值乘以 1,048,576)。

注意:此选项不能与任意分配一起使用。

-n, --ntasks=<数字>
sbatch不启动任务,它请求资源分配并 提交批处理脚本。此选项告知Slurm控制器,作业 步骤在分配内将启动最多数字个任务,并提供足够的资源。 默认情况下,每个节点一个任务,但请注意 --cpus-per-task选项将更改此默认值。

--ntasks-per-core=<ntasks>
请求在每个核心上调用最多ntasks。 旨在与--ntasks选项一起使用。 与--ntasks-per-node相关,但在核心级别 而不是节点级别。此选项将被srun继承。 Slurm可能会分配比请求的更多CPU以遵循此 选项。
注意:在使用 SelectType=select/linear时不支持此选项。此值不能大于 --threads-per-core

--ntasks-per-gpu=<ntasks>
请求每个GPU调用ntasks个任务。 此选项可以以两种方式工作:1)另外指定--ntasks,在这种情况下,将自动确定无类型的GPU规范以满足--ntasks-per-gpu,或者2)指定所需的GPU (例如,通过--gpus--gres)而不指定--ntasks, 总任务计数将自动确定。 如果需要,将自动增加所需的CPU数量以允许 任何计算的任务计数。 此选项将隐式设置--tres-bind=gres/gpu:single:<ntasks>, 但可以通过显式--tres-bind=gres/gpu规范覆盖。 此选项与节点范围不兼容 (即-N<minnodes-maxnodes>)。 此选项与--gpus-per-task--gpus-per-socket--ntasks-per-node不兼容。 除非配置了SelectType=cons_tres(直接或间接在Cray系统上),否则不支持此选项。

--ntasks-per-node=<ntasks>
请求在每个节点上调用ntasks。 如果与--ntasks选项一起使用,则--ntasks选项将优先, --ntasks-per-node将被视为每个节点的最大任务数。 旨在与--nodes选项一起使用。 这与--cpus-per-task=ncpus相关, 但不需要知道每个节点上实际的CPU数量。在某些情况下,能够 请求每个节点最多调用特定数量的任务更为方便。 这包括提交 一个混合MPI/OpenMP应用程序,其中每个节点只应分配一个MPI“任务/排名”,同时允许OpenMP部分利用 节点中存在的所有并行性,或将单个 设置/清理/监控作业提交到预先存在的 分配的每个节点,作为更大作业脚本中的一步。

--ntasks-per-socket=<ntasks>
请求在每个插槽上调用最多ntasks。 旨在与--ntasks选项一起使用。 与--ntasks-per-node相关,但在插槽级别 而不是节点级别。 注意:在使用 SelectType=select/linear时不支持此选项。

--oom-kill-step[={0|1}]
如果在步骤的任何任务中检测到OOM事件,是否终止整个步骤。这将覆盖 slurm.conf中TaskPluginParam中的“OOMKillStep”设置。当未设置时,将使用slurm.conf中的设置。当设置时,值 “0”将禁用终止整个步骤,而值“1”将启用 它。这适用于整个分配,外部步骤除外。 默认值为“1”(启用),当找到该选项但没有值时。

--open-mode={append|truncate}
根据指定的方式以追加或截断模式打开输出和错误文件。 默认值由系统配置参数JobFileAppend指定。

-o, --output=<filename_pattern>
指示Slurm将批处理脚本的标准输出直接连接到指定的 “filename pattern”中的文件名。 默认情况下,标准输出和标准错误都指向同一文件。 对于作业数组,默认文件名为“slurm-%A_%a.out”,“%A”被作业ID替换,“%a”被数组索引替换。 对于其他作业,默认文件名为“slurm-%j.out”,其中“%j”被作业ID替换。 有关文件名规范选项,请参见下面的文件名模式部分。

-O, --overcommit
超额分配资源。

当应用于作业分配时(不包括请求独占访问节点的作业),资源将被分配为仅请求每个节点一个任务。这意味着每个任务请求的CPU数量 (-c--cpus-per-task)按节点分配,而不是 乘以任务数量。用于指定每个节点、插槽、核心等的任务数量的选项将被忽略。

当应用于作业步骤分配时(在现有作业分配内执行的srun命令),此选项可用于在每个CPU上启动多个任务。 通常,srun不会在每个CPU上分配超过一个进程。 通过指定--overcommit,您显式允许每个CPU多个进程。然而,每个节点最多允许MAX_TASKS_PER_NODE个任务执行。注意MAX_TASKS_PER_NODE在文件slurm.h中定义,并不是变量,它在 Slurm构建时设置。

-s, --oversubscribe
作业分配可以与其他正在运行的作业超额订阅资源。 要超额订阅的资源可以是节点、插槽、核心和/或 超线程,具体取决于配置。 默认的超额订阅行为取决于系统配置,分区的OverSubscribe选项优先于作业的选项。 此选项可能会导致分配比未设置--oversubscribe选项时更早获得,但由于资源竞争,应用程序性能可能会受到影响。 另请参见--exclusive选项。

注意:此选项与--exclusive互斥。

--parsable
仅输出作业ID号和集群名称(如果存在)。 值用分号分隔。错误仍将显示。

-p, --partition=<partition_names>
请求特定分区进行资源分配。如果未指定, 默认行为是允许slurm控制器选择系统管理员指定的默认 分区。如果作业可以使用多个分区,请在逗号分隔的列表中指定它们的名称,并将提供最早启动的分区用于作业,而不考虑分区名称的顺序(尽管会优先考虑优先级较高的分区)。 当作业启动时,使用的分区名称将首先放在作业记录的分区字符串中。

--prefer=<list>
节点可以由Slurm管理员分配特性。 用户可以使用prefer选项指定其作业所需但不要求的这些特性。 此选项独立于--constraint操作,并将在可能的情况下覆盖那里设置的内容。 在调度时,首先尝试--prefer中的特性。如果没有可用的节点集具有这些特性,则尝试--constraint。 有关更多信息,请参见--constraint,此选项的行为相同。

--priority=<>
请求特定的作业优先级。 可能受特定配置约束。 应为数字值或“TOP”(表示最高可能值)。 只有Slurm操作员和管理员可以设置作业的优先级。

--profile={all|none|<type>[,<type>...]}
启用acct_gather_profile插件的详细数据收集。 详细数据通常是时间序列,存储在作业的HDF5文件或InfluxDB数据库中,具体取决于配置的插件。
All
收集所有数据类型。(不能与其他值组合。)

None
未收集任何数据类型。这是默认值。
 (不能 与 其他 值 组合。)

有效的类型值包括:

Energy
收集能量数据。

Task
收集任务(I/O、内存等)数据。

Lustre
收集Lustre数据。

Network
收集网络(InfiniBand)数据。

--propagate[=rlimit[,rlimit...]]
允许用户指定要传播到计算节点并应用于其作业的可修改(软)资源限制。如果未指定rlimit,则将传播所有资源限制。 以下rlimit名称由Slurm支持(尽管某些 选项可能在某些系统上不受支持):
ALL
所有以下列出的限制(默认)

NONE
未列出任何限制

AS
进程的最大地址空间(虚拟内存)。

CORE
核心文件的最大大小
CPU
最大CPU时间

DATA
进程数据段的最大大小

FSIZE
创建的文件的最大大小。请注意,如果用户将FSIZE设置为小于当前slurmd.log的大小,则作业启动将失败,并出现“文件大小限制超出”的错误。

MEMLOCK
可以锁定在内存中的最大大小

NOFILE
最大打开文件数

NPROC
可用的最大进程数量

RSS
最大常驻集大小。请注意,这仅在Linux 内核2.4.30或更早版本或BSD中生效。

STACK
最大堆栈大小

-q, --qos=<qos>
请求作业的服务质量,或以逗号分隔的QOS列表。 如果请求列表,将根据给定QOS的优先级进行排序, 第一个为最高优先级。 QOS值可以在Slurm数据库中为每个用户/集群/账户关联定义。 当Slurm配置参数AccountingStorageEnforce包括 “qos”时,用户将被限制在其关联定义的qos集合中。

-Q, --quiet
抑制来自sbatch的信息性消息,例如作业ID。只有错误仍将显示。

--reboot
强制分配的节点在启动作业之前重启。 这仅在某些系统配置中受支持,否则将被 静默忽略。只有root、SlurmUser或管理员可以重启节点。

--requeue
指定批处理作业应有资格重新排队。 作业可以由系统管理员显式重新排队,在节点 故障后,或在被更高优先级作业抢占时。 当作业被重新排队时,批处理脚本将从头开始启动,具有 相同的作业ID。另请参见--no-requeue选项。 JobRequeue配置参数控制集群上的默认 行为。

--reservation=<reservation_names>
从指定的预留中为作业分配资源。如果作业可以使用 多个预留,请在逗号分隔的列表中指定它们的名称,并选择提供最早启动的预留。每个预留将按照请求的顺序进行考虑。 所有预留将在作业生命周期内通过scontrol/squeue列出。 在会计中,将看到第一个预留,作业启动后,使用的预留将替换它。

--resv-ports[=count]
为此作业保留通信端口。用户可以指定要保留的端口数量。必须在slurm.conf中指定参数MpiParams=ports=12000-12999。如果保留的端口数量为零,则不保留任何端口。仅用于本地Cray的PMI。 此选项只能在启用slurmstepd步骤管理时使用。 此选项适用于作业分配。请参见--stepmgr

--segment=<segment_size>
当使用块拓扑时,这定义了用于创建作业分配的段的大小。 不会对作业需要放置在同一更高层块中的所有段施加要求。

注意:请求的节点计数必须始终能被请求的段大小整除。

注意:段大小必须小于或等于 计划的基础块大小。例如,对于基础块大小为30个节点的系统,“--segment 40”将无效。

--signal=[{R|B}:]<sig_num>[@sig_time]
当作业在sig_time秒内接近结束时间时, 向其发送信号sig_num。 由于Slurm事件处理的分辨率,信号可能 会在指定时间之前最多发送60秒。 sig_num可以是信号编号或名称(例如“10”或“USR1”)。 sig_time必须是介于0和65535之间的整数值。 默认情况下,在作业结束时间之前不会发送信号。 如果指定sig_num而没有任何sig_time, 默认时间将为60秒。 使用“B:”选项仅向批处理shell发送信号,其他 进程将不会收到信号。默认情况下,所有作业步骤将收到信号, 但批处理shell本身不会收到信号。 使用“R:”选项允许此作业与具有 MaxStartDelay设置的预留重叠。如果使用“R:”选项,必须在 系统上启用抢占,如果作业被抢占,将在允许的情况下重新排队,否则作业将被取消。 要在抢占时发送信号,请参见send_user_signal PreemptParameter

--sockets-per-node=<sockets>
将节点选择限制为至少具有指定数量的 插槽的节点。有关启用任务/亲和性插件时的更多信息,请参见上面的-B选项。
注意:此选项可能隐式设置任务数量(如果未指定-n),每个请求的线程一个任务。

--spread-job
尽可能将作业分配分散到多个节点,并尝试 在分配的节点之间均匀分配任务。 此选项禁用拓扑/树插件。

--stepmgr
如果未在系统范围内启用,则为每个作业启用slurmstepd步骤管理。 这允许作业步骤由与作业关联的单个外部slurmstepd管理,以管理步骤。这对在其分配内提交多个步骤的作业非常有利。必须设置PrologFlags=contain

--switches=<count>[@max-time]
当使用树拓扑时,这定义了作业分配所需的最大叶交换机数量,并可选择等待该数量交换机的最大时间。如果Slurm找到包含的分配的交换机数量超过指定的数量,则作业将保持待处理状态,直到找到具有所需交换机数量的分配或时间限制到期。 如果没有交换机数量限制,则启动作业时没有延迟。 可接受的时间格式包括“分钟”、“分钟:秒”、“小时:分钟:秒”、“天-小时”、“天-小时:分钟”和“天-小时:分钟:秒”。 作业的最大时间延迟可能会受到系统管理员的限制,使用SchedulerParameters配置参数中的 max_switch_wait参数选项。 在龙虾网络上,唯一支持的交换机数量为1,因为当作业在一个叶交换机上分配资源时,通信性能将最高,或者超过2个叶交换机。 默认的最大时间是max_switch_wait SchedulerParameters。

--test-only
验证批处理脚本并返回估计的作业何时会 根据当前作业队列和所有其他指定作业要求的参数安排运行。实际上不会提交作业。

--thread-spec=<num>
为系统操作保留的每个节点的专用线程计数, 不被应用程序使用。应用程序不会使用这些线程, 但将为其分配收费。 此选项不能与--core-spec选项一起使用。

注意:显式设置作业的专用线程值隐式设置 其--exclusive选项,为作业保留整个节点。

--threads-per-core=<threads>
将节点选择限制为每个核心至少具有指定数量的 线程。在任务布局中,使用指定的每个核心的最大线程数。注意:“线程”指的是每个核心上的处理单元数量,而不是每个核心要启动的应用程序任务数量。 有关启用任务/亲和性插件时的更多信息,请参见上面的-B选项。
注意:此选项可能隐式设置任务数量(如果未指定-n),每个请求的线程一个任务。

-t, --time=<时间>
设置作业分配的总运行时间限制。如果请求的时间限制超过分区的时间限制,则作业将 保持在PENDING状态(可能无限期)。默认时间 限制是分区的默认时间限制。当达到时间限制时, 每个作业步骤中的每个任务将发送SIGTERM,然后发送SIGKILL。 信号之间的间隔由Slurm配置参数KillWait指定。 OverTimeLimit配置参数可能允许作业运行超过计划时间。时间分辨率为一分钟,秒值向上舍入到下一个分钟。

时间限制为零请求不施加时间限制。可接受的时间 格式包括“分钟”、“分钟:秒”、“小时:分钟:秒”、“天-小时”、“天-小时:分钟”和“天-小时:分钟:秒”。

--time-min=<时间>
设置作业分配的最小时间限制。如果指定,作业的 --time 限制可以降低到不低于 --time-min 的值,如果这样做可以使作业比其他情况下更早开始执行。作业的时间限制在分配资源后不会更改。这是通过回填调度算法来执行的,以分配原本保留给优先级更高的作业的资源。可接受的时间格式包括 "分钟"、"分钟:秒"、"小时:分钟:秒"、"天-小时"、"天-小时:分钟" 和 "天-小时:分钟:秒"。

--tmp=<size>[units]
指定每个节点的最小临时磁盘空间。默认单位为兆字节。可以使用后缀 [K|M|G|T] 指定不同的单位。

--tres-bind=<tres>:[verbose,]<type>[+<tres>:
[verbose,]<type>...] 指定一个带有任务绑定选项的 tres 列表。目前,gres 是此选项唯一支持的 tres。将 gres 指定为 "gres/<gres_name>"(例如 gres/gpu)

示例: --tres-bind=gres/gpu:verbose,map:0,1,2,3+gres/nic:closest

默认情况下,大多数 tres 不会绑定到单个任务

支持的 type 选项的绑定 gres

closest
将每个任务绑定到最近的 gres(s)。在 NUMA 环境中,每个任务可以绑定到多个 gres(即该 NUMA 环境中的所有 gres)。

map:<list>
通过在任务(或排名)上设置 gres 掩码进行绑定,如所指定的,其中 <list> 是 <gres_id_for_task_0>,<gres_id_for_task_1>,... gres ID 被解释为十进制值。如果任务(或排名)的数量超过此列表中的元素数量,则列表中的元素将根据需要从列表的开头重新使用。为了简化对大量任务计数的支持,列表可以遵循带有星号和重复计数的映射。例如 "map:0*4,1*4"。如果使用了任务/cgroup 插件并且在 cgroup.conf 中设置了 ConstrainDevices,则 gres ID 是相对于分配给作业的 gres 的零基索引(例如,第一个 gres 是 0,即使全局 ID 是 3)。否则,gres ID 是全局 ID,作业中每个节点上的所有 gres 应该分配以获得可预测的绑定结果。

mask:<list>
通过在任务(或排名)上设置 gres 掩码进行绑定,如所指定的,其中 <list> 是 <gres_mask_for_task_0>,<gres_mask_for_task_1>,... 映射是为节点指定的,并且相同的映射应用于每个节点上的任务(即每个节点上最低的任务 ID 映射到列表中指定的第一个掩码,等等)。gres 掩码始终被解释为十六进制值,但可以前面加上可选的 '0x'。为了简化对大量任务计数的支持,列表可以遵循带有星号和重复计数的映射。例如 "mask:0x0f*4,0xf0*4"。如果使用了任务/cgroup 插件并且在 cgroup.conf 中设置了 ConstrainDevices,则 gres ID 是相对于分配给作业的 gres 的零基索引(例如,第一个 gres 是 0,即使全局 ID 是 3)。否则,gres ID 是全局 ID,作业中每个节点上的所有 gres 应该分配以获得可预测的绑定结果。

none
不将任务绑定到此 gres(关闭 --tres-per-task 和 --gpus-per-task 的隐式绑定)。

per_task:<gres_per_task>
每个任务将绑定到指定数量的 gres,在 <gres_per_task> 中。任务优先分配与其分配中的核心有亲和力的 gres,如 closest 中所示,尽管如果它们不可用,它们将接受任何 gres。如果没有亲和力,第一个任务将被分配到节点上的前 x 个 gres 等等。共享 gres 将优先绑定每个任务一个共享设备(如果可能)。

single:<tasks_per_gres>
类似于 closest,但每个任务只能绑定到单个 gres,即使它可以绑定到多个同样接近的 gres。要绑定的 gres 由 <tasks_per_gres> 确定,其中前 <tasks_per_gres> 个任务绑定到第一个可用的 gres,第二个 <tasks_per_gres> 个任务绑定到第二个可用的 gres,等等。这基本上是将任务块分配到可用的 gres 上,其中可用的 gres 是由任务的插槽亲和力和 gres 的插槽亲和力(如 gres.conf 的 Cores 参数中所指定)决定的。

注意: 共享 gres 绑定目前仅限于 per_task 或 none

--tres-per-task=<list>
指定每个在作业资源分配中生成的任务所需的可跟踪资源的逗号分隔列表。列表中每个条目的格式为 "trestype[/tresname]=count"。trestype 是请求的可跟踪资源的类型(例如 cpu、gres、license 等)。tresname 是可跟踪资源的名称,可以通过 sacctmgr show tres 查看。当存在时,对于 gres、license 等 tres 类型是必需的(例如 gpu、gpu:a100)。为了使用此选项请求许可证,必须在 slurm.conf 的 AccountingStorageTRES 参数中定义许可证。count 是这些资源的数量。
计数可以有后缀
"k" 或 "K"(1024 的倍数),
"m" 或 "M"(1024 x 1024 的倍数),
"g" 或 "G"(1024 x 1024 x 1024 的倍数),
"t" 或 "T"(1024 x 1024 x 1024 x 1024 的倍数),
"p" 或 "P"(1024 x 1024 x 1024 x 1024 x 1024 的倍数)。
示例:
--tres-per-task=cpu=4
--tres-per-task=cpu=8,license/ansys=1
--tres-per-task=gres/gpu=1
--tres-per-task=gres/gpu:a100=2
指定的资源将在每个节点上分配给作业。可用的可跟踪资源由系统管理员配置。
注意: 此选项与 gres/gpu 或 gres/shard 将隐式设置 --tres-bind=gres/[gpu|shard]:per_task:<tres_per_task>,或者如果指定了多个 gpu 类型 --tres-bind=gres/gpu:per_task:<gpus_per_task_type_sum>。这可以通过显式的 --tres-bind 规范进行覆盖。
注意: 对于 --tres-per-task 的无效 TRES 包括 bb、billing、energy、fs、mem、node、pages、vmem。

--uid=<user>
尝试以 user 的身份提交和/或运行作业,而不是调用用户 ID。调用用户的凭据将用于检查目标分区的访问权限。例如,用户 root 可以使用此选项在 RootOnly 分区中以普通用户身份运行作业。如果以 root 身份运行,sbatch 将在节点分配成功后降低其权限到指定的 uid。user 可以是用户名或数字用户 ID。

--usage
显示简要帮助信息并退出。

--use-min-nodes
如果给定节点数量范围,优先选择较小的数量。

-v, --verbose
增加 sbatch 的信息消息的详细程度。多个 -v 将进一步增加 sbatch 的详细程度。默认情况下仅显示错误。

-V, --version
显示版本信息并退出。

-W, --wait
在提交的作业终止之前不退出。sbatch 命令的退出代码将与提交的作业的退出代码相同。如果作业因信号而终止而不是正常退出,则退出代码将设置为 1。在作业数组的情况下,记录的退出代码将是作业数组中任何任务的最高值。

--wait-all-nodes=<value>
控制命令开始执行的时间。默认情况下,作业将在分配完成后立即开始执行。
0
在可以进行分配时立即开始执行。不要等待所有节点准备就绪(即启动)。

1
在所有节点准备就绪后再开始执行。

--wckey=<wckey>
指定与作业一起使用的 wckey。如果 slurm.conf 中的 TrackWCKey=no(默认),则此值将被忽略。

--wrap=<command_string>
Sbatch 将在一个简单的 "sh" shell 脚本中包装指定的命令字符串,并将该脚本提交给 slurm 控制器。当使用 --wrap 时,命令行上不能指定脚本名称和参数;相反,使用 sbatch 生成的包装脚本。

 

文件名模式

sbatch 允许文件名模式包含一个或多个替换符号,这些符号是一个百分号 "%" 后跟一个字母(例如 %j)。

\\
不处理任何替换符号。

%%
字符 "%"。

%A
作业数组的主作业分配编号。

%a
作业数组 ID(索引)编号。

%b
作业数组 ID(索引)编号模 10。

%J
正在运行的作业的 jobid.stepid。(例如 "128.0")

%j
正在运行的作业的 jobid。

%N
短主机名。这将为每个节点创建一个单独的 IO 文件。

%n
相对于当前作业的节点标识符(例如 "0" 是正在运行的作业的第一个节点)这将为每个节点创建一个单独的 IO 文件。

%s
正在运行的作业的 stepid。

%t
相对于当前作业的任务标识符(排名)。这将为每个任务创建一个单独的 IO 文件。

%u
用户名。

%x
作业名称。

放置在百分号字符和格式说明符之间的数字可以用于在 IO 文件名中将结果零填充到指定数字的最小值。如果格式说明符对应于非数字数据(例如 %N),则忽略此数字。最大数字为 10,如果使用大于 10 的值,则结果填充到 10 个字符。以下是格式字符串如何用于具有 JobID 为 128 和步骤 ID 为 0 的 4 个任务作业步骤的一些示例:

job%J.out
job128.0.out

job%4j.out
job0128.out

job%2j-%2t.out
job128-00.out, job128-01.out, ...

 

性能

执行 sbatch 会向 slurmctld 发送远程过程调用。如果来自 sbatch 或其他向 slurmctld 守护进程发送远程过程调用的 Slurm 客户端命令的调用足够多,可能会导致 slurmctld 守护进程的性能下降,可能导致服务拒绝。

请勿在 shell 脚本或其他程序的循环中运行 sbatch 或其他向 slurmctld 发送远程过程调用的 Slurm 客户端命令。确保程序将对 sbatch 的调用限制在收集信息所需的最小值。

 

输入环境变量

在启动时,sbatch 将读取并处理以下环境变量中设置的选项。这些变量中的大多数是以与上述选项相同的方式设置的。对于定义为不期望参数的标志选项,可以通过设置环境变量而不指定值(空字符串或 NULL 字符串)、字符串 'yes' 或非零数字来启用该选项。环境变量的任何其他值将导致该选项未被设置。以下是这些规则的一些例外情况。
注意: 环境变量将覆盖批处理脚本中设置的任何选项,而命令行选项将覆盖任何环境变量。

SBATCH_ACCOUNT
-A, --account 相同

SBATCH_ACCTG_FREQ
--acctg-freq 相同

SBATCH_ARRAY_INX
-a, --array 相同

SBATCH_BATCH
--batch 相同

SBATCH_CLUSTERSSLURM_CLUSTERS
--clusters 相同

SBATCH_CONSTRAINT
-C, --constraint 相同

SBATCH_CONTAINER
--container 相同。

SBATCH_CONTAINER_ID
--container-id 相同。

SBATCH_CORE_SPEC
--core-spec 相同

SBATCH_CPUS_PER_GPU
--cpus-per-gpu 相同

SBATCH_DEBUG
-v, --verbose 相同,当设置为 1 时,设置为 2 时给出 -vv,等等。

SBATCH_DELAY_BOOT
--delay-boot 相同

SBATCH_DISTRIBUTION
-m, --distribution 相同

SBATCH_ERROR
-e, --error 相同

SBATCH_EXCLUSIVE
--exclusive 相同

SBATCH_EXPORT
--export 相同

SBATCH_GET_USER_ENV
--get-user-env 相同

SBATCH_GPU_BIND
--gpu-bind 相同

SBATCH_GPU_FREQ
--gpu-freq 相同

SBATCH_GPUS
-G, --gpus 相同

SBATCH_GPUS_PER_NODE
--gpus-per-node 相同

SBATCH_GPUS_PER_TASK
--gpus-per-task 相同

SBATCH_GRES
--gres 相同

SBATCH_GRES_FLAGS
--gres-flags 相同

SBATCH_HINTSLURM_HINT
--hint 相同

SBATCH_IGNORE_PBS
--ignore-pbs 相同

SBATCH_INPUT
-i, --input 相同

SBATCH_JOB_NAME
-J, --job-name 相同

SBATCH_MEM_BIND
--mem-bind 相同

SBATCH_MEM_PER_CPU
--mem-per-cpu 相同

SBATCH_MEM_PER_GPU
--mem-per-gpu 相同

SBATCH_MEM_PER_NODE
--mem 相同

SBATCH_NETWORK
--network 相同

SBATCH_NO_KILL
-k, --no-kill 相同

SBATCH_NO_REQUEUE
--no-requeue 相同

SBATCH_OPEN_MODE
--open-mode 相同

SBATCH_OUTPUT
-o, --output 相同

SBATCH_OVERCOMMIT
-O, --overcommit 相同

SBATCH_PARTITION
-p, --partition 相同

SBATCH_POWER
--power 相同

SBATCH_PROFILE
--profile 相同

SBATCH_QOS
--qos 相同

SBATCH_REQ_SWITCH
当使用树形拓扑时,这定义了作业分配所需的最大交换机数量,并可选地定义等待该数量交换机的最大时间。请参见 --switches

SBATCH_REQUEUE
--requeue 相同

SBATCH_RESERVATION
--reservation 相同

SBATCH_SEGMENT_SIZE
--segment 相同

SBATCH_SIGNAL
--signal 相同

SBATCH_SPREAD_JOB
--spread-job 相同

SBATCH_THREAD_SPEC
--thread-spec 相同

SBATCH_THREADS_PER_CORE
--threads-per-core 相同

SBATCH_TIMELIMIT
-t, --time 相同

SBATCH_TRES_BIND
--tres-bind 相同

SBATCH_TRES_PER_TASK
--tres-per-task 相同

SBATCH_USE_MIN_NODES
--use-min-nodes 相同

SBATCH_WAIT
-W, --wait 相同

SBATCH_WAIT_ALL_NODES
--wait-all-nodes 相同。必须设置为 0 或 1 以禁用或启用该选项。

SBATCH_WAIT4SWITCH
请求交换机的最大等待时间。请参见 --switches

SBATCH_WCKEY
--wckey 相同

SLURM_CONF
Slurm 配置文件的位置。

SLURM_DEBUG_FLAGS
指定 sbatch 使用的调试标志。有关完整的标志列表,请参见 slurm.conf(5) 手册页。环境变量优先于 slurm.conf 中的设置。

SLURM_EXIT_ERROR
指定发生 Slurm 错误时生成的退出代码(例如,选项无效)。这可以被脚本用于区分应用程序退出代码和各种 Slurm 错误条件。

SLURM_STEP_KILLED_MSG_NODE_ID=ID
如果设置,只有指定的节点将在作业或步骤被信号杀死时记录。

SLURM_UMASK
如果定义,Slurm 将使用定义的 umask 在为作业创建输出/错误文件时设置权限。

 

输出环境变量

Slurm 控制器将在批处理脚本的环境中设置以下变量。

SBATCH_MEM_BIND
设置为 --mem-bind 选项的值。

SBATCH_MEM_BIND_LIST
设置为用于内存绑定的位掩码。

SBATCH_MEM_BIND_PREFER
如果 --mem-bind 选项包含 prefer 选项,则设置为 "prefer"。

SBATCH_MEM_BIND_TYPE
设置为与 --mem-bind 选项指定的内存绑定类型。可能的值为 "none"、"rank"、"map_map"、"mask_mem" 和 "local"。

SBATCH_MEM_BIND_VERBOSE
如果 --mem-bind 选项包含 verbose 选项,则设置为 "verbose"。否则设置为 "quiet"。

SLURM_*_HET_GROUP_#
对于异构作业分配,环境变量为每个组件单独设置。

SLURM_ARRAY_JOB_ID
作业数组的主作业 ID 编号。

SLURM_ARRAY_TASK_COUNT
作业数组中的任务总数。

SLURM_ARRAY_TASK_ID
作业数组 ID(索引)编号。

SLURM_ARRAY_TASK_MAX
作业数组的最大 ID(索引)编号。

SLURM_ARRAY_TASK_MIN
作业数组的最小 ID(索引)编号。

SLURM_ARRAY_TASK_STEP
作业数组的索引步长。

SLURM_CLUSTER_NAME
作业正在执行的集群名称。

SLURM_CPUS_ON_NODE
分配给批处理步骤的 CPU 数量。注意: select/linear 插件将整个节点分配给作业,因此该值表示节点上的 CPU 总数。对于 cons/tres 插件,此数字表示分配给步骤的此节点上的 CPU 数量。

SLURM_CPUS_PER_GPU
每个分配的 GPU 请求的 CPU 数量。仅在指定了 --cpus-per-gpu 选项时设置。

SLURM_CPUS_PER_TASK
每个任务请求的 CPU 数量。仅在指定了 --cpus-per-task 选项或 --tres-per-task=cpu=# 选项时设置。

SLURM_CONTAINER
作业的 OCI 包。仅在指定了 --container 时设置。

SLURM_CONTAINER_ID
作业的 OCI id。仅在指定了 --container-id 时设置。

SLURM_DIST_PLANESIZE
平面分布大小。仅在平面分布时设置。请参见 -m, --distribution

SLURM_DISTRIBUTION
-m, --distribution 相同

SLURM_EXPORT_ENV
--export 相同。

SLURM_GPU_BIND
请求将任务绑定到 GPU。仅在指定了 --gpu-bind 选项时设置。

SLURM_GPU_FREQ
请求的 GPU 频率。仅在指定了 --gpu-freq 选项时设置。

SLURM_GPUS
请求的 GPU 数量。仅在指定了 -G, --gpus 选项时设置。

SLURM_GPUS_ON_NODE
分配给批处理步骤的 GPU 数量。

SLURM_GPUS_PER_NODE
每个分配节点请求的 GPU 数量。仅在指定了 --gpus-per-node 选项时设置。

SLURM_GPUS_PER_SOCKET
每个分配插槽请求的 GPU 数量。仅在指定了 --gpus-per-socket 选项时设置。

SLURM_GTIDS
在此节点上运行的全局任务 ID。零起始并用逗号分隔。如果 Slurm 是使用 pmi 支持构建的,则由 pmi 内部读取。保留该变量可能会在作业内部使用外部软件包时导致问题(已知 Abaqus 和 Ansys 在设置时存在问题 - 请查阅相关文档以获取第三方软件)。

SLURM_HET_SIZE
设置为异构作业中的组件数量。

SLURM_JOB_ACCOUNT
与作业分配相关联的账户名称。

SLURM_JOB_CPUS_PER_NODE
在分配的节点上可用于作业的 CPU 数量,使用格式 CPU_count[(xnumber_of_nodes)][,CPU_count [(xnumber_of_nodes)] ...]. 例如:SLURM_JOB_CPUS_PER_NODE='72(x2),36' 表示在第一个和第二个节点(如SLURM_JOB_NODELIST所列)上分配了72个CPU,而第三个节点上有36个CPU。 注意select/linear 插件将整个节点分配给作业,因此该值表示分配节点上CPU的总数。select/cons_tres 插件将单个CPU分配给作业,因此这个数字表示分配给作业的CPU数量。

SLURM_JOB_DEPENDENCY
设置为--dependency选项的值。

SLURM_JOB_END_TIME
作业预计结束时间的UNIX时间戳。

SLURM_JOB_GPUS
分配给该作业的GPU的全局GPU ID。GPU ID与任何设备cgroup无关,即使设备受到任务/cgroup的约束。 仅在批处理和交互式作业中设置。

SLURM_JOB_ID
作业分配的ID。

SLURM_JOB_LICENSES
请求的任何许可证的名称和数量。

SLURM_JOB_NAME
作业的名称。

SLURM_JOB_NODELIST
分配给作业的节点列表。

SLURM_JOB_NUM_NODES
作业资源分配中的节点总数。

SLURM_JOB_PARTITION
作业运行的分区名称。

SLURM_JOB_QOS
作业分配的服务质量(QOS)。

SLURM_JOB_RESERVATION
包含作业分配的高级预留(如果有的话)。

SLURM_JOB_SEGMENT_SIZE
用于创建作业分配的段大小。 仅在指定了--segment时设置。

SLURM_JOB_START_TIME
作业开始时间的UNIX时间戳。

SLURM_JOBID
作业分配的ID。参见SLURM_JOB_ID。为了向后兼容而包含。

SLURM_LOCALID
作业中进程的节点本地任务ID。

SLURM_MEM_PER_CPU
--mem-per-cpu相同

SLURM_MEM_PER_GPU
每个分配的GPU请求的内存。 仅在指定了--mem-per-gpu选项时设置。

SLURM_MEM_PER_NODE
--mem相同

SLURM_NNODES
作业资源分配中的节点总数。参见SLURM_JOB_NUM_NODES。为了向后兼容而包含。

SLURM_NODEID
分配的节点ID。

SLURM_NODELIST
分配给作业的节点列表。参见SLURM_JOB_NODELIST。为了向后兼容而包含。

SLURM_NPROCS
SLURM_NTASKS相同。为了向后兼容而包含。

SLURM_NTASKS
如果指定了--ntasks选项,则设置为该值。或者,如果指定了任何--ntasks-per-*选项,则设置为作业中的任务数量。

注意:这也是srun的输入变量,因此如果设置,它将在从批处理脚本调用srun时有效地设置--ntasks选项。

SLURM_NTASKS_PER_CORE
每个核心请求的任务数量。 仅在指定了--ntasks-per-core选项时设置。

SLURM_NTASKS_PER_GPU
每个GPU请求的任务数量。 仅在指定了--ntasks-per-gpu选项时设置。

SLURM_NTASKS_PER_NODE
每个节点请求的任务数量。 仅在指定了--ntasks-per-node选项时设置。

SLURM_NTASKS_PER_SOCKET
每个插槽请求的任务数量。 仅在指定了--ntasks-per-socket选项时设置。

SLURM_OOMKILLSTEP
--oom-kill-step相同

SLURM_OVERCOMMIT
如果指定了--overcommit,则设置为1

SLURM_PRIO_PROCESS
作业提交时的调度优先级(nice值)。 该值会传播到生成的进程。

SLURM_PROCID
当前进程的MPI等级(或相对进程ID)。

SLURM_PROFILE
--profile相同

SLURM_RESTART_COUNT
如果作业因系统故障而重新启动或被显式重新排队,则此值将发送作业重新启动的次数。

SLURM_SHARDS_ON_NODE
该节点上可用于步骤的GPU分片数量。

SLURM_SUBMIT_DIR
从中调用sbatch的目录。

SLURM_SUBMIT_HOST
从中调用sbatch的计算机的主机名。

SLURM_TASK_PID
正在启动的任务的进程ID。

SLURM_TASKS_PER_NODE
每个节点要启动的任务数量。值用逗号分隔,并与SLURM_JOB_NODELIST中的顺序相同。 如果两个或更多连续节点要有相同的任务数量,则该数量后跟“(x#)”,其中“#”是重复计数。例如,“SLURM_TASKS_PER_NODE=2(x3),1”表示前面三个节点将各执行两个任务,而第四个节点将执行一个任务。

SLURM_THREADS_PER_CORE
仅在指定了--threads-per-coreSBATCH_THREADS_PER_CORE时设置。该值将设置为--threads-per-coreSBATCH_THREADS_PER_CORE指定的值。这在作业分配中的后续srun调用中使用。

SLURM_TOPOLOGY_ADDR
仅在系统配置了拓扑/树插件时设置。该值将设置为可能参与作业通信的网络交换机的名称,从系统的顶级交换机到叶子交换机,最后到节点名称。每个硬件组件名称之间用句点分隔。

SLURM_TOPOLOGY_ADDR_PATTERN
仅在系统配置了拓扑/树插件时设置。该值将设置为SLURM_TOPOLOGY_ADDR中列出的组件类型。每个组件将被标识为“switch”或“node”。每个硬件组件类型之间用句点分隔。

SLURM_TRES_PER_TASK
设置为--tres-per-task的值。如果指定了--cpus-per-task--gpus-per-task,它也会在SLURM_TRES_PER_TASK中设置,就好像它在--tres-per-task中指定一样。

SLURMD_NODENAME
运行作业脚本的节点名称。

 

示例

通过命令行指定一个批处理脚本的文件名。该批处理脚本为作业指定了1分钟的时间限制。
$ cat myscript
#!/bin/sh
#SBATCH --time=1
srun hostname |sort

$ sbatch -N4 myscript
salloc: 授予作业分配 65537

$ cat slurm-65537.out
host1
host2
host3
host4

将批处理脚本通过标准输入传递给sbatch:
$ sbatch -N4 <<EOF
> #!/bin/sh
> srun hostname |sort
> EOF
sbatch: 提交批处理作业 65541

$ cat slurm-65541.out
host1
host2
host3
host4

创建一个包含3个组件的异构作业,每个组件分配一组独特的节点:
$ sbatch -w node[2-3] : -w node4 : -w node[5-7] work.bash
提交批处理作业 34987

 

版权

版权所有 (C) 2006-2007 加州大学理事会。 在劳伦斯利弗莫尔国家实验室制作(参见免责声明)。
版权所有 (C) 2008-2010 劳伦斯利弗莫尔国家安全。
版权所有 (C) 2010-2022 SchedMD LLC。

该文件是Slurm资源管理程序的一部分。 有关详细信息,请参见<https://slurm.schedmd.com/>。

Slurm是自由软件;您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它;许可证的第2版,或(根据您的选择)任何更高版本。

Slurm的分发希望它会有用,但不提供任何担保;甚至不提供适销性或特定用途适用性的隐含担保。有关更多详细信息,请参见GNU通用公共许可证。

 

另见

sinfo(1),sattach(1),salloc(1),squeue(1),scancel(1),scontrol(1), slurm.conf(5),sched_setaffinity (2),numa (3)


 

索引

名称
概述
描述
返回值
脚本路径解析
选项
文件名模式
性能
输入环境变量
输出环境变量
示例
版权
另见

该文档由 man2html 使用手册页创建。
时间:2025年7月2日 13:21:56 GMT