You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(BACKEND-TENSTORRENT-MISTRAL): the gate could report green having gated nothing, and the row had no issue (#670)
Review repairs pushed to the PR branch so lu-zero keeps authorship of the work
itself. Their two commits are untouched.
GATE DEFECTS.
1. A bootstrap run reported a green gate that gated nothing.
`test_mistral_paged_engine.cpp` `continue`s every prompt when
`bootstrap_only` is set, then fell through to the summary and
`REQUIRE(fail == 0)`. With every prompt skipped, `strict_exact`,
`neartie_only` and `fail` are all 0, so it printed "0/16 prompts PASS ...
0 forward-divergent" and PASSED -- indistinguishable in a log from a gate
that ran. Reachable on a TT box with `VT_DUMP_IDS=1` and the device goldens
missing: a fresh checkout, a new device suffix, a partial fetch. The
mirrored Qwen3 gate returns early with a BOOTSTRAP banner and this copy
dropped it; restored, with the reason stated at the site.
2. The backend proof dropped the rope escape it says it mirrors. It asserted
`kRopeNeox` selections > 0 unconditionally, but Mistral reuses the
Qwen3-dense `dense_attn::AttnBlock`, where `VT_QWEN3_ROPE_CACHE` is DEFAULT
ON and routes rope through `kRopeFromCache`; both cache ops are registered
on TT. So a cache-path run would CHECK-fail "kRopeNeox was never dispatched"
on a CORRECT engine -- a false RED. Mirrors the Qwen3 gate's `rope_alt`
escape exactly, including resetting the alternative ops' stats, rather than
inventing a second shape.
3. `EnableOpProviderCallStats(true)` was disarmed only inside
`if (device_golden && !bootstrap_only)`, so a bootstrap run left a
process-global instrument on. Moved to every device_golden path.
RECORDS.
4. No GitHub issue existed. The row, spec and claim all cited PR #354 -- a
merged PR, not an issue -- so nothing in the tree pointed at anything
trackable. Filed #670 and linked it in the three places AGENTS.md requires.
5. Three records disagreed on lifecycle state: the matrix row said `ACTIVE`,
the claim said `SPIKE` with a note still reading "e2e gate BLOCKED on two
env prerequisites", and the spec header said "DRAFT ... owes the RED
mutation + on-card run" while its own Outcome recorded the run passing. All
three now agree, and the claim records what actually cleared.
6. The public documents a new ACTIVE row owes: `docs/FEATURES.md` (the TT row
listed two architectures and now names the third), `docs/STATUS.md`, and
`docs/BENCHMARKS.md` -- the last stating plainly that no speed number is
owed or claimed, so a correctness gate cannot be mistaken for one. Added the
spec's `## Now`.
7. The oracle was named wrong in four places. Comments and the spec's port map
said `qwen3-neartie-gap.py` teacher-forces vLLM; the committed goldens came
from `qwen3-neartie-gap-transformers.py`. Anyone regenerating from those
instructions would have produced a golden from a DIFFERENT oracle than the
one committed. Now names `transformers` and points at the registry entry --
the sanctioned path, since vLLM has no Tenstorrent backend at all.
CHECKER EVIDENCE. This PR bumps the BACKEND ratchet 81 -> 82, and
`check-pr-size` requires a governance-checker change to carry executable
mutation evidence. Added `TenstorrentMistralRowIsCounted`, keyed to THIS row per
the `b55f6ec14` precedent: the row exists exactly once, it names its issue and
spec, and removing it breaks the pinned count.
That mutation test was wrong twice and both are worth recording. Patching
`Path.read_text` globally fed backend content to every matrix, so it went green
on errors unrelated to the removal. Writing the mutated copy to `/tmp` then
raised `ValueError: not in the subpath of` from `check_matrices`'s own
`relative_to(ROOT)`. The landed version writes under ROOT and redirects BOTH
`MATRIX_PATHS` and `MATRICES` -- rows are parsed from the first while the count
is pinned in the second, so patching only the latter counts zero rows for a
reason that has nothing to do with the mutation.
Verified: removing the row from the matrix turns the suite RED (4 failed, 20
errors); restored, `check-agent-record` reports BACKEND=82 and the suite is 55
passed, 2 subtests. The final tree was diffed against a clean merge of
origin/main with the PR head: it differs by exactly the edits listed above and
nothing from main was lost.
FOLLOWING_AGENTS_PROTOCOL
Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-opus-5 [Claude Code]
Copy file name to clipboardExpand all lines: .agents/coordination.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1990,7 +1990,7 @@ this claim will meet. The tiled row is speed-gatable on dgx.
1990
1990
| `CLAIM-PARAKEET-MODEL-P4` | `MODEL-AUDIO-PARAKEET-ENCODER`, `MODEL-AUDIO-PARAKEET-TRANSDUCER` | Claude Opus 5 (1M context) | isolated worktree `/home/mudler/_git/vllm.cpp-parakeet` (CPU-only) | branch `row/MODEL-AUDIO-PARAKEET-ENCODER`, base `main` | The encoder, the CTC head with greedy collapse, the log-mel front end, an HF-safetensors loader and the RNN-T/TDT transducer. Owns `src/vllm/model_executor/models/parakeet_*`, `src/vllm/multimodal/parakeet_audio_processor.*`, `examples/parakeet_transcribe/`, the Parakeet tests and the two model-matrix rows. | `ACTIVE` | 2026-08-07 CPU-LANDED + gated against a HF `ParakeetForCTC` oracle with EXACT token ids; transcribes ctc-0.6b/1.1b, rnnt-0.6b, tdt-0.6b-v3. No CUDA, no aarch64, no speed number claimed. |
1991
1991
| `CLAIM-BACKEND-TENSTORRENT-SPIKE` | `BACKEND-TENSTORRENT` (`INVENTORIED`→`ACTIVE`; W0 skeleton, one op) | Claude Code (claude-sonnet-5) | isolated worktree `/home/lu_zero/Sources/vllmcpp-tenstorrent`; real Blackhole (P150) hardware available all session | branch `row/BACKEND-TENSTORRENT`, base `origin/main` `7534da65`, draft PR [#197](https://github.com/mudler/vllm.cpp/pull/197) | New extension platform (no upstream vLLM equivalent, same class as Metal/Vulkan): `DeviceType::kTENSTORRENT`, `vt::tenstorrent::Backend` (host-staged, discrete PCIe), `TenstorrentPlatform`, ONE op (`kMatmul`, F32/rank-2) via `ttnn::operations::matmul::matmul`. Owns `include/vt/device.h`, `src/vllm/platforms/{platform,tenstorrent}.cpp`, `src/vt/tenstorrent/`, `tests/vt/test_tenstorrent_backend.cpp`, the `VLLM_CPP_TENSTORRENT` CMake wiring, the backend-matrix/porting-inventory/spec, and this claim. | `ACTIVE` | 2026-08-09 W0 LANDED: 3/3 test cases, 8/8 assertions PASS on real hardware (registration, Platform/Backend mirror, kMatmul vs host F32 reference within bf16 tolerance, max_abs_diff 0.03375). Two bugs found+fixed in the same pass (nlohmann-json ABI collision between vllm.cpp's vendored copy and tt-metal's, isolated via a separate OBJECT library; a process-exit segfault from static MeshDevice teardown ordering, fixed by a deliberate leak) — both documented in the spec's Risks/decisions. Not reviewed. No model runs; one op only; host round-trip per call, no perf claim. |
1992
1992
| `CLAIM-BACKEND-TENSTORRENT-RESIDUAL-GOLDEN` | `BACKEND-TENSTORRENT-RESIDUAL-GOLDEN` (NEW child of `BACKEND-TENSTORRENT`; `INVENTORIED`→`SPIKE`) | Maki (zai/glm-5.2), helper role | isolated worktree `/home/lu_zero/Sources/vllmcpp-tenstorrent`; real Blackhole (P150) hardware | branch `row/BACKEND-TENSTORRENT-RESIDUAL-GOLDEN`, base `origin/main` `f64f2b71` | Owes the bot-flagged residual-RMS numerics evidence at the `kDeviceResidualMinRows == 32` boundary: the device path (`ttnn::add`+`ttnn::rms_norm` in bf16) vs the CPU/host f32 oracle (`cpu_ops.cpp:371`). Owns ONLY: NEW `.agents/specs/tenstorrent-residual-golden.md`, the NEW `BACKEND-TENSTORRENT-RESIDUAL-GOLDEN` backend-matrix row, the NEW op-level cross-device test, and this claim. No model/perf/MoE change. | `SPIKE` | 2026-08-11 spike committed; no measurement yet. |
1993
-
| `CLAIM-BACKEND-TENSTORRENT-MISTRAL` | `BACKEND-TENSTORRENT-MISTRAL` (NEW child of `BACKEND-TENSTORRENT`; `INVENTORIED`→`SPIKE`) | Maki (zai/glm-5.2), helper role | isolated worktree `/home/lu_zero/Sources/vllmcpp-tenstorrent`; real Blackhole (P150) hardware | branch `row/BACKEND-TENSTORRENT-MISTRAL`, base `origin/main` `6dbedf9f` | Allowlist `MistralForCausalLM` on TT (Mistral-7B-v0.3 reuses the Qwen3-dense forward verbatim — qk-norm skipped, plain rope, untied lm_head; every op already registered, no new kernel) + make `test_mistral_paged_engine.cpp` device-aware (mirror the Qwen3 gate's tenstorrent branch + device-appropriate golden pair). Owns ONLY: NEW `.agents/specs/tenstorrent-mistral.md`, the NEW `BACKEND-TENSTORRENT-MISTRAL` backend-matrix row, `src/vllm/platforms/tenstorrent.cpp` (one allowlist line), `tests/parity/test_mistral_paged_engine.cpp` (device-aware wiring), the NEW TT golden pair, and this claim. No new op/kernel/model code. | `SPIKE` | 2026-08-11 spike committed. Code steps (allowlist + device-aware wiring) unblocked; e2e gate BLOCKED on two env prerequisites being staged by the developer: the 7B checkpoint (~14 GB download authorized) + a vLLM 0.25.0 oracle for `qwen3-neartie-gap.py` teacher-forcing. |
1993
+
| `CLAIM-BACKEND-TENSTORRENT-MISTRAL` | `BACKEND-TENSTORRENT-MISTRAL` (NEW child of `BACKEND-TENSTORRENT`; `INVENTORIED`→`SPIKE`) | Maki (zai/glm-5.2), helper role | isolated worktree `/home/lu_zero/Sources/vllmcpp-tenstorrent`; real Blackhole (P150) hardware | branch `row/BACKEND-TENSTORRENT-MISTRAL`, base `origin/main` `6dbedf9f` | Allowlist `MistralForCausalLM` on TT (Mistral-7B-v0.3 reuses the Qwen3-dense forward verbatim — qk-norm skipped, plain rope, untied lm_head; every op already registered, no new kernel) + make `test_mistral_paged_engine.cpp` device-aware (mirror the Qwen3 gate's tenstorrent branch + device-appropriate golden pair). Owns ONLY: NEW `.agents/specs/tenstorrent-mistral.md`, the NEW `BACKEND-TENSTORRENT-MISTRAL` backend-matrix row, `src/vllm/platforms/tenstorrent.cpp` (one allowlist line), `tests/parity/test_mistral_paged_engine.cpp` (device-aware wiring), the NEW TT golden pair, and this claim. No new op/kernel/model code. | `ACTIVE` | 2026-08-12 gate PASSED on Blackhole P150: 16/16 prompts, 12/16 strict-exact, max near-tie gap 0.062 nats, BACKEND PROOF 0 declines. Both former blockers cleared -- the 7B checkpoint is staged and the goldens are teacher-forced by `transformers`, not vLLM, which has no Tenstorrent backend at all (AGENTS.md "When vLLM has no implementation"; `.agents/oracles/transformers.md`). Issue #670. |
1994
1994
| `CLAIM-ENG-LOAD-DIRECT-UPLOAD` | `ENG-LOAD-DIRECT-UPLOAD` (engine-matrix, NEW row -> `ACTIVE`) | Claude Code (opus-5) | isolated worktree `.claude/worktrees/agent-a122a5ddc3546bf31`; GB10 `dgx.casa` tree `~/work/load150/src` (Vulkan `build-vk` + CUDA `build-cuda`), every GPU stage under `flock $HOME/gpu.lock`, `local-ai-worker` parked and restored | branch `row/ENG-LOAD-DIRECT-UPLOAD`, base `origin/main` `375a471e` | Issue #150. Owns ONLY: the refcounted safetensors mapping + byte counters (`include/vllm/model_executor/model_loader/safetensors_reader.h`, `src/vllm/model_executor/model_loader/safetensors_reader.cpp`), `BorrowStTensorBytes` + the `AdoptDeviceBytesAsHost` mmap branch + `OwnedTensor::mmap_src` (`include/vllm/model_executor/models/qwen3_5_weights.h`, `src/vllm/model_executor/models/qwen3_5_weights.cpp`), the qualifying call sites in `include/vllm/model_executor/models/dense_weight_loaders.h` and `src/vllm/model_executor/models/qwen3_5_dense_weights.cpp`, the upload counter in `include/vllm/model_executor/models/dense_attn_block.h`, the `VT_LOAD_STATS` phase timing in `src/vllm/entrypoints/model_loader.cpp`, NEW `tests/vllm/test_load_direct_upload.cpp` + its `tests/CMakeLists.txt` line, NEW `.agents/specs/load-direct-upload.md`, the NEW engine-matrix row + its Loading/Total rollup, the `#150` roadmap intake cell, two `docs/ENVIRONMENT.md` rows, this claim, `.agents/NOW.md`, and the `docs/STATUS.md`/`docs/BENCHMARKS.md` one-liners. **NON-COLLISION:** no new kernel, no model registry change, no CMake target change beyond one test line; every non-verbatim loader helper is untouched and the lever is same-binary A/B-able (`VT_LOAD_DIRECT_UPLOAD=0`). MUST NOT touch README, Metal/SACRED/apex/darwin, or any model/kernel source | `ACTIVE` | 2026-08-09 — mechanism test 6/6 (77) and RED under two mutations; GB10 Vulkan gates on the changed tree green (`test_vulkan_backend` 35/35·2650, `test_backend_cross_device` 11/11·132, `test_opt_paged_engine` 6/6 prompts token-exact 96/96, 0 declines, device type 3); GB10 CUDA full `ctest` 383/393 with BOTH SACRED gates PASS and all 10 failures reproduced on a clean `origin/main` build; 27B bf16 load 1.54x warm / 1.61x cold, bytes moved 100.196 -> 81.260 GiB; `local-ai-worker` restored (`--restart=always`, Up). Fresh scoped review OWED |
1995
1995
| `CLAIM-ENG-RELEASE-CONTAINERS-W1-W7` | `ENG-RELEASE-CONTAINERS` (`INVENTORIED`->`READY`->`ACTIVE`; spike spec + W1-W5/W7) | Claude Code (opus-5), helper role | isolated worktree `/home/mudler/_git/vllm.cpp-containers`; local Docker only -- NO GPU, NO registry push, NO publication | `row/ENG-RELEASE-CONTAINERS`, base `origin/main` `24306364`, PR [#307](https://github.com/mudler/vllm.cpp/pull/307) | Container spike spec, `docker/Dockerfile` (cpu/vulkan/cuda calling the release scripts), container matrix + checker, image validator, workflow + least-privilege guard, and the SIGTERM fix the boot gate surfaced (#312). Excludes W6 matching-hardware runtime evidence and any GHCR publication | `ACTIVE` | 2026-08-10 -- cpu lane built and gated e2e (config+layout+boot, clean SIGTERM 0.25 s, RED 137 before the fix); mutation suites 31/31 and 22/22; cuda/vulkan gated statically but never built here; nothing published |
1996
1996
| `CLAIM-ROCM-GDN-KERNELS` | `BACKEND-ROCM` (stays `ACTIVE` — M3 GDN kernel slice, issue #41) | pi (kimi-k3) | isolated worktree `/home/vikash/vllm.cpp-rocm-gdn-kernels`, base `origin/main` `5812b8b6`; 4x RX 7900 XTX gfx1100 discrete, ROCm 7.14, GPU jobs hold `~/gpu.lock` | `row/ROCM-GDN-KERNELS` | The M3 GDN kernel family unblocking Qwen3.5-0.8B M2 on discrete ROCm. Owns ONLY: NEW `.agents/specs/rocm-gdn-kernels.md`; NEW `src/vt/rocm/rocm_gdn.hip` (10 ops: kGdnStateGather/Scatter 77/78, kCausalConv1dFwd/Update 5/6, kRmsNormGated 9, kSigmoidGateBf16 58, kGdnPrefill/Decode 10/11, kGdnPostConv 65, kAttnQkNormRopeGate 67 — hand-translated from `src/vt/cuda/cuda_gdn.cu`/`cuda_ops.cu` donors); ADDITIVE registration entries in `src/vt/rocm/rocm_ops.hip`; ADDITIVE GDN cases + buffer helpers in `tests/vt/test_backend_cross_device.cpp`; this claim + `.agents/NOW.md`. **NON-COLLISION:** every new file is ROCm-only; the two shared-file edits are additive registration/case blocks that change no existing behavior (unregistered-op backends skip; CUDA/CPU/Vulkan paths byte-identical). Disjoint from #234 (sampling), #317 (gemma4 FP8/WMMA), #273 (near-tie docs). | `ACTIVE` | 2026-08-11 — **ALL 5 FAMILIES LANDED AS STACKED DRAFT PRs + M2 E2E COMPLETE.** #334 (spec + state I/O), #336 (conv), #341 (postconv), #343 (recurrence), #345 (norm-gate/preamble + the SupportsCompressedGdnState capability seam). Qwen3.5-0.8B runs e2e all-native on discrete gfx1100, deterministic; 'The sky is' 8/8 CPU parity; open-prompt divergence characterized as not-state-rounding, GDN-path drift analysis named open. Gates per family: cross-device green (162/162 total), focused 3/3, full-suite zero-delta vs base. NEXT: fresh review + operator gate per PR; then the MoeRouterTopK bf16-logits arm (the named MoE-path blocker) and the GDN-path divergence characterization. |
Copy file name to clipboardExpand all lines: .agents/roadmap_v1.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -150,6 +150,7 @@ issue is not yet placed. Keyed record: update in place, never append.
150
150
|[#567](https://github.com/mudler/vllm.cpp/issues/567)|`ROAD-V1-LTX25`|`OpNameImpl` makes a SECOND file every new `OpId` must edit; collapse the enum and its names into one derived list | bug |
151
151
|[#644](https://github.com/mudler/vllm.cpp/issues/644)|`ROAD-V1-LTX25`| LTX-2.5 FULL PORT campaign. Row 0 `LTX25-PROMPT-ADALN` (spec [`ltx25-prompt-adaln.md`](specs/ltx25-prompt-adaln.md)): `use_prompt_adaln_single` defaults TRUE in BOTH references and the shipped DiT carries its 18 tensors, but `ltx2_loader.cpp:988` cleared the flag unconditionally, so every render dropped the timestep-conditioned half of the prompt K/V modulation — invisible to every shape and finiteness check | feature |
152
152
|[#615](https://github.com/mudler/vllm.cpp/issues/615)|`GATE-PR-SIZE-BINARY`|`check-pr-size` fail-closes on every binary path with no exemption route, so no golden-bearing PR can merge: it blocks #431 and post-dates the golden precedent it rejects, spec [`gate-pr-size-binary.md`](specs/gate-pr-size-binary.md)| bug |
153
+
|[#670](https://github.com/mudler/vllm.cpp/issues/670)|`BACKEND-TENSTORRENT-MISTRAL`| Tenstorrent: allowlist `MistralForCausalLM` and gate it on-device; goldens are `transformers`-teacher-forced because vLLM has no TT backend, spec [`tenstorrent-mistral.md`](specs/tenstorrent-mistral.md)| feature |
153
154
|[#238](https://github.com/mudler/vllm.cpp/issues/238)|`SAMPLE-LOGPROB-TOKEN-IDS`|`logprobs_mode`: three of four modes are runtime-refused stubs | bug |
154
155
|[#264](https://github.com/mudler/vllm.cpp/issues/264)|`SAMPLE-LOGPROB-TOKEN-IDS`|`logprob_token_ids`: generative scoring over an explicit token set is unported | feature |
155
156
|[#365](https://github.com/mudler/vllm.cpp/issues/365)|`PERF-27B-DENSE-MARLIN-GATEUP`| 27B gap decomposed vs vLLM's own decode profile; dense W4A16 MLP bypassed the fused gate_up seam (spec `specs/perf-27b-dense-marlin-gateup.md`) | bug |
Status: **DRAFT, 2026-08-11.** Owes the RED mutation + on-card run before the
3
+
Status: **ACTIVE, 2026-08-12.** The RED mutation and the on-card run are DONE;
4
+
see `## Outcome`. Issue: [#670](https://github.com/mudler/vllm.cpp/issues/670).
5
+
Superseded draft note, kept for provenance: owed the RED mutation + on-card run before the
4
6
row leaves `SPIKE`. Two environmental prerequisites (7B checkpoint + vLLM
5
7
oracle) are required for the e2e gate and are being staged in parallel.
6
8
@@ -72,7 +74,7 @@ gate lacks the device-aware branch; (3) no TT golden pair exists; (4) the
72
74
|---|---|
73
75
|`src/vllm/platforms/tenstorrent.cpp:53`| Add `\|\| architecture == "MistralForCausalLM"` to `supports_model_architecture`|
74
76
|`tests/parity/test_mistral_paged_engine.cpp`| Mirror `test_qwen3_paged_engine.cpp:221-296`: read `run_dev`, set `tenstorrent = run_dev == kTENSTORRENT`, `device_golden = tenstorrent`, op-registration proof for the Mistral op set, device-appropriate golden selection (`our_ids_tenstorrent.npy` / `neartie_gap_mnats_tenstorrent.npy`) with the existing BOOTSTRAP dump path. |
75
-
|`tests/parity/goldens/mistral_greedy_7b/`| NEW `our_ids_tenstorrent.npy` + `neartie_gap_mnats_tenstorrent.npy` (captured via `VT_DUMP_IDS=1` on Blackhole → `scripts/qwen3-neartie-gap.py` teacher-force against the vLLM oracle). |
77
+
|`tests/parity/goldens/mistral_greedy_7b/`| NEW `our_ids_tenstorrent.npy` + `neartie_gap_mnats_tenstorrent.npy` (captured via `VT_DUMP_IDS=1` on Blackhole → `scripts/qwen3-neartie-gap-transformers.py` teacher-force against the `transformers` SECONDARY oracle -- vLLM has no Tenstorrent backend, so it cannot produce this at all; see AGENTS.md "When vLLM has no implementation" and [`transformers.md`](../oracles/transformers.md)). |
76
78
77
79
The Mistral op set for the registration proof (untied lm_head → includes
78
80
`kMatmul`):
@@ -179,6 +181,27 @@ suffix so the CUDA `our_ids.npy` is not overwritten.)
179
181
# on kTENSTORRENT. Commit the two new .npy goldens + record the counts here.
180
182
```
181
183
184
+
## Now
185
+
186
+
`ACTIVE`. The gate PASSED on a Blackhole P150 on 2026-08-12: 16/16 prompts, 12/16
187
+
strict token-exact against the oracle, 4/16 inside the near-tie band, 0
188
+
forward-divergent, max gap 0.062 nats, BACKEND PROOF with 0 declines
189
+
(`kMatmul` selections 256 = the untied lm_head running on device,
190
+
`kPagedAttention` 8192).
191
+
192
+
Both former blockers are cleared. The 7B checkpoint is staged, and the goldens
193
+
are teacher-forced by `transformers` rather than a vLLM oracle -- vLLM has no
194
+
Tenstorrent backend, so it cannot produce this comparison at all. That is the
195
+
sanctioned path under AGENTS.md "When vLLM has no implementation"; see
196
+
[`transformers.md`](../oracles/transformers.md).
197
+
198
+
Not owed and not claimed: any speed number. This row is correctness only.
199
+
200
+
Next: nothing on this row. Device-residency and `ttnn::sdpa_decode` belong to
201
+
the parent `BACKEND-TENSTORRENT`. Decode-graph capture is separately established
202
+
as unavailable on this hardware -- trace capture refuses host readbacks -- but
203
+
that spike's spec is not merged yet, so this row does not link it.
204
+
182
205
## Outcome (2026-08-12)
183
206
184
207
**Mistral-7B-v0.3 e2e gate PASSED on real Blackhole P150.**
Copy file name to clipboardExpand all lines: docs/BENCHMARKS.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -451,6 +451,7 @@ built on it rather than keeping the flattering one.
451
451
| Vulkan vs llama.cpp Vulkan (`BENCH-VK-LLAMA`) | 25 NATIVE (+8 GDN). **27B prefill 21.5x**; decode **4.36 vs 4.35, MET** (7 clean legs). Smart barriers skip 19.8%/tok, GPU -1.09 ms; e2e 8/12, unresolved. OFF. [source](../benchmarks/demo/vulkan_27b_llamacpp.json)|`VK-C` coopmat A/B on Thor (`VT_VULKAN_COOPMAT=0` A/Bs it): **11.1x-32.9x** vs our UNTILED scalar kernel, not vs a competent GEMM. `VK-E`: llama.cpp `-DGGML_VULKAN=ON` at `237ad9b96` on dgx, same GGUF, three columns |
452
452
| ROCm (`BACKEND-GATE-ROCM-VLLM` / `-SGLANG`) |**PENDING: no binding throughput number.** Runtime-green on 5 gfx archs. Gemma-3 is 48/48 exact vs two vLLM-ROCm oracles; Qwen3.5-0.8B correctness remains open | Same model, quantization, request shape and cache policy vs pinned vLLM-ROCm on one idle AMD host. Add equivalent SGLang; close correctness first ([#41](https://github.com/mudler/vllm.cpp/issues/41)) |
453
453
| Tenstorrent Blackhole (`BACKEND-TENSTORRENT`) |**NOT APPLICABLE (speed).** Correctness: OPT-125m STRICT 6/6 e2e on real hardware. Qwen3-0.6B has a device-specific golden and short 4-token warm smoke (~0.28 tok/s), not a completed speed run | Full 16x16 Qwen3 gate, then device-resident tensors + `ttnn::sdpa_decode` before any performance comparison. [Spec](../.agents/specs/tenstorrent-backend.md)|
454
+
| Mistral-7B-v0.3 on Tenstorrent (`BACKEND-TENSTORRENT-MISTRAL`) |**NOT APPLICABLE (speed).** Correctness only: 16/16 on a Blackhole P150, 12/16 strict, max gap 0.062 nats. No vLLM ratio exists or can, since vLLM has no TT backend | No speed number owed until device-residency lands. [Spec](../.agents/specs/tenstorrent-mistral.md)|
454
455
| Prompt logprobs (`SAMPLE-PROMPT-LOGPROBS`, #223) |**NO number measured, claimed or owed.** Correctness-only, CPU. Upstream ships this path explicitly unoptimized (`gpu_model_runner.py:5622-5623`); a step where no request asks is unchanged | Floor if one is ever wanted: vLLM's own `prompt_logprobs=k`, same model and prompt |
455
456
|`logprobs_mode` (`SAMPLE-LOGPROB-TOKEN-IDS`, #238) |**NO number measured, claimed or owed.** Correctness-only, CPU. One [n, vocab] device->host copy per step when a processed mode is engaged, nothing when not | Nothing to close: observation modes, not a path vLLM optimizes either |
456
457
|`logprob_token_ids` scoring (#264) |**No number owed:** correctness-only, CPU-gated; inert unless set | Owed once the OpenAI field is wired |
0 commit comments