View a markdown version of this page

作业模板的任务分块 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

作业模板的任务分块

渲染和模拟作业加载应用程序和场景文件所花费的时间通常比处理每帧的时间还要长。当作业每项任务运行一帧时,该加载时间会重复每帧。任务分块将多个任务分组为一个称为区块的工作单元,因此应用程序为每个区块加载一次,而不是每帧加载一次。当加载时间相对于处理每帧的时间较长时,分块最有用,例如场景加载几分钟,然后以秒为单位渲染每帧。

如果你要从 Deadline 10 迁移,任务分块将取代截止日期 10 提交者中的每个任务的帧数设置,也称为区块大小。

任务分块是开放任务描述 (OpenJD) 的扩展,名为。TASK_CHUNKING在使用扩展的作业模板中,您可以定义类型为的任务参数CHUNK[INT]。作业运行时,Deadline Cloud 会向每个任务分派一系列值,而不是单个值,并且脚本中的{{Task.Param.Frame}}变量会扩展为范围表达式,例如1-10。您的脚本将该范围传递给应用程序。有关完整规范,请参阅 RFC 0001:开启任务分块。 GitHub

要使用任务分块,您需要做出两个决定:

  • 范围约束 -选择应用程序CONTIGUOUS何时接受开始和结束帧参数。然后,每个区块都是连续的范围,例如1-10。选择您的应用程序NONCONTIGUOUS何时接受任意帧列表。然后,区块可以覆盖稀疏的帧集1-3,5,7-20:2,例如,这在渲染拾取帧时很有用。

  • 区块大小 — 该defaultTaskCount字段为每个区块设置固定数量的帧。如果区块太小,则加载时间占主导地位,作业运行效率低下。如果区块太大,则任务无法平衡更大的队列中的工作。为避免手动调整值,请设置可选targetRuntimeSeconds字段。然后,Deadline Cloud 根据观察到的已完成区块的运行时间,根据目标运行时调整区块大小。

区块大小也限制了并行度。一个步骤为每个区块生成一个任务,大约是帧数除以区块大小,每个任务在一个工作器上运行。下表显示了区块大小如何限制可以并行处理 100 帧任务的工作器数量。

作业中的框架 组块大小 任务(最大并行工作人数)
100 1 100
100 10 10
100 50 2

如果区块大小大于帧数除以可用工作线程的数量,则一些工作程序将保持空闲状态。当你设置时targetRuntimeSeconds,Deadline Cloud 会根据目标运行时调整区块大小,从而平衡这种权衡。

分块作业与每任务一帧的任务有两个不同之处。在 Deadline Cloud 监视器中,该步骤的任务列表显示每个区块的一项任务,由其帧范围标识。当您在分块任务中下载单个任务的输出时,Deadline Cloud 会下载整个区块的输出。例如,如果 Deadline Cloud 将第 1-10 帧作为一个区块一起处理,则下载第 3 帧的输出将下载第 1-10 帧的所有内容。下载分块输出需要deadline-cloud版本 0.53.3 或更高版本。

有关任务分块的更多信息,请参阅以下主题: