Repository navigation
gpu: support six-slot F32 tier handoff - #781
Conversation
…ame; pin ffn_handoff_6_tier's cc12.1 rows at the cc8.6 values Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thank you. I merged main into this branch and added one maintainer commit, so it can land in 0.3.10:
Verification on our box: |
There was a problem hiding this comment.
Verdict: CLEAN: the six-slot entry reuses handoff_at and handoff_tier_at at N=6, the 4 and 8 entries keep their argument order, and I found no failure path I could not refute.
Non-blocking
⚠ Closure log in a design doc: docs/research/flint-attach.md:8 holds merge history, host names, run counts and commit hashes (lines 8 to 29). This belongs in the commit message or PR. It also says the census falls "from 39 to 37", but tools/model-tax.tsv:134 goes 38 to 37 in this diff. Keep the "Six-slot F32 tier handoff implementation" section and drop the closure section.
⚠ cc12.1 rows carry cc8.6 values: sm_86-cc12.1.tsv:72, sm_121-cc12.1.tsv and sm_121a-cc12.1.tsv add ffn_handoff_6_tier 0 0 under a dated PIN. The PR body says "no row fabricated" and calls these rows unmeasured. The two texts disagree. The PIN says the value is a copy, not a scan. State the choice in the PR body. AGENTS.md asks for gate-ptx-spill red on exactly the new entries before pinning; the body has no such output. Pin dates are 2026-10-26 in some files and 2026-10-27 in others.
⚠ Test comment: batch.rs:2786 says "Both slot entries"; the test runs 4, 6 and 8 slots. Fix the comment.
Checked
- Duplicates: 5 new items checked (
ffn_handoff_6_tier,check_tier, theatarray, the test, the PTX rows), none duplicated. Dryer pairs (handoff.rs:314,:402,:485) are the slot-count entries. They differ only in the slot constant, and a#[kernel]entry cannot be generic, so I raised no finding. - Complexity: crapper flagged nothing.
enqueue_handoff_tiergrows by one match arm. - Silent failure: 4 sites followed.
check_tierrefuses 9 and 10 by name. TheNine | Tenarm is unreachable and returns a named error. An id pastn_expertstill raisesExpertId. - Performance: launches, copies and syncs per token are unchanged. No finding.
- Tests:
hw_f32_tier_handoffs_conserve_consumed_routesprotectsffn_handoff_6_tier. Mutant "the entry uses SLOTS_8" reads the trailingu32::MAXid and turns the fault assertion red. Mutant "tsel not written" turns the result comparison red. A flippedtl.n_used != lay.n_usedfails thecheck_tierunit test. - Gates:
unsafe-ratchet+2 blocks with PIN.model-taxlowered 38 to 37. PTX rows: see the second ⚠. - Escape catalog: no pattern matched.
Notes
- The PR body is stale against this head: it names head
12391442, this review is of44d200c0. - GPU evidence covers an earlier source (
9bfa55ad,b9b6e013), as the body says. The body gives no rawnvidia-smiline or command output.
Card check: needs-gpu. This pull request changes crates/gpu-deepseek41/src/chain/ffn/batch.rs, crates/gpu/src/host/handoff.rs and carries no gate run on a card (CONTRIBUTING's evidence list); a maintainer adds gpu-verified after one.
🔨 Shingler, bloomery's review bot: approves a clean pull request and requests changes on a must-fix (how it works)
Merged — maintainer disposition
The maintainer merged this PR on 2026-10-27 as 4e05b5f. The maintainer explicitly pinned the three physicalcc12.1 handoff rows to cc8.6 values provisionally until a GB10 scan; those rows are not presented as measured cc12.1 data. The original contributor measurements below retain their actual source/card provenance. The old Draft/unmeasured status below describes the pre-maintainer snapshot, not the current PR state.
Historical contributor evidence before maintainer merge
Scope and source
The existing common F32 handoff owns four/six/eight-route conservation, including the new six-slot tier entry. No model port, precision mode, numerical band or unrelated kernel ratchet is added here.
12391442fd2004c9140bc777a58c5d6c44c8e4e1, a documentation-only descendant of the measured implementation.15778e2cb2dd7af428d2dd14259e6b0ea8ca6b89; original contribution history preserved by ordinary merges and fast-forward pushes, with no replacement PR or force-push.9bfa55adc257f7e6aae4952aca06246eddaeef70.b9b6e013ebfab5748688be52e9a5d398ac2fc9a3; its host-only error context is the commonF32 tier handoff, eliminating slot-dependent family wording. The measured common-name census falls39→37; generated kernel ABI names/dispatch stay unchanged. Neither the earlier library run nor the carrier scan is relabeled as a run of the documentation head.Actual evidence
RTX3090 24GiB/GPU0, physical cc8.6, driver595.91.07. Rust1.99.1, cuda-oxide9df9e7ce with repository-required backend patch31ab6a1d3f58, LLVM21.1.8. GPU1's existing service was not stopped and was observed active/HTTP200/statusok.
9bfa55adhw_f32_tier_handoffs_conserve_consumed_routes9bfa55adgenerate_ds41carrier:ffn_handoff_6_tier, sm_86 / physicalcc8.6b9b6e01b9b6e01The measured normalized entry digest is
a176a9a5846778e40ba99fc2be637d90(decl1,163lines). Only the actually measured resource row was added. A new source-specific numerical/runtime run is not invented for later formatting/context/docs-only changes.Remaining closure gate: genuine physical cc12.1
Please supply the genuine target/device runs or explicitly disposition this gate before merge. A compile-only result or a cc8.6 JIT is not a substitute. This PR remains Draft while these three rows are unresolved.
The contributor lane established usable cc8.6 hardware. The two other previously unresolved aarch64 accounts had neither an available nvidia-smi nor an accessible
libcuda.so.1when queried through the CUDA Driver API path; that establishes no usable cc12.1 lane for those accounts, not physical absence of a GPU. No service stop, driver install, permission bypass or extra OpenBao approval was attempted.Command and evidence handling
The owning command used normal per-worktree host preparation and unchanged gate bounds:
The original managed library request timed out while its child continued; a read-only collector recovered the actual38-pass log rather than replaying it. The carrier scan was likewise recovered from its original process. Its script recorded exit23 after the complete scan; no synthetic command exit0 is reported. Credential cleanup for those original requests remains unconfirmed and is separate from observed gate output, finished processes and service health. Original logs, resource tables, request IDs and local receipts are preserved outside Git.
Permanent contract documentation now keeps source/card/driver/count/byte-contract facts rather than transient request credentials, private workspace paths or PR-ready status.
This evidence does not establish Flint whole-model correctness, physical cc12.1, ROCm support or performance, and does not close #632/#799.
Recorded CI closure gate
The actual current-doc-head T0 job https://github.com/midagedev/bloomery/actions/runs/40418129193/job/121905470616 completed37 units with only check-ptx-names red: the same3 genuine physical-cc12.1 handoff rows already listed above. Its lint failure came from then-new upstream warnings subsequently fixed by cb8d92e; no ratchet increase or fabricated resource row is proposed. This does not make the recorded T0 green. The checked ARM accounts could not load libcuda.so.1; that proves no usable lane under those accounts, not absence of physical hardware. Draft remains while the actual resource rows are unavailable.
Final access/closure disposition
The later serial read-only inventory of the same allowed aarch64 OS views completed successfully: neither view exposed an NVIDIA PCI device, driver node or alternate libcuda path. This establishes no usable registered physicalcc12.1 lane, not physical absence outside those views. These 3 missing rows are a subset of #799's30, not an additional3. No gate waiver, driver install, service stop or permission bypass. The source-scoped historical evidence above and its recorded CI failures remain as recorded; this is not a new current-doc-head GPU/CI pass. Draft remains pending genuine physical measurements/maintainer disposition.