Repository navigation
dsv41 metal: FP8 block-scaled rows for decode and MMA tiles for prompt rows, under the kernel contract - #1706
Merged
Conversation
gilby
force-pushed
the
dsv41-metal-pr/02-fp8-kernels
branch
from
November 1, 2026 00:07
b26f9a7 to
1247a9a
Compare
6 of 9 tasks
4 of 9 tasks
…t rows, under the kernel contract The release's dense FP8 projections decoded exactly: fp8_rows.metal sums a row's 32x32 blocks in a split-invariant order for 1-16 decode rows, fp8_mma.metal decodes the same blocks into fp32 MMA groups for prompt rows. Both are registered with the kernel contract against float64 and the release's own wkv bytes, with planted controls.
This was referenced Nov 1, 2026
ashhart
force-pushed
the
dsv41-metal-pr/02-fp8-kernels
branch
from
November 1, 2026 09:38
1247a9a to
2f0d55b
Compare
Owner
|
Thank you @gilby. This is merged into main with your commits under your own name, so you're listed as a TensorFold contributor. It ships in the next release, credited to you in the changelog and the release notes. |
Owner
|
Thanks @gilby! DeepSeek V4.1's FP8 block-scaled Metal kernels, under the kernel contract, are in 1.2.1: https://github.com/ashhart/TensorFold/releases/tag/v1.2.1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Metal kernels for the release's dense FP8 projections: decode rows with split-invariant 32x32 block sums (
fp8_rows.metal) and prompt rows as fp32 MMA groups (fp8_mma.metal), both registered with the kernel contract with their own float64 references and planted controls. Main's shared files change only by one-line hooks (sources.zig,tensorfold.zig,registry.zig,metal_main.zig,metal_limits.zig); the family's records, suites and limits live in their own files (dsv41_metal_records.zig,metal_dsv41_main.zig,metal_dsv41_limits.zig), so later parts add to those, not to main's files.Part 2 of 18 of the stack for #1676; stacks on
dsv41-metal-pr/01-release-readers(part 1, #1705).Receipt
tools/bench_concurrent.py --alone --serialortoken_shaagainst"draft": false: n/a: kernels only; the kernel contract checks each launch geometry's bits against the others and against float64.tools/bench_openai.py: measured on the PR that turns serving on.ttft_sfromtools/bench_cache.py --require-coldon a long prompt, or "n/a" with the reason when the change cannot reach prompt processing: measured on the PR that turns serving on.zig build test tf-kernel-contract -Dcpu=apple_m1: exit 0, 583/583 steps, 0 fail, 36 skip; kernel contract,tf-kernel-contract --only dsv41(Metal):SUMMARY 9 kernels: 9 pass gates 1-4, 0 fail, 0 known findings; 8 controls: 8 red as planted, 0 missed; 0 limit problems; gates 17288 ms, limits 359 ms;python3 tools/zig/lean_check.py: 4831 files, 424 problems, the same count as main (4807 files, 424). Zig's summary counts only the test binaries it ran in that invocation, so the step count is the comparable figure.Checklist
"draft": false, a resumed prompt equals a fresh one, and concurrent equals solo.SUMMARYline is in the receipt.