Skip to content

simt-diff — SIMT Differential Laboratory

A differential laboratory for SIMT static analyzers. It generates kernels whose convergence property is known by construction, analyzes them with reconverge, executes them on a real NVIDIA GPU, cross-checks against NVIDIA Compute Sanitizer, and classifies the agreement between those independent evidence sources.

What it is not

  • not a CUDA compiler fuzzer (CUDAsmith)
  • not a GPU application fuzzer (cuFuzz)
  • not a duplicate of cuda-oxide's own CPU-vs-GPU MIR fuzzer
  • not a profiler, not a simulator, not a fork of reconverge's analyzer

Status

stage what it delivered
0 docs/research-baseline.md — measured reconnaissance; three of the brief's assumptions overturned
1 docs/stage-1.md — one vertical slice end to end: real analyzer, real A10G
3 docs/conformance-reconverge-0.1.6.md — fourteen hand-written templates, fourteen predictions held
4 docs/stage-4.md — the mutation engine: oracles computed, not inherited
5 docs/stage-5.md — minimizer, reproducer packaging, and a regression corpus that expires
6 docs/stage-6.md — the launch matrix: where a warp_id() guard stops being safe

Not built yet: device-buffer tracing, grid and multi-dimensional launches, and the dynamic half of the launch matrix — the only remaining piece that needs a GPU.

Using it

The static half needs no GPU — reconverge builds and runs on a laptop, and every number in the Stage 4 document was produced without one.

simt-diff doctor                  # which stages this host can run
simt-diff templates               # the hand-written semantic templates
simt-diff mutate --depth 1        # the generated corpus, with oracle + prediction
simt-diff mutate --source <id>    # one generated kernel, as analyzed
simt-diff generate <template>     # write one case directory
simt-diff analyze <case-dir>      # run reconverge, record findings
simt-diff ingest <case-dir># record a GPU run performed on another host
simt-diff compare <case-dir>      # classify from whatever records exist
simt-diff conformance --mutants   # sweep the corpus: predict, analyze, classify
simt-diff minimize <case-dir>     # shrink it, keeping oracle and signature fixed
simt-diff package <case-dir>      # write a standalone reproducer with verify.sh
simt-diff corpus add <case-dir>   # record it as a regression entry
simt-diff regress                 # rebuild every entry, report analyzer or generator drift
just matrix                       # the same corpus at block 32, 64 and 128

Two scheduled workflows watch the analyzer rather than this repository: scan rebuilds reconverge from main hourly and re-runs the corpus, and scan-matrix runs the full sweep across the launch matrix weekly. A recorded observation that stops being true files itself as an issue, once per drifting commit.

corpus/ holds nine entries: five findings, each paired with the case that bounds it, plus the control that proves the CI gate exists at all. regress exits nonzero the day one of them stops being true.

cargo-reconverge is found on PATH, via $SIMT_DIFF_RECONVERGE, or with --reconverge. Exit codes: 0 ok, 1 something wants a human, 2 tool error.

The two rules that shape everything

Both were learned the expensive way and are enforced in code, not documentation:

  1. A clean GPU run never argues against a static finding. A divergent sync_threads() completes on sm_86 with the barrier provably still inside the branch, and synccheck says nothing (baseline §9.3, §9.4). A laboratory that read completion as safety would call reconverge's flagship diagnostic a false positive, on hardware, repeatably, and be wrong every time.
  2. Only a gating-tier finding can be a false positive. A warning is not an assertion. Reporting one would be reporting the tool for working as specified.

Reading a claim from this repository

Every prediction carries its provenance, because "reconverge is wrong" and "this model is wrong" are different claims and the difference is not always obvious in advance:

  • quoted — the documentation states this behaviour. A violation is about reconverge.
  • extrapolated — inferred from a documented reason. A violation is about this model first.
  • measured — undocumented, established by a run this repository recorded, with the case named. A violation is a regression.

About

Differential laboratory for SIMT static analyzers — generates kernels whose convergence property is known by construction, then checks an analyzer's answers against what its own documentation promises. No GPU required.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages