Conversation
lcy-seso
force-pushed
the
feat/manifest/new-op-specs
branch
from
September 27, 2026 15:16
6578f91 to
eb0e28a
Compare
Adds 24 spec-only entries: nine quantization ops, six sampling ops in a new sampling family, seven attention and KV-cache ops, a fused Q/K RMSNorm plus RoPE op, and Kimi Delta Attention. Each entry states its reference contract, workload rows from its issue and a roofline; the counts that depend on metadata values are functions in tileops.perf.formulas. The DeepSeek sparse attention rows need per-request top-k positions padded with -1, which no existing generator yields, so attn.sparse_topk_positions is added with its test. A spec-only entry may have no class yet, so the public-surface test requires every implemented entry to be reachable rather than every entry.
…nstants The dtype registry now records each dtype's category next to its bits, and derives FLOAT8_DTYPES from both. The roofline formulas that price an 8-bit float cache test membership in it rather than naming float8_e4m3fn, the category primitive reads the registry, and integer promotion asks for the category instead of listing the integer names. The elementwise workload's signed-integer branch uses torch's own dtype properties. Module-level constants defined after the first function or class move above it, unchanged. An assignment whose value reads a later module-level name, or calls anything but a pure builtin constructor, stays where it is. Every manifest row's roofline value and the validator output are unchanged.
… recount their rooflines test_spec_reference.py runs each new entry's reference, the torch expression its issue names or FLA's recurrence for Kimi Delta Attention, on every workload row with data on meta and metadata on the CPU. The reference's outputs must have the signature's names, shapes and dtypes, it must write exactly the inputs the call's effects mark written, and one call the signature rejects must be rejected by the reference too. The roofline oracle now ranges over spec-only entries as well: the binder builds a spec-only op from its signature alone, since a recount needs no implementation. The entries whose traffic follows their metadata get hand-written recounts of bytes and flops, and the three whose flops alone follow it get flops recounts.
lcy-seso
force-pushed
the
feat/manifest/new-op-specs
branch
from
September 27, 2026 17:45
eb0e28a to
c4b5600
Compare
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.
Part of #2271.
Problems
Changes
spec-onlyentries (table below) and asamplingfamily; the badge moves from 172/177 to 172/201.attn.sparse_topk_positions; constraints no predicate expresses are caller obligations in the entry comments.tests/test_spec_reference.pyruns each entry's reference on its workload rows and checks outputs, written inputs and one rejected call; the roofline oracle now covers spec-only entries.test_public_surface_is_the_manifestrequires implemented ⊆ public ⊆ manifest.FLOAT8_DTYPES) and formulas query it; module constants move to the top of their modules. Roofline values and validator output are unchanged.