View a markdown version of this page

Agregue la fragmentación de tareas a una plantilla de trabajo - Deadline Cloud

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Agregue la fragmentación de tareas a una plantilla de trabajo

El procedimiento siguiente convierte una plantilla de trabajo que representa un fotograma por tarea en una que renderiza fragmentos de fotogramas. Para obtener más información sobre la fragmentación y cómo elegir un tamaño de fragmento, consulte. Fragmentación de tareas para plantillas de trabajo

Antes de comenzar, necesitará lo siguiente:

  • Un paquete de tareas con una plantilla de tareas que define un parámetro de tarea de marco. Para obtener más información, consulte Elementos de plantilla de trabajo para paquetes de trabajos.

  • Una cola asociada a una flota que admite la fragmentación. Service-managed las flotas siempre utilizan un agente de trabajo compatible. Customer-managed las flotas requieren la versión 0.28.21 del agente de trabajo o una versión posterior para los trabajadores.

Para agregar la fragmentación de tareas a una plantilla de trabajo
  1. Añade la TASK_CHUNKING extensión al principio del template.yaml archivo:

    specificationVersion: 'jobtemplate-2023-09' extensions: - TASK_CHUNKING

    Si omite este paso, se producirá un error al crear el trabajo The CHUNK[INT] task parameter requires the TASK_CHUNKING extension.

  2. En los pasosparameterSpace, cambie el tipo de parámetro de la tarea del marco de INT a CHUNK[INT] y añada la chunks propiedad:

    taskParameterDefinitions: - name: Frame type: CHUNK[INT] range: "{{Param.Frames}}" chunks: defaultTaskCount: 10 rangeConstraint: CONTIGUOUS

    Para ver todos los campos disponibles, consulteReferencia del parámetro de tarea CHUNK [INT].

  3. Actualice el guion del paso para que acepte un rango de fotogramas en lugar de un único fotograma. ConrangeConstraint: CONTIGUOUS, la {{Task.Param.Frame}} variable siempre se expande a un rango de start-end formato, por lo que el script puede dividirla con el cut comando:

    START_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f1)" END_FRAME="$(echo '{{Task.Param.Frame}}' | cut -d- -f2)"

    ConrangeConstraint: NONCONTIGUOUS, la variable se expande hasta convertirse en una expresión de rango arbitraria, como1-3,5,7-20:2. Transforma la expresión en la sintaxis que acepta tu aplicación. Para ver una transformación que funcione, consulte los ejemplos de fragmentación de tareas. GitHub

  4. Envíe el paquete de trabajos con la CLI de Deadline Cloud:

    deadline bundle submit my-job-bundle
  5. Para comprobar que la fragmentación está en vigor, abra el trabajo en el monitor de Deadline Cloud y consulte la lista de tareas del paso. Cada tarea representa un fragmento y muestra un rango de fotogramas, por ejemplo, 1-10 en lugar de un único número de fotogramas.

La siguiente plantilla de trabajo completa renderiza una animación de Blender en fragmentos de 10 fotogramas:

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

En este ejemplo, Deadline Cloud divide los 100 fotogramas en fragmentos, como 1-10 y11-20, y cada tarea renderiza su fragmento con una sola invocación de Blender.

Para obtener más información, consulte los temas siguientes: