Repository navigation
[CI] Shorten the slowest PR jobs: warm Warp kernels, contrib on base image, more standalone workers - #8802
Open
StafaH wants to merge 3 commits into
Open
[CI] Shorten the slowest PR jobs: warm Warp kernels, contrib on base image, more standalone workers#8802StafaH wants to merge 3 commits into
StafaH wants to merge 3 commits into
Conversation
No contributed environment imports cuRobo, and the base image installs a superset of the cuRobo image's Python extras. Running the job on the base image removes its dependency on the cuRobo image build, which takes over five minutes in about a quarter of PR runs and up to 46 minutes. Give the contrib files their own skip list so CUROBO_TESTS again lists only tests that need cuRobo.
PR test jobs only restore the Warp kernel cache, and the post-merge warmer filled it from the rigid Newton core environments alone. Newton's deterministic modes and the contributed environments compile kernels outside that set, so every PR recompiled them: the determinism file is the long pole of isaaclab_tasks [2/3] and the contrib job compiles more than the whole restored cache. Add both files to the warmer. The old -k prefix matched every test in the existing files, so dropping it keeps their selection unchanged.
Both standalone demo jobs are among the slowest PR jobs, and each is a single file whose launch time is spread across only two xdist workers. Other package jobs already run four simulator processes at once on the same runners. On 16 pinned cores with warm caches, four workers cut the Kit group from 195 s to 105 s and the non-Kit group from 195 s to 123 s, with the same results.
StafaH
requested review from
AntoineRichard,
hujc7,
kellyguo11,
myurasov-nv and
ooctipus
as code owners
October 23, 2026 23:23
Contributor
[Medium impact] The PR appears safe to merge; no actionable issues were found. SummaryThis PR shortens CI jobs without changing production code:
No actionable issues were found. Review checks were static; no tests were run. StafaH explicitly deferred image pulls, runner pickup, renderer overlap, duration-aware scheduling, and cuRobo rebuilds to follow-ups. Reviews (1) · Last reviewed commit: "Run four standalone demo launches at a t..." · Reviewed by Greptile |
Contributor
There was a problem hiding this comment.
Isaac Lab Review Bot
All reviewed code categories look good.
- PR description: The description matches the diff and supplies focused hardware, timing, warm-cache, memory, and collection evidence; shorten the unrelated follow-up inventory and retain the explicit note that end-to-end CI comparison remains pending.
- Design and architecture: Architecture looks good.
- Scope and over-engineering: No over-engineering issues.
- API: API changes look good.
- Compatibility and deprecation: No breaking changes identified.
- Implementation: Implementation looks good.
- Style consistency: Style consistency looks good.
- Test quality: Test quality looks good.
No blocking issues. No inline findings.
Automated review; human maintainers own approval decisions.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR came out of a sweep of PR CI timings: job timings from 54 recent PR runs, plus step logs and JUnit reports from run 39969811204. The median PR run takes 23.3 min, and nine GPU jobs finish within about 3 minutes of each other (12.9–15.8 min median). Wall time only drops if the slow jobs get faster together. This PR changes three things:
test-contrib-environmentsis the last job to finish in 22/54 runs. It waits for the cuRobo image build, which takes more than 5 min in 13/54 runs (p90 24 min, max 46.6 min). No contributed environment imports cuRobo, and the base image installs a superset of the cuRobo image's Python extrasCONTRIB_ENVIRONMENT_TESTSskip list so thatCUROBO_TESTSonly lists tests that need cuRoboisaaclab_tasks [2/3]+101 MB. Newton's deterministic modes generate different kernels, sotest_environment_determinism.py(584 s, the long pole of[2/3]) recompiles on every PRtest_environment_determinism.pyandtest_contrib_environments_kitless.pyto the warmer. The old-kprefix matched every test in both existing files, so the expression is nownot (Soft or Cloth or Cable)No test, source, or production code changes. CI only:
.github/workflows/build.yamlandtools/test_settings.py.Validation
All local runs: RTX PRO 6000 Blackwell,
taskset -c 0-15to match the g7.4xlarge's 16 vCPUs, from a cleanuv sync --frozenworktree.Warp warmer. I filled a fresh cache with exactly the old warmer selection, which gave 204 MB (CI: 211 MB). Then I ran the determinism file twice:
test_environment_determinism.pyrun_to_runcasetest_contrib_environments_kitless.py: 244 s cold vs 78 s warm, 14/14 passed both times.--collect-onlywith the new expression selects the same 36 newton/multi-agent tests as before, plus 7 determinism and 14 contrib tests.Contrib envs without cuRobo (cuRobo is not installed in the worktree): kitless 14 passed, kit 29 passed / 4 skipped, kit_cameras 6 passed. These match the counts in the cuRobo-image CI job. The collector selects the same 3 files for the contrib job and the same 58 files for the
isaaclab_tasksshards as before.Standalone demos, after one warm-up pass:
On CI's own per-case durations, xdist-style greedy assignment reproduces today's file times (489 s / 630 s, observed 493 s / 634 s). With 4 workers it predicts 261 s / 411 s before contention.
pre-commitpasses on the changed files. End-to-end CI savings still need arun-cicomparison.Findings left for follow-ups
Measured during the sweep, not changed here:
Already existslayers). Two large layers dominate: about 2 min to download, then about 2.2 min of sequential extraction. Fixing this is runner infrastructure: base layers baked into the AMI, an in-VPC registry mirror, SOCI lazy loading on ECR, or zstd layers./tmp/ovrtx_renderer.log. Simulating two concurrent renderers with this run's file times:isaaclab_visualizers550→304 s,rendering-correctness522→284 s,rendering-correctness-kitless (legacy)679→349 s, before GPU contention. These three become the tail after this PR. Overlapping them needs per-process OVRTX log paths.isaaclab_tasks [3/3], the 367 stest_environments_isaacsim_physx.pyand 75 stest_franka_cable_partition_bounds.pyboth start cameras, so they run back to back.test-curobostill waits on the cuRobo build. Its cuRobo install runs after the lockfileuv sync, so any lockfile change recompiles cuRobo's CUDA extension.Type of change
Checklist
pre-commitchecks withuv run isaaclab --formatsource/<pkg>/changelog.d/for every touched package (no source package touched)CONTRIBUTORS.mdor my name already exists there