Repository navigation
cuda.cccl: Build combined CUDA 12+13 wheel - #5613
Merged
Merged
Conversation
shwina
commented
Aug 21, 2025
alliepiper
reviewed
Aug 21, 2025
Contributor
🟨 CI finished in 17m 36s: Pass: 11%/18 | Total: 1h 28m | Avg: 4m 54s | Max: 10m 36s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟥 CI finished in 2m 27s: Pass: 0%/18 | Total: 3m 18s | Avg: 0m 11s | Max: 1m 40s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟨 CI finished in 18m 39s: Pass: 11%/18 | Total: 1h 17m | Avg: 4m 19s | Max: 11m 16s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟨 CI finished in 19m 58s: Pass: 11%/18 | Total: 1h 22m | Avg: 4m 36s | Max: 10m 41s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟨 CI finished in 19m 23s: Pass: 55%/18 | Total: 1h 29m | Avg: 4m 58s | Max: 11m 08s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟩 CI finished in 33m 06s: Pass: 100%/18 | Total: 3h 11m | Avg: 10m 39s | Max: 19m 29s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
shwina
commented
Aug 22, 2025
shwina
commented
Aug 22, 2025
shwina
commented
Aug 22, 2025
Contributor
🟩 CI finished in 32m 09s: Pass: 100%/18 | Total: 3h 10m | Avg: 10m 36s | Max: 20m 05s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟨 CI finished in 32m 48s: Pass: 83%/18 | Total: 3h 11m | Avg: 10m 37s | Max: 20m 56s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
leofang
requested changes
Aug 22, 2025
shwina
force-pushed
the
combined-cu12-cu13-wheel
branch
from
August 22, 2025 17:52
3d45106 to
74bd8e3
Compare
Contributor
🟨 CI finished in 50m 40s: Pass: 94%/18 | Total: 3h 09m | Avg: 10m 31s | Max: 21m 43s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
Contributor
🟩 CI finished in 33m 06s: Pass: 100%/18 | Total: 3h 09m | Avg: 10m 31s | Max: 20m 08s
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 18)
| # | Runner |
|---|---|
| 16 | linux-amd64-gpu-l4-latest-1 |
| 2 | linux-amd64-cpu16 |
shwina
force-pushed
the
combined-cu12-cu13-wheel
branch
from
August 23, 2025 11:53
2a5ddc3 to
f9502aa
Compare
shwina
commented
Aug 23, 2025
Contributor
🟩 CI finished in 1h 19m: Pass: 100%/210 | Total: 2d 08h | Avg: 16m 08s | Max: 1h 18m | Hits: 81%/325699
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 210)
| # | Runner |
|---|---|
| 128 | linux-amd64-cpu16 |
| 23 | windows-amd64-cpu16 |
| 17 | linux-amd64-gpu-l4-latest-1 |
| 12 | linux-arm64-cpu16 |
| 11 | linux-amd64-gpu-rtx2080-latest-1 |
| 10 | linux-amd64-gpu-h100-latest-1 |
| 6 | linux-amd64-gpu-rtxa6000-latest-1 |
| 3 | linux-amd64-gpu-rtx4090-latest-1 |
Contributor
🟩 CI finished in 1h 38m: Pass: 100%/210 | Total: 1d 15h | Avg: 11m 10s | Max: 48m 17s | Hits: 96%/325699
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 210)
| # | Runner |
|---|---|
| 128 | linux-amd64-cpu16 |
| 23 | windows-amd64-cpu16 |
| 17 | linux-amd64-gpu-l4-latest-1 |
| 12 | linux-arm64-cpu16 |
| 11 | linux-amd64-gpu-rtx2080-latest-1 |
| 10 | linux-amd64-gpu-h100-latest-1 |
| 6 | linux-amd64-gpu-rtxa6000-latest-1 |
| 3 | linux-amd64-gpu-rtx4090-latest-1 |
alliepiper
approved these changes
Aug 26, 2025
alliepiper
left a comment
Contributor
There was a problem hiding this comment.
Reviewed the CI + CMake stuff. Let's just move that utility script, otherwise LGTM!
| echo "$usage" | ||
| exit 1 | ||
| fi | ||
| source "$ci_dir/common_arg_parser.sh" |
Contributor
There was a problem hiding this comment.
Let's move this to $ci_dir/util/python/common_arg_parser.sh. We're trying to declutter the top-level CI directory, and this will make it clear that this parser is specific to the python scripts.
shwina
force-pushed
the
combined-cu12-cu13-wheel
branch
from
August 26, 2025 14:52
b2e8a52 to
cb361f9
Compare
shwina
enabled auto-merge (squash)
August 26, 2025 16:49
Contributor
🟩 CI finished in 2h 42m: Pass: 100%/210 | Total: 1d 14h | Avg: 11m 07s | Max: 38m 59s | Hits: 97%/325651
|
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| CCCL Packaging | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| stdpar | |
| +/- | python |
| CCCL C Parallel Library | |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| +/- | CCCL Infrastructure |
| +/- | CCCL Packaging |
| +/- | libcu++ |
| +/- | CUB |
| +/- | Thrust |
| +/- | CUDA Experimental |
| +/- | stdpar |
| +/- | python |
| +/- | CCCL C Parallel Library |
| +/- | Catch2Helper |
🏃 Runner counts (total jobs: 210)
| # | Runner |
|---|---|
| 128 | linux-amd64-cpu16 |
| 23 | windows-amd64-cpu16 |
| 17 | linux-amd64-gpu-l4-latest-1 |
| 12 | linux-arm64-cpu16 |
| 11 | linux-amd64-gpu-rtx2080-latest-1 |
| 10 | linux-amd64-gpu-h100-latest-1 |
| 6 | linux-amd64-gpu-rtxa6000-latest-1 |
| 3 | linux-amd64-gpu-rtx4090-latest-1 |
davebayer
pushed a commit
to davebayer/cccl
that referenced
this pull request
Sep 23, 2025
* Produce combined CUDA 12 + CUDA 13 wheel * Updates to CI scripts to build and test with combined wheel * Update the documentation * Get the cuda major version from nvcc * Move common arg parser to util/python/common_arg_parser.sh --------- Co-authored-by: Ashwin Srinath <[email protected]>
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
Closes #5448.
Closes #5066
This PR enables a single
cuda.ccclwheel to support both CUDA 13 and CUDA 12. Although we continue to ship a single wheel, the install command does require specifying the CUDA version:This requirement is currently solely due to the
cuda-bindingsdependency which is versioned the same as CUDA. I'm hoping that some magic materializes in time such thatpip install cuda-bindingsmagically pulls in the right (major) version without having to specify it.How it works
This PR largely implements the "Model 2" solution as described in this comment. To elaborate:
Previously, we only supported CUDA 12, and our wheel shipped with a single
libcccl.c.parallel.soand associated Python extension (bindings). Things were easy.Now, we support multiple CUDA major versions (12 and 13), and our wheel ships with multiple
libcccl.cl.parallel.so(and associated Python bindings). Things are just a little bit harder.At import time, a shim Python module called
_bindings.pydetects the CUDA version available and imports the appropriate Python extension, eithercu12/_bindings_impl.soorcu13/_bindings_impl.so.Because our binaries are so small (containing no CUDA kernels - everything is JIT), we can afford to do this, i.e., ship multiple sets of binaries per CUDA version. Currently the wheel size is ~4MB.
In terms of implementation, this is achieved by building multiple CUDA-specific wheels and then merging them into one using a helper script
merge_cuda_wheels.py. This approach has the advantages that (1) it requires almost no changes to our existing build infrastructure (which knows how to build for a single CUDA version), and (2) it does not require a specialized build environment containing multiple CUDA toolkits.Checklist