Skip to content

Feature request: Configure GPU rendering with host requirements via GUI #151

Open
@joel-wong-aws

Description

@joel-wong-aws

Describe the problem

There are two closely related problems to solve:

  1. If a GPU render is submitted, a minimum of 1 GPU is not added to the host requirements (but it should be). This means the job could be assigned to the wrong fleet unless the user also selects a minimum of 1 GPU in the host requirements tab.
  2. When submitting from a CPU-only workstation, Keyshot only allows the user to select a CPU-only render. It does not allow GPU renders to be configured. We should make this configurable in submissions to AWS Deadline Cloud.

Proposed Solution

  1. Add a job-specific setting "Render Engine" with options "CPU" or "GPU" to the submitter GUI
  2. By default, if no previous option has been selected, use the lux.getRenderEngine() setting (lux.RENDER_ENGINE_PRODUCT and lux.RENDER_ENGINE_INTERIOR are CPU, lux.RENDER_ENGINE_PRODUCT_GPU and lux.RENDER_ENGINE_INTERIOR_GPU are GPU)
  3. Pass the CPU or GPU option selected in the submitter GUI in init-data
  4. When receiving init-data, if the scene has lux.RENDER_ENGINE_PRODUCT but the user has configured GPU, call lux.setRenderEngine(lux.RENDER_ENGINE_PRODUCT_GPU). Apply similar logic to lux.RENDER_ENGINE_INTERIOR and vice versa. This logic would be in a new adaptor action set_render_engine added here
  5. If GPU is selected, add a requirement of minimum 1 GPU to the job's host requirements
  6. Add error handling logic - if the worker machine does not have a GPU, ensure a clear error message is raised.

Scripting reference: https://media.keyshot.com/scripting/doc/2024.3/lux.html

More information about lighting in Keyshot: https://www.keyshot.com/blog/using-lighting-presets-in-keyshot/

Note that CPU and GPU rendering can give different results, and neither is strictly better than the other: https://www.keyshot.com/blog/rendering-in-keyshot-an-analysis-of-cpu-and-gpu-rendering-performance

The proposed solution is a breaking change since it changes the format of init-data.yaml.

Example Use Cases

This will ensure that GPU renders are assigned to the correct workers and also allow users to submit a GPU render from a CPU-only workstation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions