Skip to content

One host runtime, step 2: cuda-oxide adopts the root cuda-core types and cuda_core::simt goes away #1460

Open

Description

@elibol

Remove the duplicate cuda_core::simt host runtime so Tile and SIMT code share allocation, context, stream, launch, and resource types. This builds on #1459 and coordinates with the async migration in #1461.

Requirements

Implementation

  • Integrate shared typed storage and per-operation trait bounds, including PinnedHostBuffer.
  • Migrate context, stream, event, module, and function users to the shared API defined by cuda-core: distinguish CUDA devices and contexts in the shared host API #1504.
  • Share LaunchConfig and launch_kernel* helpers while preserving launch modes, validation, and resource checks.
  • Specify the shared launch-query API signatures and implement them in independently reviewable changes.
  • Reconcile simt::vmm, peer, memory, and embedded with shared modules.
  • Implement completion-safe cleanup without synchronization on drop.
  • Migrate cuda-oxide crates, examples, generated-project templates, and documentation. Retire or replace check-host-api-paths.sh when its SIMT-specific spelling is obsolete.
  • Move simt_* tests into shared suites and delete cuda-core/src/simt/ after consumers are migrated.

Acceptance

Both programming models use the shared types, and the temporary SIMT module is removed. Validate allocation identity and zero-copy sharing between a Tile tensor and a SIMT launch argument, including view offsets, context compatibility, ordering, and completion lifetimes. Cover positive and negative trait bounds and boolean validity. Document breaking API changes and their migration path.

Related: #1461 (async runtime), #1503 (element representation), #1504 (device/context model), #1505 (public namespaces), #1506 (bool and the safe casts).

Activity

  1. added
    trackingUmbrella tracking issue
    cuda-oxideSIMT programming model: rustc backend, cargo oxide, cuda-device, cuda-host, book
    runtimeShared runtime crates: cuda-bindings, cuda-core, cuda-core-derive, cuda-async; Tile and SIMT co-own
    on Oct 8, 2026
  2. nihalpasham commented on Oct 9, 2026

    @nihalpasham
    Collaborator

    @elibol, I agree that consolidation makes sense here, but my preference is we do this in stages. I need more time to work through it, as there are other items higher on the priority list (Tile-SIMT interop, cute-rs, Windows support etc.), so let’s take 0.5.0 off the table for this migration.

    Quick question: is any of this currently blocking cutile-rs? If there’s a specific part holding things up, we can discuss that separately. Otherwise, I’d like to keep this on the roadmap and work out where it fits alongside the other priorities.

    Some pieces look straightforward, and others need a little more thought:

    • Basic LaunchConfig: Both versions contain the same fields, so sharing that type looks straightforward. We should preserve the existing launch checks and supported launch modes around it.
    • DType and DeviceCopy: Making DType require DeviceCopy looks worth exploring. We need to reconcile their safety requirements—for example, DType currently supports bool, while DeviceCopy deliberately excludes it.
    • Contexts and streams: The cleanup behavior differs today: the root stream implementation explicitly waits for pending GPU work when dropped, while SIMT calls stream destruction directly. We should agree on that behavior before switching existing users over.

    We can use this issue to work toward that design, then agree on the individual steps and timing before replacing or removing the existing SIMT APIs.

  3. added this to the cuda oxide v0.4.0 milestone on Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

cuda-oxideSIMT programming model: rustc backend, cargo oxide, cuda-device, cuda-host, bookruntimeShared runtime crates: cuda-bindings, cuda-core, cuda-core-derive, cuda-async; Tile and SIMT co-owntrackingUmbrella tracking issue

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions