Repository navigation
profile: register the pool-page switches for Dory, Gemma 4, Spark2.5 and Nemotron's Metal paging - #2306
profile: register the pool-page switches for Dory, Gemma 4, Spark2.5 and Nemotron's Metal paging#2306devopsfortunato wants to merge 1 commit into
Conversation
|
Thanks @devopsfortunato. This reads right: each of the four switches has one reader on main, each moves to
|
|
A correction to our note above, @devopsfortunato: the two conflicts we named came from reading against a main from before your base. Still wanted:
|
81be32d to
b0f8863
Compare
…and Nemotron's Metal paging The switch registry grows by four rows (ashhart#1660's next group, all measured identical): TENSORFOLD_DORY_KV_PAGES (opt-in, ashhart#1284), TENSORFOLD_GEMMA4_KV_PAGES and TENSORFOLD_SPARK25_KV_PAGES (default-on, exact 0 opts out, ashhart#1619, ashhart#1653), and TF_NEMOTRON_METAL_KV_PAGES, the first metal-backend row (exact 1, ashhart#1537). A new .not_zero syntax covers Dory's on-unless-0 reader; the 0-opt-out rows reuse report_values. The four readers go through the registry's environment-first helper, so an unset variable and every set value behave byte for byte as before.
b0f8863 to
109fb38
Compare
|
Thanks @ashhart - all five points are in, on head 1. The rebase. Done twice: first onto 2. The CHANGELOG line, under
3. 4. The docs' count. The sentence now states the count as a fact about the registry rather than as a sum of the list: "The registry names fourteen variables." The 5. Full host suite on this head, on one aarch64 host (20 cores, Zig 0.17.0 from Also on this head:
Review: GLM-5.3, two rounds. Round 1 asked for the backend-scope loop and the docs' count sentence, both applied; it also found that Dory's One thing to flag: the |
|
Thanks @devopsfortunato, all of it is in: the CHANGELOG line, |
What this changes
The switch registry grows by four rows and their readers route through the registry's environment-first helper, so
tensorfold capabilities --jsonand the startup line cover them:TENSORFOLD_DORY_KV_PAGES(Dory on CUDA, opt-in),TENSORFOLD_GEMMA4_KV_PAGESandTENSORFOLD_SPARK25_KV_PAGES(default-on paging, exact0opts out), andTF_NEMOTRON_METAL_KV_PAGES(Nemotron-H on Metal, exact1), the registry's first metal-backend row. With a variable unset, behavior is identical; with it set, the value reaches the family byte for byte, exactly asstd.c.getenvreturned before. One new syntax (not_zero) covers Dory's on-unless-exactly-0 reader; the two 0-opt-out rows reuse the existingreport_values.docs/profiles.mdlists the new coverage.fast-exactbit-identical tostable". This lands one switch group; the token guard andfast-exact/fastremain.atc overlap --json: 2026-11-06T10:00Z against main 691fb43, 10 changed files. Sixconflictsentries, one file each: qwen27: a prompt frame below 128 rows is refused by name, not as TargetBinding #2298, gfx12 WMMA dense tile: 64-deep swizzled K step, LDS-only barrier (same bytes) #2280, gfx12 WMMA: silu x up in the gate/up product's epilogue (same bytes) #2344, lfm2_moe: serve LFM2.5-24B-A2B on CUDA (plain serve, shared kernels) #1492, qwen CUDA: a faster opt-in paged path (TF_QWEN_KV_PAGES=256), --parallel a cap with pages set #2011, gemma4 Metal: Gemma 4 E4B (NVIDIA Nemotron 3.5 Bolt E4B) on M1 to M4, per-layer inputs and shared KV #2273. They append at the same two anchors this pull request appends at - theCHANGELOG.md## Unreleasedlist and the registry's rows table inzig/src/core/profile.zig- so whichever lands first and the others rebase by moving their appended rows; no semantic overlap. Four entriesclean, 401unknown(board limitationsotherPullRequestsLimit,pullFilesUnavailable,timeLimit).Checks on this head
profile-pool-page-switches-1660)python3 tools/zig/lean_check.py, on the base (691fb43) and on this head: 5624 files / 325 problems both,lean_new0 new findings.zig build -Dfixed-cpu test-profile: pass.zig build -Dfixed-cpu test-profile-line-host: pass.zig build test --test-timeout 10m(what CI'szigjob runs): green in CI on this head, and run locally as the full host suite on one aarch64 host (20 cores, Zig 0.17.0 from.zig-version, an empty Zig cache): exit 0,Build Summary: 569/569 steps succeeded; 7345/7406 tests passed (61 skipped), 4m57s wall.roce_inflight_testfailure was this 4-core Pi'smadvise(MADV_NOHUGEPAGE)→ EINVAL, environmental and unrelated to this diff; on the host above it passes, and the whole suite is green there.successon 109fb38: benchmark-clients ubuntu and windows, fmt, release-paths,zig,zig-macos-dev-tools(compiles the Metal engine module, including thekv_pages.zigedit),zig-windows.zig build kernel-contract -Dcpu=apple_m1— no macOS host available here; the Metal-path edit is one registry lookup innemotron/kv_pages.zigmirroringglm/cuda_kv_host.zig's existing@import("profile")pattern (the build graph injects the registry into every engine module;zig ast-checkclean). CUDA device checks and the families'tf-cuda-test *-pagesreceipts — no GPU on this host; the diff cannot change device behavior: it only registers metadata and preserves every lookup byte for byte.Receipt
n/a — the change cannot reach inference on its own: it registers existing opt-in switches and preserves every environment lookup byte for byte, unset stays unset. The switches' own identical-token receipts are their landing pull requests: #1284, #1619, #1653 and #1537.
Checklist