Skip to content

Load generic kernels from a single native device image - #1567

Draft
tpn wants to merge 26 commits into
NVIDIA:mainfrom
tpn:codex/coop-interop-o07
Draft

tpn wants to merge 26 commits into
NVIDIA:mainfrom
tpn:codex/coop-interop-o07

Conversation

@tpn

@tpn tpn commented Oct 20, 2026

Copy link
Copy Markdown

Generic kernels previously required PTX bundle merging, so a materialized native library call could not use the ordinary generated module loader. This lets generic modules load a single embedded CUBIN while preserving exact entry identity and compiled launch facts.

The loader selects the host image containing the module code, keeps all functions and statics in one loaded device module, and rejects multiple native images or mixed payloads that cannot be linked safely. All-PTX programs keep their existing merge path. The guide states the defining/instantiating host-image requirement, Linux procfs access, and missing-entry behavior.

Validation covers actual generic CUBIN execution, compiled geometry/scratch checks, PTX controls and a retained two-native-image rejection. The coordinated native-provider fixture passes 480 cases and memcheck after input-tracking integration. Separate retention probes cover ordinary, thin/fat host LTO, concurrent builds and a single cdylib; marked-helper LTO requires existing #1496, which was tested separately and is not duplicated here. Strict host/backend checks and the book pass.

Depends on #1566 and its coordinated foundations. This draft is cumulative against main; review the generic-loader delta. Checked collective safety and generic host-body retention remain separate owning changes.

tpn added 26 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>
@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