Skip to content

Fix unified pip devcontainer UCX base tags - #766

Merged
msarahan merged 4 commits into
rapidsai:release/26.10from
msarahan:codex/fix-unified-ucx-1.21
Sep 9, 2026
Merged

Fix unified pip devcontainer UCX base tags#766
msarahan merged 4 commits into
rapidsai:release/26.10from
msarahan:codex/fix-unified-ucx-1.21

Conversation

@msarahan

@msarahan msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Posted by Codex (gpt-5.6-sol) on Michael Sarahan's behalf; treat this message as LLM-generated.

The release/26.10 image matrix builds UCX 1.21 (as of NVIDIA/devcontainers#756), but its checked-in unified pip devcontainers still requested UCX 1.19 base images. Those tags cannot be produced by the current branch matrix, so this PR updates the CUDA 12.9 and 13.3 pip bases to UCX 1.21.

The first full matrix exposed a second UCX compatibility problem hidden by the old configuration. The PyPI OpenMPI wheel bundles UCX 1.20 libraries. Installing that wheel while RAPIDS explicitly selects system UCX 1.21 creates a mixed runtime and leaves new libucp symbols unresolved during C++ links. When system UCX is preferred, the pip environment now excludes and removes the PyPI OpenMPI wheel, including from reused virtual environments. The base image already supplies OpenMPI built against its system UCX, so MPI and UCX remain one consistent stack.

This PR deliberately does not change CUDA_HOME to address the separate cuTile failures seen in the first run. RAPIDS build-planning issue rapidsai/build-planning#324 establishes the intended dependency boundary: projects declare the cuda-tile Python build dependency, while tileiras comes from the system CUDA Toolkit selected for the build. The corresponding work is in rapidsai/cugraph#5646 and NVIDIA/cuvs#2564. Redirecting the entire conda devcontainer to a package-managed toolkit would hide that dependency problem and change the toolkit seen by unrelated CUDA consumers.

Related dependency work:

@msarahan
msarahan requested a review from a team as a code owner September 9, 2026 00:00
@msarahan
msarahan requested review from KyleFromNVIDIA and removed request for a team September 9, 2026 00:00
@msarahan msarahan added non-breaking Introduces a non-breaking change improvement Improves an existing functionality labels Sep 9, 2026
@msarahan
msarahan changed the base branch from main to release/26.10 September 9, 2026 00:33
@msarahan
msarahan force-pushed the codex/fix-unified-ucx-1.21 branch from 9c8c031 to 2286e75 Compare September 9, 2026 00:38
The PyPI OpenMPI wheel bundles UCX 1.20 libraries. Unified pip containers now use system UCX 1.21, so installing that wheel creates a mixed UCX runtime and leaves libucp with unresolved 1.21 symbols during C++ links.\n\nExclude and uninstall the wheel whenever system UCX is preferred. The base image already supplies OpenMPI linked against that same system UCX, preserving one internally consistent MPI/UCX stack even for reused virtual environments.
@copy-pr-bot

copy-pr-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@msarahan

msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Posted by Codex (gpt-5.6-sol) on Michael Sarahan's behalf; treat this message as LLM-generated.

/ok to test 5b72ce4

The CUDA feature exports an incomplete profiler-only system toolkit for conda devcontainers. Conda's tileiras then honors that CUDA_HOME instead of using the matching compiler libraries installed in the environment, causing every TileIR version probe and cuVS kernel export to fail.\n\nAllow the CUDA profile to accept an explicit package-managed toolkit root, and select the rapids conda environment only for the CUDA 13.3 conda configuration that installs tileiras. Other CUDA and package-manager combinations retain the system default.
@msarahan

msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Posted by Codex (gpt-5.6-sol) on Michael Sarahan's behalf; treat this message as LLM-generated.

/ok to test 93801e3

@msarahan

msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Posted by Codex (gpt-5.6-sol) on Michael Sarahan's behalf; treat this message as LLM-generated.

/ok to test 93801e3961a6def53014fb1df8b67c5916f3d754

@bdice bdice 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.

The ucx 1.21 changes are correct, and are also included in #767. I approved that PR.

I am not super confident about the CUDA_HOME environment changes here. For awareness, @jameslamb is looking at some cuda-tile modifications in rapidsai/build-planning#324.

@bdice

bdice commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

/ok to test 93801e3

@bdice

bdice commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@msarahan The AI disclaimer preface was preventing /ok to test from working. Just for future reference.

cuTile dependencies should be declared by the project that needs them, while tileiras comes from the system CUDA Toolkit selected for that build. Redirecting CUDA_HOME for the entire conda devcontainer hides that dependency boundary and changes unrelated CUDA consumers, so restore the feature's normal system-toolkit environment.
@jameslamb

Copy link
Copy Markdown
Member

RAPIDS build-planning issue #324

^ also notice your AI-generated description linked to #324 (random closed PR from 2 years ago) when I'm pretty sure the intention was rapidsai/build-planning#324.

@msarahan

msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

@jameslamb you're absolutely right. That's kind of a language ambiguity that github turns into a misleading link. It is linguistically correct, but not technically. Thanks for pointing it out.

@msarahan

msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@msarahan
msarahan merged commit b8a81f0 into rapidsai:release/26.10 Sep 9, 2026
12 checks passed
@msarahan
msarahan deleted the codex/fix-unified-ucx-1.21 branch September 9, 2026 15:45

@trxcllnt trxcllnt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Need to update the feature version in features/src/rapids-build-utils/devcontainer-feature.json, otherwise the new changes won't be published to ghcr.io

@msarahan

msarahan commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Followed up with #769

jrhemstad pushed a commit to jrhemstad/devcontainers that referenced this pull request Sep 10, 2026
msarahan added a commit that referenced this pull request Sep 10, 2026
**Posted by Codex (GPT-5) on Michael Sarahan's behalf. Treat this
message as LLM-generated.**

## Why

The 26.12 version update triggered the release workflow before
`v26.12.00a` existed. Image producers derive their namespace from the
most recent reachable tag, so they published successful `26.10-*` images
while the newly updated unified devcontainers requested `26.12-*`
images. The alpha tag appeared nine minutes after the workflow began. A
later retry of failed jobs could not recover because GitHub did not
rerun the already-successful producer jobs.

This creates an avoidable bootstrap dependency: the version-update
workflow needs to publish the new namespace before the tag that
currently defines that namespace can be created. The committed `VERSION`
file is already updated atomically with the consumer definitions and is
therefore the appropriate source of truth for producer tags.

The incident also exposed a second class of mismatch: `matrix.yml` can
change an image component version without the checked-in unified
devcontainers changing their `BASE` references. Without validation, that
drift is only discovered after all producer builds complete and
consumers attempt to pull an image that will never be published.

PR #766 applies the UCX alignment to `release/26.10` for
forward-merging. This branch currently contains the equivalent
main-branch alignment; that portion will disappear from this PR's diff
after the forward merge reaches `main`.

## Changes

- derive Linux and Windows producer namespaces from the committed
`VERSION` file instead of `git describe`
- validate that `VERSION` uses `YY.MM.PP` format
- reconstruct all publishable Linux image tags from `matrix.yml`,
including OS-qualified tags and OS-free aliases
- reject any checked-in RAPIDS unified devcontainer `BASE` that the
current matrix cannot produce
- run that validation in pre-commit and as a fatal release prerequisite
before Linux producers and downstream unified devcontainers run
- add ShellCheck coverage for the release-bootstrap scripts touched here

## Why the previous sequence cannot recur

After these changes, merging a version update changes both producer and
consumer namespaces through the same committed `VERSION` value. The
producer no longer depends on whether the alpha tag existed when the
workflow checkout occurred. The release also stops before building
images if a consumer base does not correspond to the current matrix, so
component-version drift is reported directly rather than surfacing as a
late missing-manifest error.

## Validation

- `pre-commit run --all-files`
  - zizmor
  - devcontainer base-image validation
  - ShellCheck for the release-bootstrap scripts
- positive validation against the 26.12 / UCX 1.21 configuration
- negative validation with a deliberate UCX 1.19 base, which failed and
identified the affected file and unproducible tag
- `git diff --check`

Incident:
https://github.com/rapidsai/devcontainers/actions/runs/34280170418/job/102279620120

---------

Co-authored-by: Paul Taylor <178183+trxcllnt@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants