Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/gpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ concurrency:

env:
PINNED_TOOLCHAIN: nightly-2026-08-28
RECONVERGE_VERSION: "0.6.0"
RECONVERGE_VERSION: "0.7.0"

jobs:
# Prune and compile on a plain runner, exactly as `stage` is designed to be
Expand All @@ -112,7 +112,7 @@ jobs:
with:
persist-credentials: false
repository: NVlabs/cuda-oxide
ref: 26754ae52c26c097dc1c465a1e42c4c5d05a3d40
ref: b0f961df3af0ff140b3b006fa2b6750b71f43f62
path: cuda-oxide
- name: Install pinned toolchain
working-directory: launchbound
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ concurrency:
# The lockstep pin set. A pin bump updates these values (and
# rust-toolchain.toml) in its own commit.
env:
CUDA_OXIDE_PIN: 26754ae52c26c097dc1c465a1e42c4c5d05a3d40
CUDA_OXIDE_PIN: b0f961df3af0ff140b3b006fa2b6750b71f43f62
CUDA_OXIDE_REPO: NVlabs/cuda-oxide
RECONVERGE_PIN: v0.6.0
RECONVERGE_PIN: v0.7.0
RECONVERGE_REPO: vyncint/reconverge

jobs:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/prune.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ concurrency:
# pins.yml issue body lists every site.
env:
PINNED_TOOLCHAIN: nightly-2026-08-28
RECONVERGE_VERSION: "0.6.0"
RECONVERGE_VERSION: "0.7.0"

jobs:
gate:
Expand All @@ -40,7 +40,7 @@ jobs:
with:
persist-credentials: false
repository: NVlabs/cuda-oxide
ref: 26754ae52c26c097dc1c465a1e42c4c5d05a3d40
ref: b0f961df3af0ff140b3b006fa2b6750b71f43f62
path: cuda-oxide
- name: Install pinned toolchain
working-directory: launchbound
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,26 @@ change measured timings are marked `bench:`.

## [Unreleased]

### Changed

- **The lockstep pin set moves: cuda-oxide `b0f961df`, reconverge `0.7.0`,
nightly unchanged** (#70). Its own commit across every site
`scripts/check-pins.sh` lists, because the policy is "every site or not at
all" and 2.0.0 did four of six.

reconverge 0.7.0 is the release that matters here rather than a routine
bump. Before it, a cluster- or grid-wide barrier under a guard that is only
*block*-uniform produced no findings at all — so the gate this product is
built on could not see that class, and 2.2.1 shipped with a reconverge that
could not.

Verified at the new set rather than assumed: `just gate` passes all three
gate tests — the most important in this repository — and `just prune` over
the whole corpus returns **the same verdicts**, including `reduce-flip`'s
3 clean / 8 refused, which is the known-flip split the README quotes. The
new analyzer changes what it can see and does not change what this corpus
is told.

### Added

- **A dispatchable workflow that re-runs the CUDA path.** Nothing automated
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ The `pins.yml` workflow reports upstream movement by opening an issue; it
never bumps anything. It runs every Monday, and reports a toolchain move as
its own line — a channel change means reconverge must be rebuilt, which
commit churn does not. Current pins: nightly-2026-08-28,
cuda-oxide 26754ae5, reconverge 0.6.0 (installed from crates.io).
cuda-oxide b0f961df, reconverge 0.7.0 (installed from crates.io).

## 10. License

Expand Down
4 changes: 2 additions & 2 deletions action/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
- uses: actions/checkout@v4
with:
repository: NVlabs/cuda-oxide
ref: 26754ae52c26c097dc1c465a1e42c4c5d05a3d40
ref: b0f961df3af0ff140b3b006fa2b6750b71f43f62
path: cuda-oxide

- name: Safety gate
Expand Down Expand Up @@ -63,7 +63,7 @@ the gate specializes per candidate.
| `cc` | — | target compute capability, e.g. `"8.6"` (required; verdicts do not transfer across parts) |
| `fail-on` | `tool-error` | `never`, `refused`, or `tool-error` |
| `version` | `latest` | launchbound-cli release to install |
| `reconverge-version` | `0.6.0` | reconverge release from crates.io — moves in lockstep with `toolchain` |
| `reconverge-version` | `0.7.0` | reconverge release from crates.io — moves in lockstep with `toolchain` |
| `toolchain` | `nightly-2026-08-28` | the nightly that built that reconverge |
| `summary` | `"true"` | write the verdict table to the job summary |

Expand Down
2 changes: 1 addition & 1 deletion action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ inputs:
reconverge-driver). Must be built by the toolchain below — the pins
move together.
required: false
default: "0.6.0"
default: "0.7.0"
toolchain:
description: >-
The pinned nightly that matches reconverge-version; the pair moves
Expand Down
2 changes: 1 addition & 1 deletion corpus/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@ Every kernel is a **standalone, device-only lib crate**:

```bash
git clone https://github.com/NVlabs/cuda-oxide ../cuda-oxide # sibling of this repo
git -C ../cuda-oxide checkout 26754ae5 # the pinned commit
git -C ../cuda-oxide checkout b0f961df # the pinned commit
```
2 changes: 1 addition & 1 deletion crates/launchbound-build/src/compile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ fn is_missing_subcommand(stderr: &str) -> bool {
/// asserts this constant against `rust-toolchain.toml` and the workflows,
/// because drift between recorded pins is the failure this repository keeps
/// hitting.
pub const CUDA_OXIDE_PIN: &str = "26754ae52c26c097dc1c465a1e42c4c5d05a3d40";
pub const CUDA_OXIDE_PIN: &str = "b0f961df3af0ff140b3b006fa2b6750b71f43f62";

/// What to say when `cargo oxide` is not installed.
fn missing_oxide_message() -> String {
Expand Down
2 changes: 1 addition & 1 deletion docs/LIMITATIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set, and the corpus decided identically ([research-baseline](research-baseline.m

## The gate inherits reconverge's limits, wholesale

A clean gate is **not a proof of correctness**. `reconverge` (v0.6.0) is
A clean gate is **not a proof of correctness**. `reconverge` (v0.7.0) is
summary-based and interprocedural, handles reducible control flow only,
cannot evaluate non-literal masks, and puts data races entirely out of
scope. Its own documentation is the authority; launchbound adds no analysis
Expand Down
2 changes: 1 addition & 1 deletion docs/research-baseline.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Measured 2026-08-20.
| tier-1 guest | Apple `container` 1.2.0, **native arm64** Ubuntu 24.04 (no Docker, no Rosetta — operator requirement), CUDA toolkit 13.2 (sbsa), LLVM 21.1.8, container `cuda-oxide-dev` |
| tier-2 box | AWS `g5.xlarge` spot @ **$0.364/hr**, us-east-2c, **NVIDIA A10G** (`sm_86`, cc 8.6), driver 595.71.05, CUDA 13.2 (V13.2.51), LLVM 21.1.8 — chosen over the T4 by the operator; barely above T4 spot ($0.335/hr) |
| pinned toolchain | `nightly-2026-04-03` (`rustc 1.96.0-nightly (55e86c996 2026-04-02)`) |
| reconverge | `cargo-reconverge 0.1.11` (built at `~/Projects/reconverge/target/release`) — **the version these measurements were taken with**. The gate has since moved to 0.3.0, 0.4.0, 0.5.0 and (in 2.2.0) 0.6.0; each move was verified to admit the identical set — see the two comparison sections below. This row records the conditions of *these* measurements and is deliberately not updated. |
| reconverge | `cargo-reconverge 0.1.11` (built at `~/Projects/reconverge/target/release`) — **the version these measurements were taken with**. The gate has since moved to 0.3.0, 0.4.0, 0.5.0, (in 2.2.0) 0.6.0 and (in 2.3.0) 0.7.0; each move was verified to admit the identical set — see the two comparison sections below. This row records the conditions of *these* measurements and is deliberately not updated. |
| cuda-oxide | checkout `50d07314eb8b7d5ec821ba02b0048a753c20dd4e` — the tree synced to the box (the box AMI's own stale clone reports `e28248c1`, but `./gpu sync` replaces the working tree and excludes `.git`, so the synced tree is what compiled) |
| subject kernels | `s0-reduce` (device-only lib crate, dep `cuda-device` only, containing the README's known-flip reduction); cuda-oxide examples `vecadd` (small) and `tiled_gemm` (large) |
| evidence logs | `~/Projects/cuda-oxide/.gpu-evidence/20260820T{071248,071807,071959}Z.log` |
Expand Down
4 changes: 2 additions & 2 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
#
# Current lockstep set:
# nightly nightly-2026-08-28
# cuda-oxide 26754ae52c26c097dc1c465a1e42c4c5d05a3d40
# reconverge v0.6.0
# cuda-oxide b0f961df3af0ff140b3b006fa2b6750b71f43f62
# reconverge v0.7.0
[toolchain]
channel = "nightly-2026-08-28"
components = ["rustfmt", "clippy"]
Loading