Skip to content

Prevent job-container teardown hangs in ROCm CI - #820

Open
magaonka-amd wants to merge 17 commits into
ROCm:amd-mainfrom
magaonka-amd:fix/ci-container-teardown-hang-amd-main
Open

Prevent job-container teardown hangs in ROCm CI#820
magaonka-amd wants to merge 17 commits into
ROCm:amd-mainfrom
magaonka-amd:fix/ci-container-teardown-hang-amd-main

Conversation

@magaonka-amd

Copy link
Copy Markdown

What

ROCm CI job containers now run with --init, and each ROCm workflow ends with a
short, bounded cleanup step. This addresses jobs that finish their real work in
minutes but then sit for tens of minutes in the runner's implicit
"Stop containers" step.

Upstream: jax-ml#39473

mminutoli and others added 17 commits July 20, 2026 12:08
Extends the wheel test continuous and nightly release workflows to run
against TheRock 7.13.0 and TheRock latest builds in addition to ROCm 7.2.0.
Consolidate the ROCm wheel RUNPATH strategy in jaxlib/rocm/rocm_rpath.bzl and
embed it at link time via _WHEEL_RPATHS instead of a post-build patchelf step
(applied under rocm_path_type=link_only, which the release wheel config sets).

A single wheel resolves ROCm libs across TheRock pip wheels (1- and 2-deep
$ORIGIN layouts), TheRock tarballs under /opt/rocm-<ver>, and legacy /opt/rocm;
the loader silently skips $ORIGIN entries whose directories don't exist. Also
pin the hermetic build ROCm to the image's TheRock version via ROCM_DISTRO_URL
so the wheel's ROCm SONAMEs match the runtime image.
- --device=/dev/dri exposes all 8 GPUs to every container on the node,
  defeating per-job GPU isolation on shared multi-GPU runners.
- GPU isolation is already handled by --env-file
  /etc/podinfo/gha-gpu-isolation-settings, which sets
  ROCR_VISIBLE_DEVICES and HIP_VISIBLE_DEVICES per job.
- --device=/dev/kfd is retained for KFD access; 8GPU jobs are
  unaffected since they own the whole node anyway.
- Add compute-post-suffix job to wheel_tests_rocm_release.yml for
  auto-detecting .postN versions from PyPI
- Add wheel-version-suffix input for manual override
- Update S3 paths to use release-validation/ convention with
  github.repository prefix, matching the layout from
  wheel_release_validation_rocm.yml
- Update rocm_release_publish.yml to read from the new
  release-validation/ path and add repository input
- Remove rocm_release_promote_gate.yml (gate pin no longer needed)

Co-authored-by: tsrw2048 <239799652+tsrw2048@users.noreply.github.com>
Co-authored-by: Marco Minutoli <marco.minutoli@amd.com>
Co-authored-by: gulsumgudukbay <gudukbay@gmail.com>
Co-authored-by: magaonka <magaonka@amd.com>
Co-authored-by: tsrw2048 <239799652+tsrw2048@users.noreply.github.com>
… latest

Collapse the ROCm wheel-test matrices (continuous, nightly/release, and the
ROCm release-validation config) down to TheRock 7.14 (GA) and TheRock latest
(nightly), matching the images actually published by rocm-jax's
build-base-docker.yml. The stale therock-7.13.0 references pointed at images
that are no longer built.

Move the Bazel ROCm PR blocking gate off the legacy rocm720 (ROCm 7.2.0)
container onto therock-7.14, and refresh the stale 7.2.0/rocm720
workflow_dispatch defaults across pytest_rocm, bazel_rocm,
build_rocm_artifacts, the download-jax-rocm-wheels action, and the release
publish job.
Run ROCm job containers with --init and end each ROCm workflow with a
short, bounded cleanup step, so jobs stop stalling for tens of minutes
in the runner's implicit "Stop containers" step.
@magaonka-amd
magaonka-amd marked this pull request as ready for review July 27, 2026 21:49
@magaonka-amd
magaonka-amd force-pushed the amd-main branch 2 times, most recently from b188d61 to 857d74a Compare August 4, 2026 17:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants