Repository navigation
Conversation
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
requested review from
kkraus14,
nihalpasham and
rparolin
as code owners
October 22, 2026 22:49
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) ```  --- ### 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  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>
This was referenced Oct 26, 2026
Open
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Collaborator
Author
|
/ok to test 29b9716 |
Collaborator
Author
|
Pushed the combined debugging candidates at
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. |
7 tasks done
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Signed-off-by: Melih Elibol <1884921+elibol@users.noreply.github.com>
Collaborator
Author
|
/ok to test 7336cac |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 targetingrelease/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 removingcuda_core::simt; #1604 (b811b7067) for shared async operations and removingcuda_async::simt, including the restored caller-managedunsafe 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:
933e2216f): generated-constant fallback origins, with the known tileiras 13.4.92 backend loss explicitly reported by CI.899e14b9f): wrapper/assumption signature origins and Line/Full assembly checks.64f0ebf4a): short-circuit/folded constants, corrected const-bool binding scopes, exact serialized caller-chain regressions.a844d56ba): consistent compilation modes/runtime overrides and v0.5.0 migration documentation.a28eee3b4): NVVM debug metadata merge behavior.bec608b8d): SIMT inline scopes in line-info builds.Validation at
29b9716f9on RTX 5090, driver 610.43.02, CUDA 13.3.36:scripts/run_all.shpass 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.function_item_call --arch sm_120 --lineinfoGPU example passes, validating the source conflict resolution against the shared host API and current stable pin.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_derefGPU 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.