本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
作业模板的任务分块
任务分块允许您将多个任务分组为一个工作单元,称为块。例如,在渲染作业中,这意味着 Deadline Cloud 可以一起调度多个帧,而不是每次命令调用一帧。这减少了为每个任务启动应用程序的开销,并缩短了作业的总运行时间。有关详细信息,请参阅 OpenJD 维基中的一次运行多个帧
OpenJD 支持为作业模板添加可选功能的扩展。通过添加TASK_CHUNKING扩展来启用任务分块。要使用分块,请将扩展添加到您的作业模板中,然后使用CHUNK[INT]任务参数类型。使用相同的deadline bundle submit命令提交分块作业。例如,以下作业模板以 10 个区块呈现帧:
specificationVersion: 'jobtemplate-2023-09' extensions: - TASK_CHUNKING name: Blender Render with Contiguous Chunking parameterDefinitions: - name: BlenderSceneFile type: PATH objectType: FILE dataFlow: IN - name: Frames type: STRING default: "1-100" - name: OutputDir type: PATH objectType: DIRECTORY dataFlow: OUT default: "./output" steps: - name: RenderBlender parameterSpace: taskParameterDefinitions: - name: Frame type: CHUNK[INT] range: "{{Param.Frames}}" chunks: defaultTaskCount: 10 rangeConstraint: CONTIGUOUS script: actions: onRun: command: bash args: ["{{Task.File.Run}}"] embeddedFiles: - name: Run type: TEXT data: | set -xeuo pipefail mkdir -p '{{Param.OutputDir}}' # Parse the chunk range (e.g., "1-10") into start and end frames START_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f1)" END_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f2)" blender --background '{{Param.BlenderSceneFile}}' \ --render-output '{{Param.OutputDir}}/output_####' \ --render-format PNG \ --use-extension 1 \ -s "$START_FRAME" \ -e "$END_FRAME" \ --render-anim
在此示例中,Deadline Cloud 将 100 个帧分成诸如1-1011-20、之类的块。{{Task.Param.Frame}}变量会扩展为范围表达式,例如1-10。因为设置rangeConstraint为CONTIGUOUS,所以范围始终是start-end格式化的。该脚本解析此范围,并使用和-e选项将起始帧和结束帧传递给 Blender。-s --render-anim
该chunks属性支持以下字段:
-
defaultTaskCount—(必填)要将多少任务合并成一个块。最大值为 150。 -
rangeConstraint—(必需)如果CONTIGUOUS,则区块始终是一个连续的范围,例如。1-10如果NONCONTIGUOUS,则区块可以是任意集合,比如1,3,7-10。 -
targetRuntimeSeconds—(可选)每个区块的目标运行时间(以秒为单位)。在某些区块完成后,Deadline Cloud 可以动态调整区块大小以接近该目标。
有关更多任务分块示例,包括包含连续和非连续区块的基本示例和 Blender 示例,请参阅 Deadline Cloud 示例存储库中的任务分块
客户管理的车队要求
任务分块需要兼容的工作器代理版本。如果您使用客户管理的队列,请确保在提交带有分块的作业之前更新您的工作人员代理。服务托管队列始终使用兼容的工作代理版本。
正在下载分块作业的输出
当你下载分块作业中单个任务的输出时,Deadline Cloud 会下载整个区块的输出。例如,如果将第 1-10 帧一起处理,则下载第 3 帧的输出将包括所有 1-10 帧。此功能需要deadline-cloud版本 0.53.3 或更高版本。