Skip to content

Add native library calls and provider-owned input tracking - #1566

Draft
tpn wants to merge 20 commits into
NVIDIA:mainfrom
tpn:codex/coop-interop-o03
Draft

tpn wants to merge 20 commits into
NVIDIA:mainfrom
tpn:codex/coop-interop-o03

Conversation

@tpn

@tpn tpn commented Oct 20, 2026 •

Copy link
Copy Markdown

Rust libraries need to specialize native device code for the concrete types and extents used by a kernel. This adds an unsafe native-library marker: ordinary cargo oxide --materialize-cubin discovers calls through dependency helpers, obtains typed native LTO-IR from the library provider, and carries exact block and scratch requirements into launch preparation.

The provider owns operation semantics, native inputs and ABI declarations. Oxide validates the response and links owned bytes; the registration macro records provider/header/environment dependencies before Cargo writes dep-info. The executable example runs one and four items per thread without consumer-written linker arguments. The marker leaves participation, pointer validity and scratch reuse to the unsafe caller.

Validation covers protocol and ABI errors, actual narrow signed/unsigned calls, cross-crate helper discovery, conflicting geometry and shared-memory views, native execution and sanitizers. The native-library example passes 1,920 values; Cargo regression checks verify header/provider/environment changes and warm reuse. Strict clippy, rustdoc and the book pass. CUDA 13.3 debug combinations and Cargo timestamp freshness limits are documented.

This draft contains the coordinated foundations in #1559, #1560, #1562, #1563 and #1564. Review the native-library delta. The CCCL provider adapter is a separate coordinated draft; safe collective APIs and generic native module loading are separate changes.

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