RenderProduct Device Selection
When to Use
Use this skill when a scene, test, or example must constrain a RenderProduct to CUDA-visible GPU 0 or another explicit set of CUDA-visible GPUs, especially for multi-GPU CI or viewport picking.
Inputs
Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.
- Target API surface: Python, C/C++, USD, or a combination.
- RenderProduct prim path or scene file that needs a
deviceIds restriction.
- CUDA-visible device index allow-list, usually
[0] for picking or deterministic multi-GPU CI.
- Whether the pinning is authored in static USDA, inline USD, or an existing example/test scene.
- Repository source snippets referenced below. Treat these snippets as the API source of truth.
Prerequisites
- Use an ovrtx checkout that contains the referenced examples and docs tests.
- Read the relevant
> **Source:** snippet before writing or explaining API usage.
- Confirm device indices are CUDA-visible indices after
CUDA_VISIBLE_DEVICES filtering, not physical GPU IDs.
- Pin the RenderProduct only; Camera and RenderVar prims do not own
deviceIds.
Instructions
- Identify the RenderProduct path and the CUDA-visible device indices it should be allowed to use.
- Author or update the RenderProduct
deviceIds attribute in USD; do not pin Camera or RenderVar prims.
- Interpret device IDs after
CUDA_VISIBLE_DEVICES remapping, not as physical PCI bus or global GPU IDs.
- For picking workflows, pin the relevant RenderProduct to CUDA-visible GPU 0 until the picking limitation is removed.
- When changing code, run the picking or render-product docs test that owns the GPU-pinning snippet whenever practical.
Output Format
- For explanations, cite the relevant API names, source snippets, and caveats.
- For code changes, summarize the files changed, snippets affected, and validation run.
Scripts
This skill has no scripts.
Limitations
- For picking, pin RenderProducts to CUDA-visible GPU 0 until the current picking limitation is removed.
- The referenced snippets remain the source of truth; update or add tested snippets before documenting new API usage.
Overview
ovrtx can select active CUDA devices at renderer creation and can also restrict
an individual RenderProduct to a specific device list. Author
uint[] deviceIds on the RenderProduct prim before the stage is loaded.
deviceIds is an allow-list of indices into the CUDA-visible device set, after
CUDA_VISIBLE_DEVICES filtering and remapping. ovrtx is free to choose any
CUDA-visible GPU from the list. A one-element list such as [0] restricts the
RenderProduct to CUDA-visible GPU 0.
Use this when a workflow is device-sensitive, needs to constrain eligible GPUs,
or must run on CUDA-visible GPU 0. In the current ovrtx version, viewport
picking only works for RenderProducts running on CUDA-visible GPU 0, so picking
tests and examples should restrict their picking RenderProduct to
deviceIds = [0].
USDA
Restrict a RenderProduct to CUDA-visible GPU 0
Source: tests/docs/data/ovrtx-test-picking-selection.usda snippet doc-pin-render-product-to-gpu-0-usda
Workflow
- Choose the CUDA-visible device indices that may render the product.
- Author
uint[] deviceIds directly on the RenderProduct prim in USD.
- If using renderer-level
active_cuda_gpus, ensure the RenderProduct allow-list is compatible with that active device set.
- Load the scene normally from Python or C.
- Step the constrained RenderProduct path as usual.
For picking, use CUDA-visible GPU 0 until the current picking limitation is
removed.
Key Attribute
| Attribute |
Type |
Use |
deviceIds |
uint[] |
Allow-list of indices into CUDA_VISIBLE_DEVICES that may render this RenderProduct. ovrtx may choose any listed CUDA-visible GPU. Use [0] to restrict picking RenderProducts to CUDA-visible GPU 0. |
Troubleshooting
deviceIds is authored on the RenderProduct prim, not on the renderer config
object, camera, or RenderVar.
deviceIds indexes CUDA-visible devices, not non-CUDA devices, Vulkan device
indices, display adapters, or physical GPU ids masked out by
CUDA_VISIBLE_DEVICES.
deviceIds is an allow-list, not a load-balancing or exact-placement policy.
Exact device selection requires a singleton list such as [0]; [0, 1]
permits ovrtx to choose either listed CUDA-visible GPU.
- Renderer-level CUDA selection and per-RenderProduct
deviceIds must agree.
For picking, leave active_cuda_gpus unset or ensure it includes
CUDA-visible index 0.
- Author the attribute before loading the scene. Do not rely on runtime mutation
for tests that need deterministic device assignment during renderer setup.
- Picking currently requires the picked RenderProduct to run on CUDA-visible
GPU 0. In multi-GPU CI, omit the CUDA-visible GPU 0 restriction only if the
test does not depend on pick results.
Related Skills
picking-selection for viewport picking, marquee selection, and selection
outline drawing.
renderer-creation for renderer-level CUDA device selection.
References
- Use the
> **Source:** directives in this skill to locate tested snippets before reusing API patterns.
- Keep related skills, docs, and snippets synchronized when changing the workflow.
1---2name: render-product-device-pinning3description: Restricting RenderProducts to specific CUDA-visible device indices with the USD deviceIds attribute. Use when a scene, test, or example must constrain a RenderProduct to CUDA-visible GPU 0 or another explicit set of CUDA-visible GPUs, especially for multi-GPU CI or viewport picking.4license: LicenseRef-NvidiaProprietary5---67# RenderProduct Device Selection89## When to Use1011Use this skill when a scene, test, or example must constrain a RenderProduct to CUDA-visible GPU 0 or another explicit set of CUDA-visible GPUs, especially for multi-GPU CI or viewport picking.1213## Inputs1415Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.1617- Target API surface: Python, C/C++, USD, or a combination.18- RenderProduct prim path or scene file that needs a `deviceIds` restriction.19- CUDA-visible device index allow-list, usually `[0]` for picking or deterministic multi-GPU CI.20- Whether the pinning is authored in static USDA, inline USD, or an existing example/test scene.21- Repository source snippets referenced below. Treat these snippets as the API source of truth.2223## Prerequisites2425- Use an ovrtx checkout that contains the referenced examples and docs tests.26- Read the relevant `> **Source:**` snippet before writing or explaining API usage.27- Confirm device indices are CUDA-visible indices after `CUDA_VISIBLE_DEVICES` filtering, not physical GPU IDs.28- Pin the RenderProduct only; Camera and RenderVar prims do not own `deviceIds`.2930## Instructions31321. Identify the RenderProduct path and the CUDA-visible device indices it should be allowed to use.332. Author or update the RenderProduct `deviceIds` attribute in USD; do not pin Camera or RenderVar prims.343. Interpret device IDs after `CUDA_VISIBLE_DEVICES` remapping, not as physical PCI bus or global GPU IDs.354. For picking workflows, pin the relevant RenderProduct to CUDA-visible GPU 0 until the picking limitation is removed.365. When changing code, run the picking or render-product docs test that owns the GPU-pinning snippet whenever practical.3738## Output Format3940- For explanations, cite the relevant API names, source snippets, and caveats.41- For code changes, summarize the files changed, snippets affected, and validation run.4243## Scripts4445This skill has no scripts.4647## Limitations4849- For picking, pin RenderProducts to CUDA-visible GPU 0 until the current picking limitation is removed.50- The referenced snippets remain the source of truth; update or add tested snippets before documenting new API usage.5152## Overview5354ovrtx can select active CUDA devices at renderer creation and can also restrict55an individual RenderProduct to a specific device list. Author56`uint[] deviceIds` on the RenderProduct prim before the stage is loaded.5758`deviceIds` is an allow-list of indices into the CUDA-visible device set, after59`CUDA_VISIBLE_DEVICES` filtering and remapping. ovrtx is free to choose any60CUDA-visible GPU from the list. A one-element list such as `[0]` restricts the61RenderProduct to CUDA-visible GPU 0.6263Use this when a workflow is device-sensitive, needs to constrain eligible GPUs,64or must run on CUDA-visible GPU 0. In the current ovrtx version, viewport65picking only works for RenderProducts running on CUDA-visible GPU 0, so picking66tests and examples should restrict their picking RenderProduct to67`deviceIds = [0]`.6869## USDA7071### Restrict a RenderProduct to CUDA-visible GPU 07273> **Source:** `tests/docs/data/ovrtx-test-picking-selection.usda` snippet `doc-pin-render-product-to-gpu-0-usda`7475## Workflow76771. Choose the CUDA-visible device indices that may render the product.782. Author `uint[] deviceIds` directly on the RenderProduct prim in USD.793. If using renderer-level `active_cuda_gpus`, ensure the RenderProduct allow-list is compatible with that active device set.804. Load the scene normally from Python or C.815. Step the constrained RenderProduct path as usual.8283For picking, use CUDA-visible GPU 0 until the current picking limitation is84removed.8586## Key Attribute8788| Attribute | Type | Use |89|-----------|------|-----|90| `deviceIds` | `uint[]` | Allow-list of indices into `CUDA_VISIBLE_DEVICES` that may render this RenderProduct. ovrtx may choose any listed CUDA-visible GPU. Use `[0]` to restrict picking RenderProducts to CUDA-visible GPU 0. |9192## Troubleshooting9394- `deviceIds` is authored on the RenderProduct prim, not on the renderer config95 object, camera, or RenderVar.96- `deviceIds` indexes CUDA-visible devices, not non-CUDA devices, Vulkan device97 indices, display adapters, or physical GPU ids masked out by98 `CUDA_VISIBLE_DEVICES`.99- `deviceIds` is an allow-list, not a load-balancing or exact-placement policy.100 Exact device selection requires a singleton list such as `[0]`; `[0, 1]`101 permits ovrtx to choose either listed CUDA-visible GPU.102- Renderer-level CUDA selection and per-RenderProduct `deviceIds` must agree.103 For picking, leave `active_cuda_gpus` unset or ensure it includes104 CUDA-visible index `0`.105- Author the attribute before loading the scene. Do not rely on runtime mutation106 for tests that need deterministic device assignment during renderer setup.107- Picking currently requires the picked RenderProduct to run on CUDA-visible108 GPU 0. In multi-GPU CI, omit the CUDA-visible GPU 0 restriction only if the109 test does not depend on pick results.110111## Related Skills112113- `picking-selection` for viewport picking, marquee selection, and selection114 outline drawing.115- `renderer-creation` for renderer-level CUDA device selection.116117## References118119- Use the `> **Source:**` directives in this skill to locate tested snippets before reusing API patterns.120- Keep related skills, docs, and snippets synchronized when changing the workflow.