Skip to content

Replace map transforms with pre-owned and reused buffer cherry-pick - #7300

Open
pbarejko wants to merge 4 commits into
isaac-sim:release/3.0.0from
pbarejko:pbarejko/remove-free-through-map-cp
Open

Replace map transforms with pre-owned and reused buffer cherry-pick#7300
pbarejko wants to merge 4 commits into
isaac-sim:release/3.0.0from
pbarejko:pbarejko/remove-free-through-map-cp

Conversation

@pbarejko

Copy link
Copy Markdown
Collaborator

Description

Cherry-pick #7233

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (existing functionality will not work without user modification)
  • Documentation update

Screenshots

Please attach before and after screenshots of the change if applicable.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump extension.toml — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@pbarejko
pbarejko requested a review from a team August 22, 2026 18:06
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Aug 22, 2026

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

The legacy OVRTX transform paths now use binding.write(..., DataAccess.ASYNC, cuda_stream=...) instead of mapped OVRTX memory. Object transforms use a persistent caller-owned Warp buffer, while camera transforms continue using a per-frame Warp allocation.

  • Design and architecture: Object-buffer ownership is consistently contained within the legacy renderer: it is initialized with the legacy fields, allocated alongside the object binding, required by the update guard, and released during legacy shutdown. The ovstage path remains unchanged.
  • API: The modified renderer symbols are private, with no demonstrated change to public exports, signatures, tensor shapes, dtypes, or devices. A package changelog fragment documents the behavior change.
  • Implementation: The object buffer length and wp.mat44d dtype align with the binding order and kernel launch dimension. Both transform paths pass the producing Warp CUDA stream to the asynchronous OVRTX write, and focused tests verify the selected buffer, access mode, stream forwarding, and cleanup. The camera path still allocates its transform buffer per frame, so this change removes mapping overhead there but does not introduce buffer reuse.

No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.

Automated review; human maintainers own approval decisions.

@greptile-apps

greptile-apps Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR replaces mapped legacy OVRTX transform updates with caller-owned GPU-buffer writes.

  • Allocates and reuses a persistent object-transform buffer.
  • Writes object and camera transforms asynchronously on the producing Warp CUDA stream.
  • Releases the persistent buffer during renderer cleanup.
  • Adds contract tests and a changelog fragment for the new write behavior.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete correctness, security, or lifecycle failure identified in the changed paths.

Object and camera transform writes preserve producer-stream ordering, the persistent object buffer matches the collected object-index set, and cleanup releases the newly owned state.

Important Files Changed

Filename Overview
source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Replaces mapped object and camera transform updates with stream-aware caller-owned writes and adds persistent object-buffer lifecycle management.
source/isaaclab_ov/test/test_ovrtx_deformable_bindings.py Adds focused tests confirming the object and camera paths pass the intended buffers, asynchronous access mode, and CUDA streams.
source/isaaclab_ov/test/test_ovrtx_renderer_contract.py Extends renderer cleanup coverage to require release of the persistent object-transform buffer.
source/isaaclab_ov/changelog.d/ovrtx-caller-owned-transform-write.rst Documents the replacement of per-frame mapped transform updates with caller-owned GPU-buffer writes.

Sequence Diagram

sequenceDiagram
    participant Render as Render loop
    participant Warp as Warp CUDA stream
    participant Buffer as Caller-owned transform buffer
    participant OVRTX as OVRTX binding
    Render->>Warp: Launch transform kernel
    Warp->>Buffer: Populate matrices
    Render->>OVRTX: write(buffer, ASYNC, cuda_stream)
    OVRTX->>Warp: Wait on producer stream
    OVRTX->>Buffer: Read transform matrices
Loading

Reviews (1): Last reviewed commit: "Reformat" | Re-trigger Greptile

@pbarejko
pbarejko enabled auto-merge (squash) August 23, 2026 02:44
…olve-pr-7300

# Conflicts:
#	source/isaaclab_ov/test/test_ovrtx_deformable_bindings.py
kellyguo11 added a commit that referenced this pull request Aug 26, 2026
## Description

Backports five merged `develop` PRs not already represented on
`release/3.0.0` or covered by #7300:

| Source PR | Source commit | Backport commit | Scope |
| --- | --- | --- | --- |
| #7235 | `4fa20fc8a5f` | `8110c816d0a` | Report distinct exit codes for
failed, crashed, timed-out, and startup-hung test runs. |
| #6597 | `2ae0878a266` | `68b21a60158` | Correct the stale
wheel-builder dependency-pin reference. |
| #7320 | `7ed3ad45546` | `1a775d46fcf` | Add success-driven ADR
guidance and evaluation coverage to the domain-randomization skill. |
| #7319 | `2c07bbb43a9` | `4249489a089` | Vectorize clone-plan
environment-ID queries. |
| #7316 | `a00278f0fde` | `8af682bfcb9` | Extend Core Lift and Reorient
episodes and pose-command resampling intervals. |

Each merged source commit was cherry-picked with `-x`. All five applied
without conflicts and have stable patch IDs identical to their source
commits.

#7233 is intentionally excluded because its existing backport is #7300.

## Type of change

- Bug fix
- Performance improvement
- Task configuration update
- Developer tooling improvement
- Documentation update

## Validation

- `uv run --frozen --extra test python -m pytest -q
source/isaaclab/test/cloner/test_clone_plan_algebra.py` — 85 passed.
- Validated the six representative `resolve_exit_code` outcomes,
including mixed-failure precedence.
- `uv run --no-project python tools/skills/cli.py check` — 21 skills
validated.
- `uv run --frozen --extra test python -m pytest --noconftest -q
source/isaaclab_tasks/test/core/test_lift_env_cfg.py` — 3 passed.
- Programmatic Lift/Reorient config assertions confirmed the 4–6 second
resampling interval and 12-second episode length.
- Ruff, Ruff-format, and RST hooks passed for the #7316 paths.
- The original four-PR branch passed
`ISAACLAB_CHANGELOG_BASE_REF=release/3.0.0 uv run --frozen isaaclab -f`;
#7316's source commit also passed its full formatting and changelog
validation.
- `git diff --check
kelly/kellyg/backport-remaining-develop-prs-3.0.0...HEAD` — passed for
the added #7316 commit.
- Stable patch IDs match all five merged source commits; #7316 also has
exact mode/blob parity on both affected paths.

## Screenshots

Not applicable.

## Checklist

- [x] I have read and understood the contribution guidelines.
- [x] I have run the repository formatting or focused pre-commit checks
appropriate to each source PR.
- [x] Documentation and skill guidance from the source PRs are included
unchanged.
- [x] My changes generate no new warnings.
- [x] Existing and backported tests cover the changed behavior.
- [x] Touched release-managed source packages carry their source
changelog fragments.
- [x] Source authorship and `-x` provenance are preserved.

---------

Co-authored-by: myurasov-nv <168484206+myurasov-nv@users.noreply.github.com>
Co-authored-by: AntoineRichard <antoiner@nvidia.com>
Co-authored-by: ooctipus <zhengyuz@nvidia.com>
Co-authored-by: camevor <camevor@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants