Skip to content

release(v0.5.0): integrate shared host runtime and source-location fixes - #1613

Draft
elibol wants to merge 66 commits into
NVIDIA:release/v0.5.xfrom
elibol:release/v0.5.0-host-debug-integration
Draft

elibol wants to merge 66 commits into
NVIDIA:release/v0.5.xfrom
elibol:release/v0.5.0-host-debug-integration

Conversation

@elibol

@elibol elibol commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Draft: release integration remains on hold while the existing launch-overhead follow-up is assessed.

Integrate the shared host runtime and debugging candidates for v0.5.0 into release/v0.5.x. This branch includes current main (9df9e7cef) and enables the existing CI workflows for PRs targeting release/v*. Individual source PRs retain their separate review flow; inclusion here is for combined validation, not a claim that they are accepted.

Host stack: #1516 (93dd50704) for DeviceCopy/DType and reinterpretation contracts; #1603 (47042a8fa) for shared contexts/streams/allocations and removing cuda_core::simt; #1604 (b811b7067) for shared async operations and removing cuda_async::simt, including the restored caller-managed unsafe async_on() lifetimes and read-permission fixes. Current main contains the v0.5.0 version baseline and #1602's array/reduction/host-check source-origin fixes.

Debugging candidates integrated in this update:

Validation at 29b9716f9 on RTX 5090, driver 610.43.02, CUDA 13.3.36:

  • All 35 combined debug/source-location/runtime-mode tests pass, including assembler checks, GPU execution and live CUDA-GDB.
  • The complete CPU and GPU stages of scripts/run_all.sh pass with serial test execution. After reclaiming build artifacts from this task, the remaining stages pass: 27 examples, one expected PDL skip (requires 13.4), and all eight benchmark smoke tests. The initial monolithic run was interrupted by disk exhaustion during examples; it is not reported as a single successful invocation.
  • Combined importer/exporter suites pass (1,214 importer tests plus 168 exporter/unit integration tests and the active doctest).
  • The SIMT function_item_call --arch sm_120 --lineinfo GPU example passes, validating the source conflict resolution against the shared host API and current stable pin.
  • Formatting and diff checks pass. Those earlier CI runs completed; fresh CI is running for the update below.

Update at 7336cac47: integrated the #1385 test adjustment. Exact frontend/bytecode origins, surviving Rust locations and successful assembly remain required. Only tileiras 13.4.92's reproduced helper-location/inline-scope loss is reported as a warning; all other versions, including 13.5, retain full checks. The combined branch passes 14 CPU debug tests plus the Line/Full nested-helper assembler check with 13.3 and 13.4.92. Formatting/diff checks pass; the merge was self-reviewed. Fresh CI is running.

CodeQL alert #25 was triaged as used in tests: the intentional null dereference belongs to the explicitly selected null_deref GPU crash fixture already present on main. The fixture and CodeQL scanning are retained; the previous failed CodeQL check now passes.

Remaining scope: the actual tileiras 13.4.92 debug-information loss is not fixed here, and CTK 13.5 has not been validated. Assertion SIGTRAP/coredump attribution under #1379 remains uncovered. #1476 / NVIDIA/cuda-gdb#29 is deferred beyond v0.5.0 because it depends on an unreleased debugger change. Every v0.5.0 feature must work with CTK 13.5 or earlier. The release tracker #1606 now records a reminder, after accepted fixes land in main and release/v0.5.x, to ask the internal model for CTK 13.5 profiling/debugging tests.

Benchmark smoke testing temporarily corrects the existing runner argument to --features smoke-test (separately tracked in #1634), then restores it. Serial execution avoids the previously documented warmup-cache ordering dependency.

Tracked in #1606; related: #1460, #1461, #1475, #1506. Keep this PR draft until the host-runtime hold and applicable release checks/reviews are resolved.

Arthur031221 and others added 27 commits October 4, 2026 04:44
Use captured module spans for source locations and the current function
definition for generated types, arrays and wrapper calls. Add regressions
using the assertion kernel from NVIDIA#1379 and a helper in another file.

Co-authored-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Arthur031221 <levi74108520963@gmail.com>
Signed-off-by: Melih Elibol <elibol@users.noreply.github.com>
DeviceBuffer::cast_elem, DeviceBuffer::cast_chunks, and Tensor::reinterpret
reinterpreted device bytes as any element type of the right size and
alignment, which let a u8 buffer become a DeviceBuffer<bool> or Tensor<bool>
holding values other than 0 and 1 (NVIDIA#1506). The casts now require
bytemuck::AnyBitPattern of their target, so bool is rejected at compile time,
and bool implements DeviceCopy: a typed buffer holds valid values by
construction, so bool buffers can be allocated, filled, launched, and read
back like any other element type. cuda-core re-exports bytemuck, implements
Pod for the DType newtypes, and enables half's bytemuck feature for f16 and
bf16.

The atomic wrappers in cuda-device are not Copy, so they cannot be
AnyBitPattern. DeviceBuffer gains wrap_elem and peel_elem, bounded on
bytemuck::TransparentWrapper, to view a scalar buffer as its atomic wrapper
and back. cuda-device implements TransparentWrapper for its atomic types and
Pod for its vector types, and the examples that cast into atomics use the new
methods. Every example lock gains the bytemuck dependency of cuda-device.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…pression span

Short-circuit boolean operations (`a && b`, `a || b`) generate deciding
constants when the left-hand operand decides the outcome. Previously,
`compile_bool_constant` created constants from synthesized `bool` type
spans, resolving to fallback module-header locations.

Pass the logical expression's span through `compile_bool_constant` and the
shared constant builder (`compile_constant_from_exact_bounds`), ensuring
the resulting constant operation receives the exact expression line while
preserving inlined helper scopes and call chains.

Add regression test in `debug_info.rs` verifying source line attribution
and inline caller provenance for both direct and inlined expressions.

Part of NVIDIA#1475.

Signed-off-by: GiGiKoneti <gigikoneti@gmail.com>
Signed-off-by: Trent Nelson <trent@trent.me>
…nMode

`tileiras` accepts `--device-debug` only at optimization level 0, but
`CompileOptions` kept the level and the debug flag as independent fields.
Debug builds default to full debug, so adding only `.opt_level(3)` produced
`--opt-level 3 --device-debug`, which `tileiras` rejects at JIT time.

Replace `opt_level`, `device_debug`, and `lineinfo` with
`codegen: CodegenMode`, where `Debug` owns level 0 and
`Optimized { level, lineinfo }` covers the rest. Every value now maps to
flags `tileiras` accepts. `debug_info()` and `opt_level()` select a mode,
and the last call wins. The level-0 default rule in
`TileirasOptions::from_compile_options` is gone, and the frontend reads the
same mode to decide check hoisting.

Remove the `device_debug(bool)` and `lineinfo(bool)` setters, which
`debug_info()` covers. The cache key and entry header bytes are unchanged
for every mode; a test pins them against the previous encoding.

Signed-off-by: almightychang (Sam, Joochul Chang) <almightychang@icloud.com>
Nothing could switch an already-built application to a debug or sanitizer
build without changing its code. Add three process-wide variables, read
once per process:

- CUTILE_JIT_DEBUG=none|line|full acts like `debug_info()`
- CUTILE_JIT_OPT_LEVEL=0|1|2|3 acts like `opt_level()`
- CUTILE_JIT_SANITIZE=memcheck|none acts like `sanitize_memcheck()`

Each applies after the code's options, as if its setter were called last.
`CompileOptions::with_jit_env_overrides()` applies them once before both
compile stages, so the frontend's check placement and the `tileiras` flags
always come from the same options. Invalid values, and full debug together
with an explicit level, return a JIT error naming the variable.

This continues NVlabs/cutile-rs#237, which applied the overrides only to
the `tileiras` flags and left the frontend hoisting checks under
`CUTILE_JIT_OPTIMIZATION=debug`.

Signed-off-by: almightychang (Sam, Joochul Chang) <almightychang@icloud.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…nd SIMT

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…uncher

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Retain the source-scope map when line tables are enabled so native
debug metadata includes inline call chains without variable debug info.

Signed-off-by: Trent Nelson <trent@trent.me>
Check the file, definition line, subprogram and caller chain of the
generated constants in the assertion kernel and in a nested cross-file
helper, in Line and Full, and that the same locations are present in the
serialized bytecode. A user literal in the same kernel must keep its own
line. An opt-in test checks the cubin line table with nvdisasm and DWARF.

Signed-off-by: Arthur031221 <levi74108520963@gmail.com>
…cesses

Every override case now runs in a child process that inherits no
CUTILE_JIT_* setting and is selected by a dedicated marker variable. The
cases cover explicit none, line with an opt level, full, an invalid value,
the full/opt-level conflict, and the read-once rule.

The cache-key check compares keys reported by independent processes, each
under its own overrides, so a key that dropped the effective mode would
let two distinct modes collide. A GPU test runs the normal launcher
against one shared disk store and checks the kernel result, the check
placement, and whether stage 2 came from tileiras or the store.

Signed-off-by: almightychang (Sam, Joochul Chang) <almightychang@icloud.com>
…eBuffers

Signed-off-by: nihalpasham <nihalp@nvidia.com>
…viceBox::from_raw_parts and update docs

Signed-off-by: nihalpasham <nihalp@nvidia.com>
…NVIDIA#1602)

Preserve source locations and inline caller chains for const-generic arrays,
generated reduction bodies, and checks relocated to the host. Keep deduplicated
check origins private to the compiler and render them through the existing
diagnostic API.

Part of NVIDIA#1475. The remaining frontend items and debugger/backend fixes remain
tracked separately; this does not close the full source-location audit.

Validated with the CPU/assembler suites, source-location regressions, live
CUDA-GDB tests, GPU host-check enforcement, host/Tile semver checks, and all
25 active CI checks on 825de3e.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…NVIDIA#1602)

Preserve source locations and inline caller chains for const-generic arrays,
generated reduction bodies, and checks relocated to the host. Keep deduplicated
check origins private to the compiler and render them through the existing
diagnostic API.

Part of NVIDIA#1475. The remaining frontend items and debugger/backend fixes remain
tracked separately; this does not close the full source-location audit.

Validated with the CPU/assembler suites, source-location regressions, live
CUDA-GDB tests, GPU host-check enforcement, host/Tile semver checks, and all
25 active CI checks on 825de3e.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
(cherry picked from commit 9718b43)
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
elibol and others added 18 commits October 22, 2026 21:55
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
## Summary

Move `cuda-oxide` from a pinned daily `nightly` toolchain
(`nightly-2026-10-11`) to official **stable Rust `1.99.1`**, unifying
the entire monorepo (`cuda-core`, `cutile-rs`, and `cuda-oxide`) on
stable Rust releases:

```text
Before: cuda-oxide/rust-toolchain.toml -> channel = "nightly-2026-10-11" (daily snapshot)
After:  cuda-oxide/rust-toolchain.toml -> channel = "1.99.1"             (official stable release + RUSTC_BOOTSTRAP=1)
```

![Moving cuda-oxide to Stable Rust
1.99.1](https://raw.githubusercontent.com/nihalpasham/cuda-rust/048739dd4/cuda-oxide/cuda-oxide-book/compiler/images/dev-workflow-shift.svg)

---

### Before vs. After

- **Before (`nightly` pin):** `cuda-oxide` pinned a moving daily
`nightly` snapshot while the root host workspace and `cutile-rs` used
stable Rust. Any mid-cycle nightly bump (such as pulling in an upstream
`rustc_public` addition) forced an unscheduled compiler upgrade with
unrelated daily churn across 1,500+ files.
- **After (Stable `1.99.1` pin):** `cuda-oxide` pins official stable
Rust `1.99.1`, which has already completed Rust's 12-week nightly and
beta stabilization cycle and ships **LLVM 23 (`23.1.1`)** with an NVPTX
backend and TableGen intrinsic definitions identical to
`nightly-2026-10-11`.

### Why This Works on Official Stable Rust

1. **Stable `rustc` and Nightly `rustc` are the same binary:** Official
stable `rustc` builds do not strip out `-Z` flags (`-Z
codegen-backend=...`, `-Z mir-enable-passes=-JumpThreading`, `-Z
always-encode-mir`) or `#![feature(rustc_private)]`. They gate them
behind `RUSTC_BOOTSTRAP=1` (the environment variable `rustc` uses when
bootstrapping `core` and `std` on stable).
2. **`rustup` ships `rustc-dev` and `rustc_public` on stable releases:**
Running `rustup component add rustc-dev` on stable `1.99.1` provides
`librustc_driver.so`, `librustc_public.rlib`, and
`librustc_public_bridge.rlib` out of the box.
3. **Production precedent:** This follows the same model used by
Microsoft's `rustc_codegen_utc` and Ferrocene (building a
`CodegenBackend` against a vetted stable Rust release tag rather than
tracking daily nightlies).

### Upstreaming to `rustc_public` on the Stable Cycle

![Upstreaming to rustc_public on
Stable](https://raw.githubusercontent.com/nihalpasham/cuda-rust/048739dd4/cuda-oxide/cuda-oxide-book/compiler/images/upstream-rustc-public-flow.svg)

Because `rustc_public` only wraps data that already exists inside
`rustc_middle` and `rustc_abi`,
`crates/mir-importer/src/translator/facts.rs` acts as our quarantine
boundary when we upstream new `rustc_public` queries (such as
`rust-lang/rust#163242`):
- **Day 1:** Land the feature immediately on the current stable pin by
reading the underlying `rustc_middle` / `rustc_target` field in
`facts.rs` via `rustc_internal::internal(tcx, ...)`, while upstreaming
the `rustc_public` getter in parallel.
- **Next scheduled stable release:** Swap the temporary internal read in
`facts.rs` to the upstreamed `rustc_public` method call.

---

## Changes in This PR

- **Pin `1.99.1` across all SIMT toolchain surfaces:**
`cuda-oxide/rust-toolchain.toml`, `cargo oxide new` (`scaffold.rs`),
`.devcontainer/devcontainer.json`, `intrinsics/upstream.lock`, and the
book/README install commands.
- **Configure `RUSTC_BOOTSTRAP=1` automatically:** Set in
`cuda-oxide/.cargo/config.toml`, `cuda-oxide/Justfile`, `cargo-oxide`
(`backend.rs`, `codegen_env.rs`, `fmt.rs`, `host_cargo.rs`), and the
example CI loops so `-Z` compiler flags, `#![feature(rustc_private)]`,
`#![feature(f16)]`, and `cargo-features = ["profile-rustflags"]` work
transparently on stable `1.99.1`.
- **Adapt to `1.99.1` compiler APIs (~12 lines):**
- `cuda-host`: Use `core::intrinsics::type_id::<T>()` in `type_id_u128`.
- `mir-importer`: Query `tcx.fn_abi_of_instance` inside `facts.rs`
(`reference_param_validity`) for typed `ArgAttributes` (`NoAlias`,
`NoFree`, `pointee_size`), and match `ValueAbi::Scalar` in `types.rs`.
- `rustc-codegen-cuda`: Match `1.99.1`'s `CodegenBackend` (`init`,
`target_config`, `CompiledModule`), `ShimKind::FnPtrAddr`, and
`layout.peel_transparent_wrappers`.
- **Update `cuda-oxide-book`:** Add the toolchain stabilization,
`facts.rs` upstreaming workflow, and standalone bundle sections with
four SVG diagrams under `cuda-oxide-book/compiler/images/`.

## Validation

- **`just check` & `just book`:** `fmt-check`, `clippy` (workspace +
backend + all 258 example/model manifests), `test`, `test-cuda`,
`check-guards`, `check-intrinsics` (all 1,042 routes / 2,427 target
probes on `LLVM version 23.1.1-rust-1.99.1-stable`), `doc-check`, and
Sphinx HTML book build (`-W`) all pass.
- **SIMT examples (`scripts/smoketest.sh` on RTX 5090):** 240 / 240
pass.
- **`cute-rs-preview` examples and models:** 16 / 16 pass (all 12
`sm_120a` workloads execute and pass on RTX 5090; all 4 `sm_100a`
workloads compile to validated direct-ABI cubins via CUTLASS 4.7).

## Checklist

- [x] All commits signed off (`git commit -s`)
- [x] SPDX headers on new source files

Signed-off-by: nihalpasham <nihalp@nvidia.com>
… clean up docs (NVIDIA#1616)

## Summary

Follow-up cleanup after moving `cuda-oxide` to stable Rust `1.99.1`
(NVIDIA#1609) and landing `cute-rs-preview` (NVIDIA#1598):

```text
1. cuda-oxide/flake.lock + flake.nix   -> bump rust-overlay for Stable 1.99.1 + set RUSTC_BOOTSTRAP=1
2. cargo oxide new (scaffold.rs)       -> write .cargo/config.toml with RUSTC_BOOTSTRAP = "1"
3. check-toolchain-parity.sh           -> verify flake.lock's rust-overlay rev has the pinned manifest
4. .github/workflows/unit-tests.yml    -> drop unused apt llvm-21 install (sysroot llvm-tools provides LLVM 23)
5. CONTRIBUTING / AGENTS / README / book -> update remaining nightly wording + clean up book backticks & SVG
```

### Changes

- **Nix flake (`cuda-oxide/flake.lock`, `cuda-oxide/flake.nix`):**
- Bump `oxalica/rust-overlay` from `c1cfa7a2c8` (`2026-10-11`, two days
before `1.99.1` was published) to `5f267b7f32` (`2026-10-22`) so `nix
develop` finds `Stable 1.99.1`.
- Set `RUSTC_BOOTSTRAP = "1"` in `flake.nix` (`cargoOxideCommonArgs` and
`devShells.default.shellHook`).
- Use a deterministic per-user directory
(`${XDG_RUNTIME_DIR:-/tmp}/cuda-oxide-nvidia-driver-$(id -u)`) for
non-NixOS driver symlinks so `nix develop --command` does not leak
`/tmp/nix-nvidia-driver.XXXXXX` directories.
- **Project scaffold (`crates/cargo-oxide/src/commands/scaffold.rs`):**
- Write `.cargo/config.toml` (`[env]\nRUSTC_BOOTSTRAP = "1"\n`) in
`cargo oxide new` so plain `cargo check`, `cargo build`, and
`rust-analyzer` work out of the box in standalone projects on stable
`1.99.1`.
- **Toolchain parity guard (`scripts/check-toolchain-parity.sh`):**
- Verify via an HTTP `HEAD` check that the `oxalica/rust-overlay`
revision locked in `cuda-oxide/flake.lock` actually contains
`manifests/stable/<channel>.nix` (or `manifests/nightly/...`), and
document the `nix flake update rust-overlay` step in
`check-toolchain-parity.sh` and `compiler/rustc-public.md`.
- **CI workflow (`.github/workflows/unit-tests.yml`,
`.github/workflows/status-guard.yml`):**
- Remove the redundant `Install LLVM 21` step on `cuda-oxide-codegen`
(`LlvmToolchain::resolve` already selects the Rust sysroot's LLVM 23
`llc`/`opt` from `llvm-tools`).
- Update the `status-guard.yml` comments to match the current single
SIMT stable pin and `flake.lock` check.
- **Contributor, agent, and book docs (`CONTRIBUTING.md`, `AGENTS.md`,
`cuda-oxide/README.md`, `cuda-oxide-book/`):**
- Replace remaining "nightly toolchain" wording in `CONTRIBUTING.md`,
`AGENTS.md` (`CLAUDE.md`), `cuda-oxide/README.md`,
`getting-started/installation.md`, and `getting-started/hello-gpu.md`.
- Remove backticks from `# ` sidebar page titles, `## ` / `### ` section
headings, and prose crate/tool names across the `cute/` chapter and
`compiler/rustc-public.md`.
- Scale bar widths in
`models/qwen3_8b_cute/svg/03-rtx5090-benchmark-comparison.svg` so the
right-hand throughput labels fit inside the panel with >=45px margin.

## Validation

- `cargo test -p cargo-oxide scaffold`
- `bash cuda-oxide/scripts/check-toolchain-parity.sh`
- `just fmt-check`
- `just check-guards`
- `just book` (Sphinx HTML build with `-W`)

## Checklist

- [x] All commits signed off (`git commit -s`)

Signed-off-by: nihalpasham <nihalp@nvidia.com>
…k for 1.99.1 (NVIDIA#1617)

## Summary

Update remaining references to a pinned `nightly` toolchain across the
root `README.md`, umbrella `docs/index.md`, `cuda-oxide-book`, crate
READMEs, and comments, and fix `cargo oxide doctor` step 1 so it does
not reject stable `rustc 1.99.1`:

```text
Before: README.md / docs/index.md / crate READMEs say "Pinned nightly";
        `cargo oxide doctor` fails step 1 with "expected nightly, got: rustc 1.99.1"
After:  Docs and comments reflect the pinned stable Rust toolchain (`1.99.1`);
        `cargo oxide doctor` passes step 1 and verifies the pin in step 2
```

### Changes

- **Root & umbrella documentation (`README.md`, `docs/index.md`,
`Cargo.toml`, `rust-toolchain.toml`):**
- Update the "Picking a model" table, SIMT overview, and Contributing
section from `Pinned nightly` to `Pinned stable Rust (1.99.1), managed
by cargo oxide`.
- **`cuda-oxide` book & crate READMEs:**
- Update `appendix/building-from-source.md`,
`gpu-programming/error-handling-and-debugging.md`,
`crates/cargo-oxide/README.md`, `crates/cuda-oxide-codegen/README.md`,
and `cute-rs-preview/{cute-rs,ctm-rs,cute-layout}/README.md`.
- **`cargo oxide doctor` (`crates/cargo-oxide/src/commands/doctor.rs`,
`src/backend.rs`):**
- Drop the `version.contains("nightly")` gate in `doctor` step 1 (step
2's `doctor_report_toolchain_pin` already checks that the active
toolchain matches `rust-toolchain.toml` and has all required
components), and update the mismatch string in `backend.rs`.
- **Comments (`cuda-oxide/Cargo.toml`, `rustc-codegen-cuda/Cargo.toml`,
`cuda-host/src/lib.rs`, `cuda-oxide-codegen/src/lib.rs`, CI workflows,
and scripts):**
  - Replace leftover "pinned nightly" comments with "pinned toolchain".

## Validation

- `cargo run -p cargo-oxide -- doctor`
- `cargo test -p cargo-oxide`
- `just fmt-check`
- `just check-guards`
- `just book`

## Checklist

- [x] All commits signed off (`git commit -s`)

### Python reference environment (cute-rs examples and models)

One setup for every CuTeDSL comparison, the same three lines in each
README:

```bash
cargo oxide toolchain install cutlass
python3 -m venv cute-rs-preview/.venv
cute-rs-preview/.venv/bin/pip install -r cute-rs-preview/requirements.txt
```

- **`cute-rs-preview/requirements.txt`:** shared pins for the DSL 4.7.0
family; the per-example `requirements.txt` files include it. The
blockscale references keep their own DSL pins.
- **Runners:** one lookup order everywhere: `--python` where it exists,
`CUDA_OXIDE_CUTE_PYTHON`, the example's `.venv`, the shared
`cute-rs-preview/.venv`, then `python3`. The SM100 runners no longer
look for the fp16_gemm venv; fp16_gemm's automatic setup now creates the
shared environment.
- **Fail fast:** each `compare.py` checks for `numpy`, `torch`,
`cutlass` and `cuda` before any GPU work and prints the setup commands
instead of a traceback after the Rust build.
- **READMEs:** every example and model README names its setup inline;
the Rust-only ones name `cargo oxide toolchain install cutlass`. The
devcontainer installs `python3-venv`.

Validation: `cargo fmt --check`, `cargo clippy --all-targets -- -D
warnings` and `cargo test` for the three edited example crates; `python3
-m unittest public_reference.test_setup`; the status-guard scripts.

---------

Signed-off-by: nihalpasham <nihalp@nvidia.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
## Summary

Fixes NVIDIA#1618.
[RUSTSEC-2026-0386](https://rustsec.org/advisories/RUSTSEC-2026-0386)
rejects `tokio` before 1.53.3 on the 1.53 line. These locks move to
1.54.1:

- `cuda-oxide/crates/rustc-codegen-cuda/examples/async_mlp`
- `cuda-oxide/crates/rustc-codegen-cuda/examples/async_vecadd`
- `cuda-oxide/crates/rustc-codegen-cuda/examples/cutile_inter_kernel`
- `cutile-rs/Cargo.lock` (`cutile-rs/deny.toml` checks advisories and
does not ignore this one)
-
`cutile-rs/cutile-benchmarks/paper/app_exp1_work_distribution/bimodal_gemms_rust`

`launch_overhead_rust` still pins `tokio` 1.53.0. Its manifest patches
dependencies to a local path outside this tree, so that lock was not
updated here.

## Test plan

- [ ] `cargo-deny / deny.toml governs the example workspaces` passes
- [ ] `bash cuda-oxide/scripts/sync-example-locks.sh --check` still
reports one version per crate
- [ ] `cargo deny --manifest-path cutile-rs/Cargo.toml --locked check`
passes advisories

---------

Signed-off-by: Roman Ivanov <rivanov@nvidia.com>
… diagrams (NVIDIA#1640)

## Summary
- Lighten and desaturate the `@media (prefers-color-scheme: dark)`
filler colors across the dual-theme SVGs in `cuda-oxide-book/` so amber,
purple, teal, coral, and neutral containers render as subtle muted slate
tones instead of heavy dark brown/indigo fills.
- Lift the dark-mode canvas and inner `.k-box` pill backgrounds so
nested pills remain clearly readable against container fills.
- Replace two hardcoded `#5c5c5c` text fills in
`zipped-divide-and-slice.svg` and `host-device-tma-type-agreement.svg`
with the theme-aware `.ts` class.

#### Test plan
- [x] `just -f cuda-oxide/Justfile book` builds with zero warnings
- [x] Verified rendered dark-mode diagrams in the local book preview

Signed-off-by: nihalpasham <nihalp@nvidia.com>
Integrate the v0.5.0 main baseline and run the generated-constant cubin regression in the CPU/assembler CI suite. Preserve the distinct backend trap-attribution scope.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…odes

Integrate current main, resolve the changelog conflict, and verify exact nested helper chains and entry-instruction cubin locations in both modes. Run the assembler regression in CPU CI.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
… main

Integrate the v0.5.0 baseline and document the removed CompileOptions fields/setters, setter precedence, and runtime override behavior.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Integrate current main and its pinned stable compiler. Revalidate importer regressions, optimized cooperative-groups GPU execution, and before/after generated machine instructions.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…nance

Integrate current main. Attribute inlined boolean bindings to callee definitions instead of resolving caller coordinates in the callee module. Cover deciding false/true constants, a folded expression on a different line from its operands, and entry/function/method bindings in Line and Full modes with exact serialized inline chains.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Integrate the current main baseline and revalidate all debug exporter regressions and strict Clippy on the pinned stable compiler.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
…0.5.0

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
….5.0

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
@copy-pr-bot

copy-pr-bot Bot commented Oct 26, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@elibol

elibol commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator Author

/ok to test 29b9716

@elibol

elibol commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator Author

Pushed the combined debugging candidates at 29b9716f976ec149b1d7f3910da9d8df7c682dec and completed local validation/self-review.

  • All 35 debug/source-location/runtime-mode tests pass, including live CUDA-GDB and assembled instruction checks.
  • Full CPU and GPU stages pass. After clearing this task's completed build artifacts, the example and benchmark stages pass: 27 examples, one expected PDL skip on 13.3, and all eight benchmark smoke tests. The existing benchmark-runner argument correction was temporary and has been restored.
  • Combined SIMT importer/exporter tests pass; function_item_call --arch sm_120 --lineinfo runs successfully on the GPU.
  • Formatting/diff checks pass. Source conflict resolutions retain the shared host API, current-main compiler requirements and both assembler regressions. The original working checkout is unchanged.

Fresh CI is running. This remains draft/on hold for the host-runtime performance follow-up. The known CUDA 13.4 inline-debug regression will also affect the newly enabled assembler check here; #1379's actual trap/coredump attribution and #1476's debugger release dependency remain open. Updated tracking and per-PR evidence: #1606.

Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
@elibol

elibol commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator Author

/ok to test 7336cac

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.

7 participants