Skip to content

enforce a floor on libnvjitlink, build wheels with CUDA 13.0.x, test wheels against mix of CTK versions#21671

Merged
rapids-bot[bot] merged 26 commits intorapidsai:release/26.04from
jameslamb:test-older-ctk
Mar 18, 2026
Merged

enforce a floor on libnvjitlink, build wheels with CUDA 13.0.x, test wheels against mix of CTK versions#21671
rapids-bot[bot] merged 26 commits intorapidsai:release/26.04from
jameslamb:test-older-ctk

Conversation

@jameslamb
Copy link
Copy Markdown
Member

@jameslamb jameslamb commented Mar 5, 2026

Description

Contributes to rapidsai/build-planning#257

  • builds CUDA 13 wheels with the 13.0 CTK
  • ensures wheels ship with a runtime dependency of nvidia-nvjitlink>={whatever-minor-version-they-were-built-against}

Contributes to rapidsai/build-planning#256

  • updates wheel tests to cover a range of CTK versions (we previously, accidentally, were only testing the latest 12.x and 13.x)

Other changes

  • ensures conda packages also take on floors of libnvjitlink>={whatever-version-they-were-built-against}

Notes for Reviewers

How I tested this

Used wheels from similar PRs from RAPIDS dependencies, at build and test time:

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@jameslamb jameslamb added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Mar 5, 2026
@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot bot commented Mar 5, 2026

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@jameslamb
Copy link
Copy Markdown
Member Author

jameslamb commented Mar 9, 2026

/merge

(edit) Ugh, meant to /ok to test but did this by memory. I've put a DO NOT MERGE label on this so we don't get an unexpected early merge

@github-actions github-actions bot added the pylibcudf Issues specific to the pylibcudf package label Mar 9, 2026
@jameslamb jameslamb added DO NOT MERGE Hold off on merging; see PR for details labels Mar 9, 2026
@jameslamb
Copy link
Copy Markdown
Member Author

/ok to test

@jameslamb jameslamb changed the title WIP: [NOT READY FOR REVIEW] enforce a floor on libnvjitlink, build wheels with CUDA 13.0.x, test wheels against mix of CTK versions enforce a floor on libnvjitlink, build wheels with CUDA 13.0.x, test wheels against mix of CTK versions Mar 18, 2026
@jameslamb jameslamb removed the DO NOT MERGE Hold off on merging; see PR for details label Mar 18, 2026
@jameslamb jameslamb marked this pull request as ready for review March 18, 2026 17:15
@jameslamb jameslamb requested review from a team as code owners March 18, 2026 17:15
- ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }}
- cuda-nvrtc
- libnvjitlink >=${{ cuda_version }}
- ${{ pin_compatible("libnvjitlink", lower_bound="x.x.x", upper_bound="x") }}
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.

I think pin_compatible only works correctly if you have that exact package in host. We could verify what rattler says in the build outputs, but I think you might need to list libnvjitlink in host (next to the existing -dev package). The dependency libnvjitlink-dev -> libnvjitlink isn't enough iirc.

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.

Alternatively, wouldn't this be equivalent to us removing the ignore_run_exports on libnvjitlink? The libnvjitlink-dev recipe has:

      run_exports:
        - {{ pin_subpackage("libnvjitlink", max_pin="x") }}

https://github.com/conda-forge/libnvjitlink-feedstock/blob/2fde82c7bc7c3fc354b0f0d808c17dc5036762f1/recipe/meta.yaml#L81-L82

That might be the more correct fix to use here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

we could verify what rattler says

This is resolving correctly to what we want:

 │ │ Finalized run dependencies (libcudf-26.04.00a472-cuda13_260318_9e773c7c):
...
 │ │ │ cuda-version       ┆ >=13.1,<14 (RE of [build: cuda-nvcc_linux-64])     │
...
 │ │ │ libnvjitlink       ┆ >=13.2.51,<14.0a0 (RE of [host: libnvjitlink-dev]) │
...

I think pin_compatible() just cares about that package making it into the host environment, not whether or not it's explicitly listed in your recipe.

wouldn't this be equivalent to us removing the ignore_run_exports on libnvjitlink?

I think you're right, I was wondering about that. But saw that libnvjitlink-dev run exports were explicitly ignored here:

- libnvjitlink

And assumed there was some reason for that (like those run exports being wrong for older versions or something).

I'd be happy to be able to remove these and just trust the libnvjitlink run_exports. Let's try that.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Pushed 5fc6e47 doing that, I'll check the rattler-build output before this is merged.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Looks like the run_exports are doing what we want.

CUDA 12.9:

 │ │ Finalized run dependencies (libcudf-26.04.00a474-cuda12_260318_0602540d):
 │ │ ╭────────────────────┬────────────────────────────────────────────────────╮
 │ │ │ Name               ┆ Spec                                               │
 │ │ ╞════════════════════╪════════════════════════════════════════════════════╡
 │ │ │ Run dependencies   ┆                                                    │
 │ │ │ __glibc            ┆ >=2.28,<3.0.a0 (RE of [build: sysroot_linux-64])   │
 │ │ │ cuda-nvrtc         ┆ >=12.9.86,<13.0a0 (RE of [host: cuda-nvrtc-dev])   │
 │ │ │ cuda-nvtx          ┆ >=12.9.79,<13.0a0 (RE of [host: cuda-nvtx-dev])    │
 │ │ │ cuda-version       ┆ >=12.9,<13 (RE of [build: cuda-nvcc_linux-64])     │
 │ │ │ flatbuffers        ┆ >=24.3.25,<24.3.26.0a0 (RE of [host: flatbuffers]) │
 │ │ │ libcufile          ┆ >=1.14.1.1,<2.0a0 (RE of [host: libcufile-dev])    │
 │ │ │ libcurand          ┆ >=10.3.10.19,<11.0a0 (RE of [host: libcurand-dev]) │
 │ │ │ libgcc             ┆ >=14 (RE of [build: gcc_linux-64])                 │
 │ │ │                    ┆ >=14 (RE of [build: gxx_linux-64])                 │
 │ │ │ libnvcomp          ┆ >=5.1.0.21,<6.0a0 (RE of [host: libnvcomp-dev])    │
 │ │ │ libnvjitlink       ┆ >=12.9.86,<13.0a0 (RE of [host: libnvjitlink-dev]) │
 │ │ │ librdkafka         ┆ >=2.13.2,<2.14.0a0 (RE of [host: librdkafka])      │
 │ │ │ librmm             ┆ >=26.4.0a62,<26.5.0a0 (RE of [host: librmm])       │
 │ │ │ libstdcxx          ┆ >=14 (RE of [build: gxx_linux-64])                 │
 │ │ │ libzlib            ┆ >=1.3.1,<2.0a0 (RE of [host: zlib])                │
 │ │ │                    ┆                                                    │
 │ │ │ Run exports (Weak) ┆                                                    │
 │ │ │ libcudf            ┆ >=26.4.0a474,<26.5.0a0                             │
 │ │ ╰────────────────────┴────────────────────────────────────────────────────╯

(build link)

CUDA 13.1:

 │ │ Finalized run dependencies (libcudf-26.04.00a474-cuda13_260318_0602540d):
 │ │ ╭────────────────────┬────────────────────────────────────────────────────╮
 │ │ │ Name               ┆ Spec                                               │
 │ │ ╞════════════════════╪════════════════════════════════════════════════════╡
 │ │ │ Run dependencies   ┆                                                    │
 │ │ │ __glibc            ┆ >=2.28,<3.0.a0 (RE of [build: sysroot_linux-64])   │
 │ │ │ cuda-nvrtc         ┆ >=13.1.115,<14.0a0 (RE of [host: cuda-nvrtc-dev])  │
 │ │ │ cuda-nvtx          ┆ >=13.1.115,<14.0a0 (RE of [host: cuda-nvtx-dev])   │
 │ │ │ cuda-version       ┆ >=13.1,<14 (RE of [build: cuda-nvcc_linux-64])     │
 │ │ │ flatbuffers        ┆ >=24.3.25,<24.3.26.0a0 (RE of [host: flatbuffers]) │
 │ │ │ libcufile          ┆ >=1.16.1.26,<2.0a0 (RE of [host: libcufile-dev])   │
 │ │ │ libcurand          ┆ >=10.4.1.81,<11.0a0 (RE of [host: libcurand-dev])  │
 │ │ │ libgcc             ┆ >=14 (RE of [build: gcc_linux-64])                 │
 │ │ │                    ┆ >=14 (RE of [build: gxx_linux-64])                 │
 │ │ │ libnvcomp          ┆ >=5.1.0.21,<6.0a0 (RE of [host: libnvcomp-dev])    │
 │ │ │ libnvjitlink       ┆ >=13.2.51,<14.0a0 (RE of [host: libnvjitlink-dev]) │
 │ │ │ librdkafka         ┆ >=2.13.2,<2.14.0a0 (RE of [host: librdkafka])      │
 │ │ │ librmm             ┆ >=26.4.0a62,<26.5.0a0 (RE of [host: librmm])       │
 │ │ │ libstdcxx          ┆ >=14 (RE of [build: gxx_linux-64])                 │
 │ │ │ libzlib            ┆ >=1.3.1,<2.0a0 (RE of [host: zlib])                │
 │ │ │                    ┆                                                    │
 │ │ │ Run exports (Weak) ┆                                                    │
 │ │ │ libcudf            ┆ >=26.4.0a474,<26.5.0a0                             │
 │ │ ╰────────────────────┴────────────────────────────────────────────────────╯

(build link)

- matrix:
packages:
- nvidia-nvjitlink>=13.0
- nvidia-nvjitlink>=12,<14
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.

I find this a little weird. It's a fake pinning -- none of our packages actually use this -- we just have it to indicate roughly what the package needs. Last I remember, we settled on using CUDA 13 packages here. rapidsai/build-planning#68

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Sure, let's use CUDA 13 packages. I'll do that here and in the other PRs in this series.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Pushed 5fc6e47 doing that

table: project.optional-dependencies
key: test
includes:
- cuda_version
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Just picking a place to have a threaded conversation (I don't think this particular line is to blame)... I'm seeing cuML-related conda tests segfaulting:

Fatal Python error: Segmentation fault
...
=========================== short test summary info ============================
FAILED python/cudf/cudf_pandas_tests/third_party_integration_tests/tests/test_cuml.py::test_clustering - worker 'gw4' crashed while running 'test_cuml.py::test_clustering'
FAILED python/cudf/cudf_pandas_tests/third_party_integration_tests/tests/test_cuml.py::test_pipeline - worker 'gw3' crashed while running 'test_cuml.py::test_pipeline'
FAILED python/cudf/cudf_pandas_tests/third_party_integration_tests/tests/test_cuml.py::test_linear_regression - worker 'gw0' crashed while running 'test_cuml.py::test_linear_regression'
FAILED python/cudf/cudf_pandas_tests/third_party_integration_tests/tests/test_cuml.py::test_random_forest - worker 'gw2' crashed while running 'test_cuml.py::test_random_forest'
FAILED python/cudf/cudf_pandas_tests/third_party_integration_tests/tests/test_cuml.py::test_logistic_regression - worker 'gw1' crashed while running 'test_cuml.py::test_logistic_regression'
========================= 5 failed, 3 passed in 7.02s ==========================

(third-part-pandas-integration-tests link)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

@bdice bdice left a comment

Choose a reason for hiding this comment

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

Cool, cool!

@jameslamb
Copy link
Copy Markdown
Member Author

Merging despite the failing (non-required) third-party-integration-tests-cudf-pandas job. I suspect those failures are unrelated to these changes, especially since I saw similar issues in conda-based jobs with cuML in other repos and PRs (links in #21671 (comment)).

@jameslamb
Copy link
Copy Markdown
Member Author

/merge

@rapids-bot rapids-bot bot merged commit a9064fe into rapidsai:release/26.04 Mar 18, 2026
118 of 119 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in cuDF Python Mar 18, 2026
@jameslamb jameslamb deleted the test-older-ctk branch March 18, 2026 21:48
rapids-bot bot pushed a commit to rapidsai/cugraph that referenced this pull request Mar 19, 2026
…wheels against mix of CTK versions (#5457)

Fixes #5443

Contributes to rapidsai/build-planning#257

* builds CUDA 13 wheels with the 13.0 CTK
* ensures wheels ship with a runtime dependency of `nvidia-nvjitlink>={whatever-minor-version-they-were-built-against}`

Contributes to rapidsai/build-planning#256

* updates wheel tests to cover a range of CTK versions (we previously, accidentally, were only testing the latest 12.x and 13.x)

Other changes

* ensures conda packages also take on floors of `libnvjitlink>={whatever-version-they-were-built-against}`

## Notes for Reviewers

### How I tested this

This uses wheels from similar PRs from RAPIDS dependencies, at build and test time:

* rapidsai/cudf#21671
* rapidsai/kvikio#942
* rapidsai/raft#2971
* rapidsai/rmm#2270
* rapidsai/ucxx#604

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Gil Forsyth (https://github.com/gforsyth)

URL: #5457
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cudf.pandas Issues specific to cudf.pandas improvement Improvement / enhancement to an existing function non-breaking Non-breaking change pylibcudf Issues specific to the pylibcudf package Python Affects Python cuDF API.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants