Skip to content

cuda.core: directory-aware C++ build rule and drop the dead top-level copy from the merged wheel - #2799

Open
Andy-Jost wants to merge 1 commit into
NVIDIA:mainfrom
Andy-Jost:ajost/rt-phase1-build-and-wheel-fix
Open

cuda.core: directory-aware C++ build rule and drop the dead top-level copy from the merged wheel#2799
Andy-Jost wants to merge 1 commit into
NVIDIA:mainfrom
Andy-Jost:ajost/rt-phase1-build-and-wheel-fix

Conversation

@Andy-Jost

@Andy-Jost Andy-Jost commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Description

Groundwork for splitting cuda.core._resource_handles into a directory of C++ sources, plus a fix to the merged-wheel layout. No behavior changes.

Build backend. build_hooks.py now compiles every .cpp under cuda/core/_cpp/<stem>/ into the extension for _<stem>.pyx, keeping the legacy single file _cpp/<stem>.cpp as the fallback (tensor_map is unchanged). With no such directory in the tree yet, the sources it produces are exactly today's, so this part is inert on its own. The cuda.core._cpp package-data globs become recursive so headers in nested directories ship, and .gitignore stops hiding .cpp files under cuda/core/_cpp/ so new sources are visible to git.

Merged wheel. ci/tools/merge_cuda_core_wheels.py stops keeping a third, top-level copy of _resource_handles (extension, .pxd, .pyi) and the top-level _cpp/ and _include/ header directories in the merged cu12+cu13 wheel. cuda/core/__init__.py rewrites the package's __path__, __file__, and __spec__ to the versioned subpackage before any import reaches them, so that copy was never used at runtime (about 308 KB uncompressed in the 1.2.0 wheel); the comment defending it referred to an import removed in #1463. The C++ headers advertised in 1.1.1 (#2236) are still shipped under cu12/ and cu13/ and are reached through the package's import path, which resolves to the active one. A new step in build-wheel.yml asserts that the merged wheel's top level holds exactly __init__.py, _version.py, and the two versioned trees.

Tests. Three small tests of the source rule in test_build_hooks.py (directory form, legacy single file, no C++, empty directory).

Checklist

  • New or existing tests cover these changes.
  • The documentation is up to date with these changes (no user-facing behavior changes; nothing to document).

🤖 Generated with Claude Code

@github-actions github-actions Bot added CI/CD CI/CD infrastructure cuda.core Everything related to the cuda.core module labels Sep 10, 2026
@Andy-Jost Andy-Jost self-assigned this Sep 10, 2026
@Andy-Jost Andy-Jost added this to the cuda.core 1.3.0 milestone Sep 10, 2026
… copy from the merged wheel

build_hooks.py maps a Cython module to its C++ by name. It now also accepts
a directory: every .cpp under cuda/core/_cpp/<stem>/ compiles into the one
extension for _<stem>.pyx, with the legacy single file _cpp/<stem>.cpp kept
as the fallback (tensor_map is unchanged). With no such directory in the
tree yet, the sources are exactly today's, so this part is inert on its own.
The cuda.core._cpp package-data globs become recursive so headers in nested
directories ship, and .gitignore stops ignoring .cpp files under
cuda/core/_cpp/ so new sources are visible to git.

ci/tools/merge_cuda_core_wheels.py stops retaining a third, top-level copy
of _resource_handles and the top-level _cpp/ and _include/ headers in the
merged cu12+cu13 wheel. cuda/core/__init__.py rewrites __path__ to the
versioned subpackage before any import reaches them, so that copy (about
308 KB uncompressed in the 1.2.0 wheel) was never imported; the comment
defending it referred to an import removed in NVIDIA#1463. A step in
build-wheel.yml now asserts that the merged wheel's top level holds only
__init__.py, _version.py and the two versioned trees.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Andy-Jost
Andy-Jost force-pushed the ajost/rt-phase1-build-and-wheel-fix branch from 2ae8604 to cb5784e Compare September 10, 2026 02:35
@github-actions

Copy link
Copy Markdown

@Andy-Jost Andy-Jost added the P0 High priority - Must do! label Sep 10, 2026
@Andy-Jost
Andy-Jost requested review from leofang, mdboom and rwgk and removed request for mdboom September 10, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD CI/CD infrastructure cuda.core Everything related to the cuda.core module P0 High priority - Must do!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant