From 013f2d95ba72e8db29d4e6348beadedeb078ec7c Mon Sep 17 00:00:00 2001 From: lcy-seso Date: Sat, 3 Oct 2026 09:59:44 +0800 Subject: [PATCH] [Docs] Follow TileOPs' op renames, and give the transform family a page TileOPs #2410 renamed 27 manifest entries; the API pages, the manifest examples and this repository's CLAUDE.md named the old ones. Three renames came with #2401 and were never followed here, so the site does not build against today's main: `RopeNeoxFwdOp` and `RopeNonNeoxFwdOp` merged into `RopeFwdOp`, the three vector-norm ops merged into `VectorNormFwdOp`, and `DeltaNetAutogradFwdOp` was deleted. Each page the merge touched says in one line which parameter now picks what the separate ops used to. `docs/api/transform.md` is new, between FFT and mHC in the nav. `HadamardTransformFwdOp` is spec-only, so the page describes the signature `src/tileops/manifest/spec/transform.yaml` states rather than collecting a class mkdocs cannot import. Benchmarks put the transform family on the Other page: one op so far, and a rotation applied before quantization is not a quantization step. `check_api_pages.py` now reports 188 ops on the page and exported, with nothing the build cannot collect. --- CLAUDE.md | 2 +- docs/api/attention.md | 4 ++-- docs/api/elementwise.md | 6 +++--- docs/api/linear-algebra.md | 4 ++-- docs/api/linear-attention.md | 18 ++++++------------ docs/api/mamba.md | 6 +++--- docs/api/moe.md | 22 +++++++++++----------- docs/api/reduction.md | 15 +++------------ docs/api/rope.md | 16 ++++++---------- docs/api/sampling.md | 2 +- docs/api/transform.md | 17 +++++++++++++++++ docs/user-guide/manifest/examples.md | 6 +++--- docs/user-guide/manifest/examples.zh.md | 6 +++--- mkdocs.yml | 1 + scripts/gen_bench_pages.py | 3 +++ 15 files changed, 65 insertions(+), 63 deletions(-) create mode 100644 docs/api/transform.md diff --git a/CLAUDE.md b/CLAUDE.md index 0a4929be..07e0b931 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -68,7 +68,7 @@ implementation of the same op on that workload. | Device time | Compare `device_busy_ms`, never wall-clock span | | Two questions | `Ratio`: is another kernel faster. `SOL`: how much faster the hardware allows anyone to go, its binding resource (`mem`/`comp`/`lat`) in a `Bound` column. Import the SOL arithmetic and thresholds from the checkout's roofline tool (M5); never re-derive them here | | Which page an op lands on | The manifest entry's `family:`, through `_MANIFEST_FAMILY` — an op TileOPs adds needs no change here. One the manifest does not declare falls back to its package, then to keywords | -| Page order | `DATA_PAGES`: Elementwise, RoPE, Reduction, Normalization, Conv & Pool, GEMM, Quantization & Dequantization, Attention, MoE, Sampling, Linear Attention, SSM, Other. One page per family except `Conv & Pool` (two) and `Other` (FFT, mHC, Engram, the rest). `TopkSelectorFwdOp` declares `family: attention`, so its row is on Attention, while the API Reference documents it on the Sampling page. The API Reference nav follows it, with FFT, mHC and Engram after SSM and Top-k on the Sampling page. `_BENCH_ORDER` in `hooks.py` repeats it — change all three together | +| Page order | `DATA_PAGES`: Elementwise, RoPE, Reduction, Normalization, Conv & Pool, GEMM, Quantization & Dequantization, Attention, MoE, Sampling, Linear Attention, SSM, Other. One page per family except `Conv & Pool` (two) and `Other` (FFT, mHC, Engram, the rest). `TopKSelectFwdOp` declares `family: attention`, so its row is on Attention, while the API Reference documents it on the Sampling page. The API Reference nav follows it, with FFT, mHC and Engram after SSM and Top-k on the Sampling page. `_BENCH_ORDER` in `hooks.py` repeats it — change all three together | | Op order within a page | The order `docs/api/` names them, read by `api_op_order()`. An op no API page names comes last, ranked by verdict | | Rows follow the manifest | One row group per manifest label, one row per dtype under it in a `dtype` column. Labels keep the snapshot's order, which is the manifest's; the key above the table repeats it. A row no manifest describes takes its id, trailing dtype names split off, as its label | | Workload shapes | The snapshot names a workload but carries no shapes. `scripts/workload_shape.py` reads them from the spec manifest at the commit the benchmark ran on, joined by the `