Repository navigation
cuda.bindings: support multiple CTK release lines on main #2737
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
rwgk
wants to merge
97
commits into
NVIDIA:main
Choose a base branch
from
rwgk:agent/cuda-bindings-12-on-main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
97 commits
Select commit
Hold shift + click to select a range
9cf09a9
ci: activate dependency-aware package builds and tests
kkraus14 da7ebee
ci: use paths-filter for selective CI planning
kkraus14 42fe412
ci: refine selective path classification
kkraus14 eaed263
ci: compute selective workplan in Python
kkraus14 5c798a7
ci: split selective tests by platform
kkraus14 e5c3610
ci: harden prior artifact downloads
kkraus14 1ccaaef
ci: defer artifact download retries
kkraus14 ca29abd
ci: simplify workplan path classification
kkraus14 44c6a3a
ci: simplify workplan plumbing
kkraus14 fba3b4d
Merge main into agent/selective-ci-orchestration
kkraus14 727ef59
Derive reusable artifact platforms from test matrix
kkraus14 30da891
ci: route selective CI through Moon
kkraus14 139c2c4
ci: separate editable installs from Moon tests
kkraus14 ceaae51
Revert Moon CI migration from PR #2467
kkraus14 5c5b4bf
cuda.bindings: build CUDA 12 and 13 from main
kkraus14 dc9aee4
ci: isolate cuda-core source builds by CUDA major
kkraus14 ca252cf
test: use Ruff security suppressions in CUDA 12 tests
kkraus14 e175708
build: align CUDA 12 cibuildwheel targets
kkraus14 a65ccea
bench: support CUDA 12 context creation
kkraus14 c980cc9
ci: use blobless source-smoke checkout
kkraus14 5d8bffa
Merge main into CUDA 12/13 selective CI work
rwgk b506585
cuda.bindings: sync CUDA 12 maintenance fixes
rwgk ee46c3e
ci: guard shared CUDA bindings maintenance
rwgk bfef374
ci: advance CUDA 12 versions after release
rwgk b87d0a1
docs: avoid generated-file marker in maintenance guide
rwgk 71ad717
ci/versions.yml redesign (major change)
rwgk 4e7b09d
Merge remote-tracking branch 'upstream/main' into agent/cuda-bindings…
rwgk f4ddc4e
ci: address multi-line bindings review feedback
rwgk 721dd18
ci: remove unreleased bindings role
rwgk c6a0cf1
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 83c1cf0
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 7cd594b
ci: simplify multi-CTK bindings support
rwgk d39c88a
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk ddc54a7
ci: harden multi-line release safeguards
rwgk 22108c1
ci: address multi-CTK review feedback
rwgk 874f563
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk c35b278
ci: handle CRLF in bindings workplan parsing
rwgk 889062e
test(bindings): serialize stateful CUDA 12 tests
rwgk 7e2b151
ci: key bindings configuration by package root
rwgk 4ce0da6
toolshed/check_spdx.py: ensure all LICENSE files across the entire re…
rwgk a3ec89a
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 66159e5
ci: make workplan inputs explicit
rwgk d3991fc
ci: trust normalized bindings configuration
rwgk 83799d4
ci: package shared repository tools
rwgk 4373287
ci: check bindings registry against package metadata
rwgk 09f27fb
ci: make bindings environment export explicit
rwgk 3f63f5a
ci: narrow bindings workplans to supported releases
rwgk 9c9577f
ci: remove unused workflow fallback modes
rwgk b58b7f3
ci: load bindings build environment once
rwgk 299236a
ci: narrow bindings release metadata
rwgk 5925958
ci: keep release metadata tied to tags
rwgk 7cb81e1
ci: reject unknown environment setup modes
rwgk 98c987a
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 22bddd4
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 8e422bd
ci: gate wheel tests per bindings package root
rwgk 1fa44b2
chore: refresh cuda-core benchmark pixi lock
rwgk cb8cc71
docs: keep CUDA 12 guidance on the maintenance line
rwgk 8e7bdff
test: sync CUDA 12 NVML device handling
rwgk 248baf3
ci: make tag fixtures hermetic and test sibling tags
rwgk d7f5e16
docs: keep development release paths distinct
rwgk 8e1822c
ci: validate releases against tagged build metadata
rwgk b7b11b1
test: lock line-specific wheel workflow gates
rwgk d1ad4b4
ci: support pre-setuptools-scm release tags
rwgk cb95f0d
docs: preserve post-development release paths
rwgk 5c66cfe
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 3cf49f4
cuda.bindings: sync CUDA 12 root to 12.9.8
rwgk aa40514
cuda.bindings: clarify 12.9.8 source provenance
rwgk 41c7b2a
Merge remote-tracking branch 'upstream/main' into agent/cuda-bindings…
rwgk e309659
build: include bindings backend in source distributions
rwgk f1f5c8e
build: complete CUDA Core source distribution inputs
rwgk f184331
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 1d3e771
cuda.bindings: sync maintenance source through v12.9.9
rwgk edbe3c2
ci: harden bindings release versions and tag selection
rwgk c4feec1
ci: clarify release routing and wheel-plan extraction
rwgk a0fd3b3
docs: clarify dual-line maintenance and rollover
rwgk 548b261
cuda.bindings: reseal imported 12.9.9 runtime template
rwgk d618c51
test: distinguish tagged HEAD from reachable older releases
rwgk bcb537e
test: stabilize CUDA 12 maintenance checks on current hosts
rwgk f287aed
test: defer CUDA 12 NVML driver check until execution
rwgk 74ef24e
ci: use default SCM parsing for bindings release lines
rwgk 653542a
cuda_bindings_12/pyproject.toml: pin pytest==9.1.0, in sync with cuda…
rwgk b9b5b9f
test: restore CUDA 12 cuFile test configuration
rwgk 436342f
Merge branch 'main' into agent/cuda-bindings-12-on-main
rwgk 5deacef
docs: describe SCM tag selector in rollover guide
rwgk 59ff7bd
test: load shared pytest safeguards for CUDA 12 bindings
rwgk e785620
docs: define independent bindings release branches and backports
rwgk b00b677
ci: close metadata, SCM progression, and legacy release gaps
rwgk 17e19e2
docs: repair CUDA 12 cross-references and mark release template
rwgk d819e12
tests: mark synchronized pytest bootstrap copies
rwgk 75d92b5
Merge main into CUDA 12 maintenance-on-main work
rwgk 07845c5
test: restore CUDA 12 cuFile parameter state
rwgk 83ae256
test: serialize CUDA 12 cuFile parameter roundtrips
rwgk 5b41dd1
test: serialize legacy CUDA 12 cuFile lifecycle tests
rwgk be28657
ci: require release configuration from registry-bearing tags
rwgk 71d782a
ci: use pure-Python PyYAML for Windows Python 3.15 tests
rwgk a83b550
ci: qualify release source checkouts as tag refs
rwgk 6c3de41
ci: enforce SCM metadata rules for each bindings release role
rwgk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,93 @@ | ||
| <!-- | ||
| SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| SPDX-License-Identifier: Apache-2.0 | ||
| --> | ||
|
|
||
| # Releasing CUDA bindings | ||
|
|
||
| ## Choose the release scope and source | ||
|
|
||
| Develop the current and maintenance CUDA major lines together on `main`, in | ||
| the two package roots listed in [`ci/versions.yml`](../ci/versions.yml). | ||
| Release each line independently. A bindings release also needs its matching | ||
| `cuda-python` metapackage release; it does not require a release of the other | ||
| CUDA major, `cuda-core`, or `cuda-pathfinder`. | ||
|
|
||
| Major-line maintenance may include selected API, Python, platform, or other | ||
| compatibility changes. Decide those changes explicitly and describe them in | ||
| the release notes. Once a patch release is frozen, admit only its approved | ||
| fixes and release prerequisites. Do not infer patch-release scope solely | ||
| from the registry's `maintenance` role. | ||
|
|
||
| For an ordinary release, select a tested commit on `main`. If stabilization | ||
| must continue while development advances, create a short release branch such | ||
| as `release/bindings-12.9.10` from the chosen commit. For an emergency after a | ||
| release, start from its exact tag, provided that tag contains the new package | ||
| layout. For the first release after this transition, use a validated commit | ||
| containing both roots; do not resume development on the historical `12.9.x` | ||
| branch. Keep the package layout and release tooling together on the branch. | ||
|
|
||
| Record the source commit, intended tag, selected package root, release owner, | ||
| and accepted changes in the release checklist. A branch is a temporary scope | ||
| boundary, not a separate long-term home for shared infrastructure. | ||
|
|
||
| ## Move fixes between integration and release branches | ||
|
|
||
| Prefer a reviewed fix on `main`, then backport it to the selected release | ||
| branch. Run **CI: Backport a merged PR to a release branch** from the Actions | ||
| tab on `main`, supplying the merged PR number and one existing target branch. | ||
| The workflow opens a PR; it does not merge or release the result. Inspect the | ||
| diff, request CI using the normal PR approval procedure, and review it before | ||
| merging. Workflow-file changes require a manual backport with appropriate | ||
| credentials. Conflicts and toolkit-specific generated changes require an | ||
| explicitly reviewed adaptation. | ||
|
|
||
| If urgency requires a fix on the release branch first, link a follow-up PR | ||
| returning the fix to `main` before closing the release checklist. In either | ||
| direction, assess both bindings roots and record why a change applies to one | ||
| or both. Regenerate affected generated files from the intended toolkit and | ||
| cybind inputs instead of blindly copying generated output between majors. | ||
| See the [shared maintenance policy](../ci/README.md#maintaining-both-bindings-roots). | ||
|
|
||
| ## Validate and publish the selected line | ||
|
|
||
| 1. Finalize the bindings and metapackage release notes, dependency constraints, | ||
| and selected toolkit pin in the release source tree. The registry and | ||
| packaging metadata must agree. Run the CI-tool suite and pre-commit checks. | ||
| 2. Test the candidate through a reviewed PR or manual CI dispatch on its | ||
| branch. Normal development CI includes dependent packages and may cover | ||
| both majors. Resolve failures in affected code before selecting the tag. | ||
| 3. Create the approved immutable `vX.Y.Z` tag at the selected source commit. | ||
| The tag-triggered CI selects that line's bindings and metapackage, validates | ||
| them with the published Pathfinder dependency, and builds release artifacts. | ||
| The tag does not have to be on `main`. Wait for this exact tag's CI to pass. | ||
| 4. Run **CI: Release** with `release-action=dry-run`, the tag, and | ||
| `component=cuda-bindings`; repeat for `cuda-python`. Leave `run-id` blank | ||
| to exercise automatic lookup, and leave `dry-run-docs-branch` blank to avoid | ||
| deploying docs. The workflow verifies a successful tag-triggered CI run | ||
| with the exact source SHA, validates artifacts, and builds docs. | ||
| 5. Review the dry runs, then separately approve and run `full-release` for | ||
| each component under the team's release procedure. A successful candidate | ||
| rehearsal or ordinary branch CI is not a substitute for exact-tag CI. | ||
| 6. Finish post-release QA and announcements, return every applicable fix to | ||
| `main`, and close the stabilization effort. Retain immutable tags and the | ||
| branch history needed for diagnosis. | ||
|
|
||
| The workflow revision used for a release is its **control revision**; the | ||
| tagged commit is its **source revision**. Record both and the artifact CI run | ||
| ID. Release routing uses the package layout and toolkit settings in | ||
| `ci/versions.yml` at the release tag. The current tooling requires a valid | ||
| schema-2 registry in that source, for both dry runs and publication, including | ||
| Core and Pathfinder releases. Tags from before this registry was introduced | ||
| require compatible historical tooling; the current workflow configuration | ||
| cannot supply missing tagged configuration. Published releases remain unchanged. | ||
|
|
||
| In **CI: Release**, normal releases require each component's exact-version, | ||
| nonempty release notes in the tagged source. The `cuda-python` metapackage requires its own notes. | ||
| Notes from the workflow control revision or a different component cannot fill | ||
| a gap. Preserve the existing exemption for `.postN` releases, which do not | ||
| require new notes. | ||
|
|
||
| Local synthetic tags used in publication-incapable rehearsals must remain local; | ||
| they do not authorize publishing a package, creating a remote tag, or moving | ||
| an existing tag. |
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.