作业添加

创建新任务并将其添加到指定的作业。

有关如何使用此命令的示例,请参阅示例

语法

job add <jobId> [/depend:<task_name_list>] [/env:<variable_and_value_list>]   
[/exclusive[:{true|false}]] [/name:<task_name>]   
{[/numcores:<min>[-<max>]] | [/numnodes:<min>[-<max>]] |   
[/numprocessors:<min>[-<max>]] | [/numsockets:<min>[-<max>]]}   
[/parametric:<index_specification>] [/requirednodes:<node_list>]   
[/rerunnable[:{true|false}]] [/runtime:{<time>|Infinite}]   
[/scheduler:<name>] [/stderr:[<path>\]<file_name>]   
[/stdin:[<path>\]<file_name>] [/stdout:[<path>\]<file_name>]   
[/taskfile:<path>\<file_name>] [/type:<type_name>]  
[/validexitcodes:{<int>|<intStart>..<intEnd>}[,{<int>|<intStart>..<intEnd>}]*]  
[/workdir:<folder>] <command> [<parameters>]  
  
job add {/? | /help}  
  

参数

参数 说明
<jobID> 指定要向其添加任务的作业的作业标识符。
/depend:<task_name_list> 指定新任务所依赖的指定作业中的一个或多个任务名称的列表。 列表的格式 <应为 task_name1>[,<task_name2>...]。在 /depend 参数指定的所有任务完成运行之前,新任务可能不会启动。 提示: 单个 <task_name> 表示作业中的一个或多个任务,所有这些任务都 <已分配task_name> 。
/env:<variable_and_value_list> 指定要在任务的运行时环境中设置的环境变量的列表,以及要分配给这些环境变量的值。 列表的格式<应为 variable_name1>=<value1> [;<>variable_name2=<value2>...]。

或者,可以通过包含多个 /env 参数来设置多个环境变量。 每个都必须是格式为 variable_name>=<value> 的不同参数<。

若要取消设置环境变量,请不要指定值。 例如, <variable_to_unset_name>=。
/exclusive[:{true|false}] 指定 HPC 作业计划程序服务是否应确保此任务运行时,没有其他任务与此任务在同一节点上运行。

值为 True 表示 HPC 作业计划程序服务应确保此任务运行时没有其他任务在同一节点上运行。

值为 False 表示此任务可以与其他任务共享计算节点。

指定不带值的 /exclusive 参数时, 作业添加 命令的行为就像指定值 True 一样。 如果未指定 /exclusive 参数, 则作业添加 命令的行为方式与指定值 False 一样。
/name:<task_name> 在命令输出和用户界面中指定要用于此任务的名称。 名称的最大长度为 80 个字符。 此参数没有默认值。 提示: 单个 <task_name> 表示作业中的 1 个或多个任务,所有这些任务都 <分配了task_name> 。 警告: 如果要将此 <task_name> 与 /depend 参数一起使用,则 <task_name> 不应包含逗号或空格。
/numcores:<min>[-<max>] 指定任务所需的 HPC 群集中核心总数,格式 <为 minimum>[-<maximum>]。 任务至少在最小核心数上运行,且不超过最大值。 如果仅指定一个值,此命令会将最大和最小核心数设置为该值。 如果指定的最小值超过了整个群集中可用的内核总数,则提交作业或提交任务时,如果作业已提交,则会发生错误。

最小值和最大值只能是正整数。

仅当作业的 UnitType 为核心时,才使用 /numcores

如果未指定 /numcores/numnodes/numprocessors/numsockets 参数,HPC 作业计划程序服务将分配作业定义的一个 UnitType。
/numnodes:<min>[-<max>] 指定任务所需的 HPC 群集中的节点总数,格式 <为 minimum>[-<maximum>]。 任务至少在最小节点数和不超过最大值的节点上运行。 如果仅指定一个值,此命令会将最大和最小节点数设置为该值。 如果指定的最小值超过了整个群集中可用的节点总数,则提交任务或包含该任务的作业时会发生错误。

最小值和最大值只能是正整数。

仅当作业的 UnitType 为 node 时,才使用 /numnodes

如果未指定 /numcores/numnodes/numprocessors/numsockets 参数,HPC 作业计划程序服务将分配作业定义的一个 UnitType。
/numprocessors:<min>[-<max>] 已弃用。 请改用 /numcores 参数。
/numsockets:<min>[-<max>] 指定任务需要跨 HPC 群集的套接字总数,格式 <为 minimum>[-<maximum>]。 任务至少在最小套接字数上运行,且不超过最大值。 如果仅指定一个值,此命令会将最大和最小套接字数设置为该值。 如果指定的最小值超过了整个群集中可用的套接字总数,则提交任务或包含该任务的作业时会发生错误。

最小值和最大值只能是正整数。

仅当作业的 UnitType 为 socket 时,才使用 /numsocket

如果未指定 /numcores/numnodes/numprocessors/numsockets 参数,HPC 作业计划程序服务将分配作业定义的一个 UnitType。
/parametric:<index_specification> 指示新任务是参数任务。 参数任务多次运行指定的命令,在命令行中将当前索引值替换为星号 (*) 。 在 /stdin、/stdout 和 /stderr 参数中指定时,也会替换星号。 此参数的索引规范定义索引值的行为。 索引规范的格式为 [<start>-]<end>[:<increment>]。

当前索引值从起始索引开始,并在命令每次后续运行时按增量值增加。 当当前索引超过结束索引时,任务将停止运行命令。

起始索引必须小于结束索引,增量值必须是正整数。 如果未指定增量值,则默认值为 1。 如果未指定起始值,则默认值为 1。 如果指定增量值,则还必须指定起始值。

从 Microsoft HPC Pack 2008 R2 开始,如果指定 /type 参数以及参数参数以外的值,则不能同时指定 /parametric 参数。
/requirednodes:<node_list> 指定任务必须在其上运行的节点列表,格式 <为 node1_name>[,<node2_name>...]。 HPC 作业计划程序服务以独占方式分配此列表中的所有节点来运行任务。
/rerunnable[:{true|false}] 指定在任务运行但失败时 HPC 作业计划程序服务是否尝试重新运行任务。

如果值为 True,则表示如果任务被抢占或由于群集问题(例如节点不可访问)而失败,HPC 作业计划程序服务可以尝试重新运行任务。 作业计划程序不会尝试重新运行运行到完成的任务,也不会返回具有不成功的退出代码的 。

值为 False 表示如果任务开始但因抢占或群集问题而未完成,HPC 作业计划程序服务不应尝试重新运行任务。 相反,它应立即将任务移动到失败状态。

群集管理员可以配置 HPC 作业计划程序服务在将任务移动到失败状态之前尝试重新运行任务的次数。

如果未指定 /rerunnable 参数,则命令的行为就像指定了 True 值一样。
/runtime:{<time>|Infinite} 指定任务应运行的最长时间。 在任务运行此时间后,HPC 作业计划程序服务将取消该任务。 以 [[<days>:]<hours>:]< 分钟>格式指定时间量。 还可以指定 Infinite 以指示任务可以运行无限时间。

如果仅指定 [[<days>:]<hours>:]< minutes> 格式的一部分,则命令会将指定的值解释为分钟数。 例如, 12 表示 12 分钟。 如果指定格式的两个部分,该命令会将左侧部分解释为小时,将右侧部分解释为分钟。 例如, 10:30 表示 10 小时 30 分钟。

可以对格式的每个部分使用一个或多个数字。 每个部分的最大值为 2,147,483,647。 如果未指定 /runtime 参数,则默认值为 Infinite。
/scheduler:<name> 指定包含要向其添加任务的作业的群集的头节点的主机名或 IP 地址。 该值必须是有效的计算机名称或 IP 地址。 如果未指定 /scheduler 参数,此命令将在CCP_SCHEDULER环境变量指定的头节点上使用计划程序。
/stderr:[<path>\]<file_name> 指定任务应将标准错误流重定向到的文件的名称,包括完整路径或相对于文件的工作目录的路径(如果任务不应将标准错误流重定向到工作目录中的文件)。 如果指定的路径不存在,则任务将失败。

如果未指定 /stderr 参数,则任务在 HPC 作业计划程序服务的数据库中存储最多 4 KB (KB 的数据) ,该任务由任务的 Output 属性指定。 超过 4 KB 的任何输出都将丢失。

此参数的值的最大长度为 160 个字符。
/stdin:[<path>\]<file_name> 指定任务应从中接收标准输入的文件的名称,包括完整路径或相对于文件的工作目录的路径(如果任务不应从工作目录中的文件接收标准输入)。 如果指定的文件或路径不存在,则任务将失败。

此参数的值的最大长度为 160 个字符。
/stdout:[<path>\]<file_name> 指定任务应将标准输出重定向到的文件的名称,包括完整路径或相对于文件的工作目录的路径(如果任务不应将标准输出重定向到工作目录中的文件)。 如果指定的路径不存在,则任务将失败。

如果未指定 /stdout 参数,则任务在 HPC 作业计划程序服务的数据库中存储最多 4 KB (KB) 的数据,由任务的 Output 属性指定。 超过 4 KB 的任何输出都将丢失。

此参数的值的最大长度为 160 个字符。
/taskfile:<path>\<file_name> 指定从中读取任务设置的任务 XML 文件的名称,包括文件的完整路径或相对路径(如果文件不在当前目录中)。 必须为包含 CommandLine 属性值的 /taskfile 参数指定任务 XML 文件,或者指定命令或应用程序名称和可选参数。
/type:<type_name> 指定任务的类型,该类型定义如何为任务运行命令。 以下是可以指定的类型:

基本-
(MPI) 应用程序运行串行应用程序的单个实例或消息传递接口。 MPI 应用程序通常在多个核心上并发运行,并且可以跨多个节点。

NodePrep -
在分配给作业的每个计算节点上运行命令或脚本。 节点准备任务在作业中的任何其他任务之前在节点上运行。 如果节点准备任务无法在节点上运行,则不会将该节点添加到作业中。

NodeRelease -
从作业中释放时,在每个计算节点上运行命令或脚本。 当用户或正常抢占取消作业时,节点释放任务将运行。 通过立即抢占取消作业时,节点发布任务不会运行。

ParametricSweep -
按照 Start、End 和 Increment 值指示的指定次数取消命令,通常跨索引的输入和输出文件。 扫描步骤可能并行运行,也可能不并行运行,具体取决于任务运行时 HPC 群集上可用的资源。 指定 ParametricSweep 类型时,应使用 /parametric 参数指定索引的起始值、结束值和增量值。 如果不使用 /参数 参数,该命令将运行一次,索引为 0

服务-
对分配给作业的所有资源运行命令或服务。 命令的新实例在将新资源添加到作业时启动,或者如果以前运行的实例退出,并且以前运行的实例使用的资源仍分配给作业。 服务任务将继续启动新实例,直到取消任务、最长运行时间过期或达到最大实例数。 一个服务任务最多可以创建 1,000,000 个子任务。 通过面向服务的体系结构提交的任务 (SOA) 客户端作为服务任务运行。 不能将基本任务或参数扫描任务添加到包含服务任务的作业。

除非还指定 /参数 参数,否则此参数的默认值为 Basic。 如果指定 /参数 ,则 /type 参数的默认值为 ParametricSweep。

如果使用参数以外的值指定 /type 参数,则不能同时指定 /parametric 参数。

此参数是在 HPC Pack 2008 R2 中引入的,在以前的版本中不可用。
/validexitcodes:{<int>|<intStart>..<intEnd>}[,{<int>|<intStart>..<intEnd>}]* 指定用于检查任务是否成功退出的有效任务退出代码。 /validexitcodes 必须由离散整数和以逗号分隔的整数范围指定。

minmax 可用作范围的开始或结束。 例如 0..max ,表示所有非负整数。

如果未定义, /validexitcodes 将从作业的 /validexitcodes 参数继承其值。 如果两者均未定义,则默认值为 0。 注意: 此参数是在 HPC Pack 2012 中引入的,在以前的版本中不受支持。
/workdir:<folder> 指定应在其下运行任务的工作目录。

此参数的值的最大长度为 160 个字符。
<命令> [<parameters>] 指定任务的命令行,包括命令或应用程序名称和任何必要的参数。

除非在 /taskfile 任务 XML 文件中定义,否则必须存在命令才能添加任务。 除非命令包含完全限定的路径,否则将相对于工作目录执行。
/? 在命令提示符下显示帮助。
/help 在命令提示符下显示帮助。

注解

  • 可以将任务添加到尚未提交的作业、已提交且当前正在队列中等待的作业、已在运行的作业或已失败或已取消的作业。

  • 不能将任务添加到已完成的作业。

  • 将任务添加到队列中等待或正在运行的作业,并且 HPC 作业计划程序服务分配给该作业的资源可用时,该任务将开始运行。

  • 从 Microsoft HPC Pack 2008 R2 开始,可以指定参数任务的命令行中的星号 (*) 不应替换为参数索引的当前值,方法是在星号前面加上三个插入符号 (^) 字符。 例如,如果使用 作业 add 命令创建参数任务,并将命令行指定为 echo *,则任务将打印参数索引的值。 如果改用 作业 add 命令创建参数任务,并将命令行指定为 echo ^^^*,则任务会为参数索引的每个值打印一个星号。

示例

若要将名为“我的任务”的新任务添加到作业标识符为 39 的作业,该作业运行 hostname.exe 程序,具有 \\headnode\output 共享的工作目录,并将标准输出重定向到工作目录中名为 hostname.out 的文件,请使用以下命令:

job add 39 /name:"My Task" /workdir:\\headnode\output share /stdout:"hostname.out" hostname.exe  

若要将作业标识符为 47 的新节点准备任务添加到运行 ver 命令的作业,请键入:

job add 47 /type:NodePrep ver  

若要将名为 Sweep Task 的新参数任务添加到作业标识符为 25 的作业中,该任务为索引运行一系列 echo * 命令,该命令从 10 开始并增加 2,直到索引达到 100,并将标准输出重定向到 \\headnode\output share\sweepstep*.out 处的一系列文件, 使用以下命令:

job add 25 /name:"Sweep Task" /parametric:10-100:2 /stdout:\\headnode\output share\sweepstep*.out echo *  

前面的示例独立运行以下每个命令行:

echo 10  
echo 12  
echo 14  
...  
echo 98  
echo 100  

此参数扫描在 \\headnode\output 共享目录中创建以下文件:

  • sweepstep10.out

  • sweepstep12.out

  • ...

  • sweepstep100.out

参数扫描共创建 45 个文件,每个文件都包含其索引
编号。

若要创建新作业,请将任务添加到作业,然后提交作业,请运行包含以下命令的批处理文件,该命令使用 for 命令获取新作业的标识符:

for /f "usebackq tokens=4 delims=. " %%i in (`job new`) do (  
job add %%i echo Hello World  
job submit /id:%%i  
)  

其他参考