Skip to content

gpu: support six-slot F32 tier handoff - #781

Merged
midagedev merged 10 commits into
midagedev:mainfrom
Burntgogi:contrib/flint-handoff-six-zkhjluk3
Oct 27, 2026
Merged

midagedev merged 10 commits into
midagedev:mainfrom
Burntgogi:contrib/flint-handoff-six-zkhjluk3

Conversation

@Burntgogi

@Burntgogi Burntgogi commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

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.

  • Current public head: 12391442fd2004c9140bc777a58c5d6c44c8e4e1, a documentation-only descendant of the measured implementation.
  • Fixed main: 15778e2cb2dd7af428d2dd14259e6b0ea8ca6b89; original contribution history preserved by ordinary merges and fast-forward pushes, with no replacement PR or force-push.
  • Executed owning-library source: 9bfa55adc257f7e6aae4952aca06246eddaeef70.
  • Later measured carrier source: b9b6e013ebfab5748688be52e9a5d398ac2fc9a3; its host-only error context is the common F32 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.

Check Executed source Observed result
Owning DS41 library 9bfa55ad 38 passed / 0 failed / 0 ignored, 28.75s
hw_f32_tier_handoffs_conserve_consumed_routes 9bfa55ad Real four/six/eight-route CUDA execution, partial widths, invalid IDs, poisoned unconsumed rows, changed-input captured replay passed
Actual generate_ds41 carrier: ffn_handoff_6_tier, sm_86 / physicalcc8.6 b9b6e01 ptxas13.3.33 spill0, driver-JIT local0; ptxas/JIT registers26/26
Common-name check after context consolidation b9b6e01 census37; checker exit0; no raised ratchet

The 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

Compiled target Required physical device State
sm_86 cc12.1 unmeasured; no row fabricated
sm_121 cc12.1 unmeasured; no row fabricated
sm_121a cc12.1 unmeasured; no row fabricated

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.1 when 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:

bash tools/oxide-host.sh
bash tools/gate.sh --gpu --oxide --release -p bloomery-gpu-deepseek41 --lib -- --include-ignored

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.

@github-actions github-actions Bot added documentation Improvements or additions to documentation gpu The card engine: crates/gpu*, crates/app needs-gpu Changes code a card must check, and carries no gate run on a card labels Oct 24, 2026
@github-actions github-actions Bot added the tools Tools, recipes, CI and the toolchain: tools/, justfile, .github/, Cargo label Oct 26, 2026
@midagedev
midagedev marked this pull request as ready for review October 27, 2026 06:05
@midagedev

Copy link
Copy Markdown
Owner

Thank you. I merged main into this branch and added one maintainer commit, so it can land in 0.3.10:

  • handoff.rs: the _ => arm is now named Eight; any other HandoffSlots variant is refused by name (GpuError::shape).
  • ffn_handoff_6_tier cc12.1 rows are pinned at the cc8.6 values with PIN(2026-10-27) until a GB10 scan runs (the same rule Nanbeige4.3-33B on one 24 GB card (llama description on Body35) #838 used). check-ptx-names is green. The design doc says so.

Verification on our box: hw_f32_tier_handoffs_conserve_consumed_routes green on the real tier; fixture batch of #781+#782+#783 on main green; just check and just lint 0 warnings on this branch. I marked it ready and will squash-merge after CI.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, the at array, 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_tier grows by one match arm.
  • Silent failure: 4 sites followed. check_tier refuses 9 and 10 by name. The Nine | Ten arm is unreachable and returns a named error. An id past n_expert still raises ExpertId.
  • Performance: launches, copies and syncs per token are unchanged. No finding.
  • Tests: hw_f32_tier_handoffs_conserve_consumed_routes protects ffn_handoff_6_tier. Mutant "the entry uses SLOTS_8" reads the trailing u32::MAX id and turns the fault assertion red. Mutant "tsel not written" turns the result comparison red. A flipped tl.n_used != lay.n_used fails the check_tier unit test.
  • Gates: unsafe-ratchet +2 blocks with PIN. model-tax lowered 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 of 44d200c0.
  • GPU evidence covers an earlier source (9bfa55ad, b9b6e013), as the body says. The body gives no raw nvidia-smi line 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)

@midagedev
midagedev merged commit 4e05b5f into midagedev:main Oct 27, 2026
7 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation gpu The card engine: crates/gpu*, crates/app needs-gpu Changes code a card must check, and carries no gate run on a card tools Tools, recipes, CI and the toolchain: tools/, justfile, .github/, Cargo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

model: Flint (flint, 256 experts, sliding-window attention with sinks)

2 participants