作业添加

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

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

语法

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>=<值>。

若要取消设置环境变量,请不要指定值。 例如,<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 群集中核心总数。 该任务至少在最小内核数和最大值上运行。 如果只指定一个值,此命令会将最大和最小核心数设置为该值。 如果指定一个最小值,该值超过群集中可用的核心总数,则提交作业或提交任务时(如果已提交作业)时发生错误。

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

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

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

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

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

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

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

/numsocket 仅在作业的 UnitType 为套接字时才使用。

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

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

起始索引必须小于结束索引,增量值必须是正整数。 如果未指定增量值,则默认值为 1 1。 如果未指定起始值,则默认值为 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:{<时间>|Infinite} 指定任务应运行的最大时间量。 在任务运行此时间后,HPC 作业计划程序服务将取消该任务。 以 [[<天>:]<小时>:]<分钟>格式指定时间量。 还可以指定 Infinite 以指示任务可以无限运行无限时间。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

注解

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

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

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

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

示例

若要将名为“我的任务”的新任务添加到作业中,作业标识符为 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  

若要向作业添加名为“扫描任务”的新参数任务,该作业标识符为 25,该作业标识符为 25,该作业标识符运行一系列回显 * 命令,该索引从 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  
)  

其他参考