Skip to content

Retain generic kernel roots without host function pointers - #1570

Draft
tpn wants to merge 28 commits into
NVIDIA:mainfrom
tpn:codex/coop-interop-generic-fndef
Draft

tpn wants to merge 28 commits into
NVIDIA:mainfrom
tpn:codex/coop-interop-generic-fndef

Conversation

@tpn

@tpn tpn commented Oct 20, 2026

Copy link
Copy Markdown

Looking up a generic kernel specialization currently takes a host function pointer to its entry. That pulls device-only callees into host linkage and can produce undefined backend-guard symbols before the kernel can run.

Retain the concrete function-item type through the existing type-hash helper and recover the device kernel from that type during collection. Kernel naming, borrowed-closure support and backend guards stay intact.

Builds on #1567. The focused change is five files covering host naming, macro generation, root collection, documentation and a host-link regression.

Validation: host naming/link tests in debug and release; compiler and macro tests; ordinary, thin-LTO and fat-LTO native builds; generic kernels and borrowed closures; the combined checked-storage fixture through ordinary Cargo, native loading and all three Compute Sanitizer tools.

Draft while the coordinated Rust cuda.coop foundation is under review.

tpn added 28 commits October 19, 2026 21:30
Use Cargo target names for standalone emit-ltoir artifacts. Bind the
compiler and reader to the same intermediate directory when invoked
from a Cargo workspace member.

Signed-off-by: Trent Nelson <trent@trent.me>
Accept ordered external LTO files when materializing embedded cubins.
Include their content in the codegen fingerprint and verify owned bytes
before linking through the existing finalizer. Preserve inputs that
overlap generated output paths and diagnose unresolved device symbols.

Add a standalone CUDA FFI example and a native regression script.

Signed-off-by: Trent Nelson <trent@trent.me>
Reuse existing example dependency pins and classify external LTO as
an FFI fixture. Run its linking regression in native sweeps and verify
relocatable debug output in the existing full-debug route.

Signed-off-by: Trent Nelson <trent@trent.me>
Preserve exact geometry and fixed dynamic shared-memory requirements
through artifact loading so preparation can select and validate the
compiled allocation. Keep artifact writers and readers on one in-tree
implementation while preserving legacy bundles without launch facts.

Signed-off-by: Trent Nelson <trent@trent.me>
Combine the reviewed compiler prerequisites for native library calls.
Keep the external LTO fixture on the shared in-tree artifact implementation.

Signed-off-by: Trent Nelson <trent@trent.me>
Use the reviewed Cargo target and output-directory correction in the
combined compiler prerequisite tree.

Signed-off-by: Trent Nelson <trent@trent.me>
Resolve concrete registration functions and scalar argument types during
device compilation, then invoke the native provider and link its owned
LTO output through the ordinary artifact finalizer.

Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Carry the convergence marker through private dependency metadata and
emit it on each marked LLVM declaration before native optimization.
Deduplicate repeated extern symbols while rejecting incompatible
signatures and convergence requirements.

Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
Signed-off-by: Trent Nelson <trent@trent.me>
@copy-pr-bot

copy-pr-bot Bot commented Oct 20, 2026

Copy link
Copy Markdown

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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant