Skip to content

Add nightly test installing RAPIDS wheels alongside PyTorch - #874

Merged
rapids-bot[bot] merged 4 commits into
rapidsai:mainfrom
bdice:test-pytorch-pip
Oct 17, 2026
Merged

rapids-bot[bot] merged 4 commits into
rapidsai:mainfrom
bdice:test-pytorch-pip

Conversation

@bdice

@bdice bdice commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Installs the latest RAPIDS nightly wheels together with the newest PyTorch wheel (CUDA 12 stable, CUDA 13 stable, CUDA 13 nightly), then runs import smoke tests and checks torch.cuda.is_available().

Pins added to ci/pytorch/constraints.txt are applied to the install, so a proposed dependency change (e.g. cuda-bindings>=12.9.6) can be checked against PyTorch by editing that file in a PR. The job runs on PRs but is not required by pr-builder.

Part of #794.

@bdice
bdice requested a review from a team as a code owner October 15, 2026 16:26
@bdice
bdice requested a review from KyleFromNVIDIA October 15, 2026 16:26
@jameslamb
jameslamb requested review from jameslamb and removed request for KyleFromNVIDIA October 15, 2026 19:30

@jameslamb jameslamb left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Nice, this is the type of thing I was envisioning and I think it'll help a lot!

But leaving a blocking review because I think that without explicit tests of "latest RAPIDS is installable with oldest torch" it's not meeting the main goal from our discussion.

--isolated \
--index-url https://pypi.org/simple \
--extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple \
--extra-index-url "${TORCH_INDEX_URL}" \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
--extra-index-url "${TORCH_INDEX_URL}" \

We downloaded the torch wheel we need, should not need to consider the torch index any more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Kept this one: nightly torch pins triton==3.9.0+git<sha>, which is only published on the PyTorch nightly index (PyPI has no triton 3.9.0), so dropping it breaks the nightly/cu130 job. The downloaded-wheel path still prevents falling back to a different torch. Added a comment explaining why the index stays.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ah, ok that's fine.

Comment thread ci/pytorch/test_pytorch_pip.sh Outdated
Comment thread ci/pytorch/test_pytorch_pip.sh
Comment thread .github/workflows/test.yaml
Comment thread .github/workflows/pr.yaml
Comment on lines +93 to +94
- CUDA_VER: "12.9.2"
TORCH_INDEX: "cu126"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm not sure where to fit it in the implementation here but... somewhere, we want to test "oldest-supported stable PyTorch" too.

I don't think this job as written would have caught that it's too soon to update our cuda-core floor (ref: NVIDIA/cuda-python#1915 (comment))

Today I think that's something like the following for all of RAPIDS (narrower environments can be compatible with older versions):

# CUDA 12:
https://download.pytorch.org/whl/cu129 'torch==2.9.1+cu129'

# CUDA 13:
https://download.pytorch.org/whl/cu130 'torch==2.10.0+cu130'

It'd be really helpful to cover those so we know when we break compatibility with them and can make that an intentional choice.

Maybe an optional TORCH_CONSTRAINT that gets appended to the pip download torch?

Like:

          - CUDA_VER: "12.2.2"
            TORCH_INDEX: "nightly/cu129"
            TORCH_CONSTRAINT: "<2.10"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added --torch-constraint and two oldest-torch entries:

  • CUDA 12: cu129, torch==2.9.1
  • CUDA 13: cu130, torch==2.13.0

For CUDA 13 I used 2.13.0 rather than 2.10.0 because latest RAPIDS is already uninstallable with torch 2.10–2.12: those pin nvjitlink to 13.0.x (nvidia-nvjitlink==13.0.88 / cuda-toolkit[nvjitlink]==13.0.2), while current cuml-cu13 nightlies require nvidia-nvjitlink>=13.3. Verified with a resolve against the nightly + PyTorch indexes; 2.13.0 is the oldest cu130 torch that resolves today.

If that break was unintentional, we can relax the floor in cuml and move this pin back to ==2.10.0.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ohhhhhhhhhh right right right, I was thinking about this from back when we were intentionally building our -cu13 wheels with CTK 13.0.

Yes that's right, for CUDA 13 the floor is 2.13.0 because that was the first torch version that got the looser nvJitLink pins.

@jameslamb jameslamb left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Approving the general shape of this, so you have what you need to merge. You and your agent can fix the bash syntax issue. Please do double-check the logs to be sure we're getting the torch versions we're expecting.

Comment thread ci/release/update-version.sh Outdated
Comment on lines +105 to +106
sed_runner "/citestwheel:.*-ubuntu24.04-py3.13\"/ s/citestwheel:[0-9][0-9]\.[0-9][0-9]/citestwheel:${NEXT_SHORT_TAG}/" .github/workflows/pr.yaml
sed_runner "/citestwheel:.*-ubuntu24.04-py3.13\"/ s/citestwheel:[0-9][0-9]\.[0-9][0-9]/citestwheel:${NEXT_SHORT_TAG}/" .github/workflows/test.yaml

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is really over-specific... it'll miss other operating systems or Python versions and we probably wouldn't catch needing to update this.

I think it'd be safe to unconditionally replace citestwheel:[0-9][0-9]\.[0-9][0-9]- with citestwheel:{NEXT_SHORT_TAG}-.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed. I tried to think of a good way to make the pinning itself OS/Python agnostic but "26.12-latest" won't be a good fit because we need this to vary by CUDA version.

It's fixed now.

@bdice

bdice commented Oct 17, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit 0efff6d into rapidsai:main Oct 17, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants