SuperNPUBench is a high-performance operator library and benchmark platform for
NPU tile-programming ISA. It ships two architecture backends under benchmark/
(two-level-arch = LinxISA, one-level-arch = PTO ISA) plus an instruction-level
microbenchmark suite, all driven by the same Linx toolchain.
IMPORTANT: Only
benchmark/one-level-arch/andmicrobenchmark/are compilable with the current toolchain. Thebenchmark/two-level-arch/(LinxISA) kernels are not compilable — they require a different ISA mode not supported by the currentlinx_blockisa_llvm_muslbuild. Do not includetwo-level-archin batch compilation (compile_all.sh two-levelwill fail).
SuperNPUBench/
├── benchmark/
│ ├── two-level-arch/ # Linx two-level block ISA
│ │ ├── kernels/ # header-only operator implementations
│ │ ├── test/ # test suites + build system
│ │ └── compile_all.sh
│ ├── one-level-arch/ # PTO one-level tile ISA
│ │ ├── kernels/
│ │ ├── test/
│ │ │ ├── common/ # shared Makefile.common, _start.s
│ │ │ └── kernel/ # per-operator test cases
│ │ └── compile_all.sh
├── microbenchmark/ # instruction-level micro-bench (cube/vector/memory/scalar)
├── docs/ # documentation
│ ├── programming/ # PTO C++ Programming Guide
│ └── workflow/ # end-to-end workflow docs
└── compile_all.sh # top-level: two-level | one-level | all
Build outputs (
output/,**/output/) and.DS_Storeare gitignored.
- Block-structured ISA with heterogeneous cores: BCC (main), Cube (matrix), Vector, MTC/TMA (data transfer).
- Programming model: block instructions (VPAR/VSEQ, CUBE, TMA, TEPL).
- Tile-centric ISA with explicit memory hierarchy: Vec, Mat, Left, Right, Acc.
- Programming model: tile operations via Linx-TileOP-API C++ templates.
- Programming guide:
docs/programming/pto c++ programming guide.md.
Both backends share the same operator set and test layout; their kernel implementations differ in ISA style.
Each backend implements operator categories:
| Operator | Description |
|---|---|
| matmul | FP4/BF16/FP32/FP16/FP8 matrix multiply; quantization, mixed precision, A/B reuse, GMMA shared-tile |
| fa | Flash Attention; 2D unroll, SFA (block-sparse), HIF4 quantization, softmax_pto, unaligned boundary |
| flashMLA | Flash MLA (multi-head latent attention) |
| transpose | 3D~6D tensor transpose; multiple dtypes |
| reduction | Row/column max & sum; single-tree, unaligned, cumsum, reduceprod |
| gelu | GELU activation; exact (erf) and tanh approximation |
| broadcast | 2D~5D broadcast; vectorized variants |
| gather | Data gathering; large-scale, power-of-2 dims |
| concat | Concatenation; gather/scatter modes |
| control | hashtable_lookup_simd (pure tile-op, single-tier gfsim) |
| sort | topk (radix-bucket histogram) |
| deepseek | 22 migrated DeepSeek kernels (engram/mhc/moe/quant/transpose) |
SuperNPUBench compiles with the Linx toolchain (linx_blockisa_llvm_musl,
clang-15, target linx64v5-unknown-linux-musl). Build it once from the
linx-toolchain-build repo,
which clones the matching ISA sources and produces the linx_blockisa_llvm_musl
install tree that COMPILER_DIR points at.
git clone https://github.com/LinxISA/linx-toolchain-build.git
cd linx-toolchain-buildsudo apt-get install -y git make cmake ninja-build gcc g++ python3 autoconf m4make init-src clones the five component repos under src/ on their pinned
branches (run it again any time to fetch updates):
| Directory | Repository | Branch |
|---|---|---|
src/llvm-project |
LinxISA/llvm-project |
dev-llvm15_56 |
src/musl |
LinxISA/linx-musl |
linx |
src/jemalloc |
LinxISA/jemalloc |
linx |
src/linux-linxisa |
LinxISA/linux |
main |
src/Linx-TileOP-API |
LinxISA/Linx-TileOP-API |
linx |
make init-srcOnly linx64v5-linux-musl is supported by the top-level Makefile:
make WITH_TARGET=linx64v5-linux-muslThis builds, in order: LLVM/clang/lld → kernel headers → musl → compiler-rt →
libc++/libc++abi/libunwind → jemalloc → Linx-TileOP-API headers. Progress is
tracked by stamp files under stamps/, so re-running make resumes from the
last completed step; make clean rebuilds from scratch. The install tree is
written to output/linx_blockisa_llvm_musl/:
output/linx_blockisa_llvm_musl/
├── bin/ # clang, clang++, ld.lld, llvm-ar/nm/ranlib,
│ # linx64v5-linux-musl-clang(++) symlinks
├── lib/ # clang runtime, libc++, ...
└── sysroot/ # musl + kernel headers + runtime libs
export COMPILER_DIR=$(pwd)/output/linx_blockisa_llvm_musl/bin
$COMPILER_DIR/clang --version
# clang version 15.0.4 (linx64v5-musl-local ...)
# Target: linx64v5-unknown-linux-muslThen proceed to Quick Start.
make package # -> output/linx_blockisa_llvm_musl.tar.gzBuild the Linx toolchain once (see Setup Environment), then
point COMPILER_DIR at it:
export COMPILER_DIR=/path/to/linx_blockisa_llvm_musl/bin# one-level-arch (PTO ISA) — multi-thread operator
cd benchmark/one-level-arch/test/kernel/matmul
make TESTCASE=matmul COMPILER_DIR="$COMPILER_DIR" B=1 M=256 N=256 K=256 tM=32 tN=32 tK=32# one-level-arch only (recommended)
./compile_all.sh one-level
# microbenchmark
cd microbenchmark && bash compile_all.sh allDo NOT run
compile_all.sh two-levelorcompile_all.sh all—two-level-archkernels cannot compile with the current toolchain.
Artifacts land in benchmark/<arch>/output/kernel/<operator>/elf/.
microbenchmark/ is an instruction-level bench organized by ISA family,
generated by gen_cases.py.
| family | covers | cases |
|---|---|---|
| cube (CUBE) | TMATMUL / TMATMUL_BIAS / TMATMUL_MX / ACCCVT | 9 |
| vector (TEPL) | elementwise / tile-scalar / reduce / expand / TCI sequence (toolchain-exposed subset) | 128 |
| memory (TLSU) | TLOAD / TSTORE / TMOV / MGATHER / MSCATTER (+mask, layout) | 25 |
| scalar (GPR) | int ALU / load-store / float / conversion × throughput+latency | 124 |
| total | 286 |
cd microbenchmark && make TESTCASE=tmatmul_fp16_64x64x64 # one case
cd microbenchmark && bash compile_all.sh all # all familiesSee microbenchmark/README.md for details.
Compiled ELF binaries run on the SuperScalarModel simulator suite. Build
gfrun/gfsim from the SuperScalarModel repo, then
point them at the ELF:
gfrun— functional model (correctness)gfsim— cycle-accurate model (timing)
# from the SuperScalarModel repo root (where bin/ lives)
bin/gfrun -f /path/to/SuperNPUBench/benchmark/one-level-arch/output/kernel/<op>/elf/<name>.elf
bin/gfsim -f /path/to/SuperNPUBench/benchmark/one-level-arch/output/kernel/<op>/elf/<name>.elfKernels written purely with tile ops using TEPL template instructions (e.g.
control/hashtable_lookup_simd) run on the VectorLite engine, which gfsim only
steps in single-tier mode:
bin/gfsim -f <elf> -s core.singleTierMode=trueWithout this flag the engine is inert and the run deadlocks. gfrun does not
need the flag.
| Parameter | Description | Example |
|---|---|---|
TESTCASE |
Test case name | matmul, fa_2d_unroll |
TYPE |
Operator type (matmul) | HIF4_HIF4, A16W4, MASK |
MODE |
Operator mode | MASK_FP32, BF16x2_NOGATHER |
M/N/K |
Matrix dimensions | M=256 N=2048 K=2048 |
tM/tN/tK |
Tile sizes | tM=128 tN=128 tK=128 |
COMPILER_DIR |
Compiler path | /path/to/linx/bin |
PLAT |
Platform | linx (default), cpu |
make TESTCASE=<case> all # compile
make TESTCASE=<case> diss # disassembly
make TESTCASE=<case> sim # run in simulator
make TESTCASE=<case> debug # debug mode
make clean # clean current operator
make clean_all # clean all- PTO C++ Programming Guide:
docs/programming/pto c++ programming guide.md - End-to-end Workflow:
docs/workflow/operator_to_chip_execution_flow.md - Per-operator README: see
benchmark/one-level-arch/kernels/<operator>/README.md - Microbenchmark:
microbenchmark/README.md - TileOP-API Reference: Linx-TileOP-API tileop-usage docs
- Compiler:
linx_blockisa_llvm_musl(clang-15, linx64v5-musl) - Flags:
-mlxbc -fenable-matrix -O2 -mllvm -enable-all-vector-as-tilereg=true -std=c++20 - Target: Linx64 V5
- Add header-only kernel under
benchmark/<arch>/kernels/<operator>/. - Create test dir under
benchmark/<arch>/test/kernel/<operator>/withMakefile,compile.all,src/. - Add the operator to
compile_all.sh.
- Header-only kernels; PTO tile-programming paradigm.
- Build artifacts not tracked (
.gitignore).
See LICENSE.
与常规 gfrun 功能回归(只验“跑到终点 + R2=0”,不查结果数值)不同,本轮在
res_check=on 下重编全部算子并复跑 gfrun,对每个算子的计算结果做金标准(golden)比对,
暴露功能性模型在数值层面的保真度差距。编译器仍按 AGENTS.md 用主 linx-toolchain-build
worktree(clang 15.0.4 / linx64v5-unknown-linux-musl);gfrun 用 SuperScalarModel/bin/gfrun。
| 范围 | res_check 机制 | PASS 判据 |
|---|---|---|
| microbenchmark | res_check=on → Makefile.common 加 -DRES_CHECK,产物落到 output/res_check/;测试在 main() 内用 bench_utils.hpp::verify()/verify_scalar() 把算子输出与 host C 参考逐元素比对,失败置 g_numeric_failure |
gfrun rc=0 且含 Reach the End of Benchmark 且 R2=0(R2≠0 即数值不匹配) |
| one-level-arch | res_check=on → 加 -DRES_CHECK -DENABLE_BINARY_OUTPUT -DCHK_DIR="compare/<test>",CC_LINK 置空并链 group_worker_runtime.o;运行时把算子二进制输出与 compare/<test>/ 金标准逐字节比对 |
同上(R2=0 表示金标准一致) |
- 固定
COMPILER_DIR(主 worktree)。multi_thread 与 fixp 协作(cooperative)模式均加-s softcore.multiThreadNum=4。单 ELF 90s 看门狗。共 492 个 res_check ELF。 - 常规回归里“PASS”只代表“模型没崩、跑到终点”;res_check 才查“结果对不对”。因此本轮 通过率(55.1%)显著低于常规回归(~81.7%)——多出的失败全属数值层问题。
| 范围 | ELF 数 | PASS | FAIL | 通过率 |
|---|---|---|---|---|
| microbenchmark | 398 | 195 | 203 | 49.0% |
| one-level-arch | 94 | 76 | 18 | 80.9% |
| 合计 | 492 | 271 | 221 | 55.1% |
| 算子族 | ELF | PASS | FAIL | 通过率 | 说明 |
|---|---|---|---|---|---|
| micro/vector | 127 | 6 | 121 | 4.7% | 系统性数值不匹配(见下 Bucket A) |
| micro/scalar | 124 | 68 | 56 | 54.8% | 42 数值 + 14 移位/SQRT 无 handler |
| micro/fixp | 122 | 116 | 6 | 95.1% | 4 协作 max-reduction 缺口 + 2 S4 零点 |
| micro/memory | 14 | 4 | 10 | 28.6% | tload/tstore/mgather/mscatter 往返失真 |
| micro/cube | 11 | 1 | 10 | 9.1% | TMATMUL 累加结果偏离 host 参考 |
| one-level/fa | 10 | 10 | 0 | 100% | 金标准全过 |
| one-level/matmul | 3 | 3 | 0 | 100% | 金标准全过 |
| one-level/multi_thread/matmul | 8 | 8 | 0 | 100% | 金标准全过 |
| one-level/multi_thread/normalization | 2 | 2 | 0 | 100% | 金标准全过 |
| one-level/multi_thread/reduction | 4 | 4 | 0 | 100% | 金标准全过 |
| one-level/deepseek | 21 | 16 | 5 | 76.2% | 5 个逻辑 tile 契约断言(模型侧) |
| one-level/multi_thread/fa | 7 | 5 | 2 | 71.4% | HIF8 rc=134 + MXFP4 tile-carrier |
| one-level/multi_thread/broadcast | 1 | 0 | 1 | 0% | raw tile spill 源形状不匹配 carrier |
| one-level/broadcast | 6 | 5 | 1 | 83.3% | 1 个 COPY 广播展开契约 |
| one-level/reduction | 6 | 5 | 1 | 83.3% | 1 个 TROWSUM 操作数契约 |
| one-level/concat | 4 | 3 | 1 | 75.0% | 1 个 scatter 日志截断/超时(待定) |
| one-level/control | 6 | 0 | 6 | 0% | hashtable_lookup tile-carrier 契约 |
| one-level/sort | 1 | 0 | 1 | 0% | topk 日志截断/超时(待定) |
| 其余 one-level 单/多线程族 | 15 | 15 | 0 | 100% | element_wise/gather/transpose/flashMLA + 多线程 concat·conv2d·gather·transpose·vec·element_wise 全过 |
合计编译 492 ELF(microbench 398 + one-level 94)。本轮为数值校验口径,FAIL 含 “数值不匹配”与“模型断言中止”两类;与常规功能回归的 FAIL 不可直接对比。
算子完整执行并打印 Reach the End of Benchmark,但 verify()/金标准比对报错。全部集中在
microbench(one-level 金标准比对几乎全过)。与精度容差无关:i32/i16 整型(精确算术,eps=0)
与 fp16/fp32 同等失败,证明不是浮点容差问题,而是模型侧结果本身不对。
| 算子族 | 数量 | 根因 |
|---|---|---|
| micro/vector | 114 | 元素级算术结果未落回输出缓冲:tadd/tsub/tmul(ref=3/1/2 非零)全失败,而 tand/trem(2&1=0、2%1=0)因 ref 恰为 0 与零初值 c 相等而伪通过;仅 tcvt(拷贝写回)真通过。dtype 无关(fp16/fp32/i32/i16 全失败) |
| micro/scalar | 42 | per-op 算术保真度缺口:同模板下 and 通过、add/sub/mul 失败,输入为非常量、verify_scalar 实比对,模型标量算术结果偏离 host 参考 |
| micro/cube | 10 | TMATMUL(fp16/fp32/bf16/i8/bias/acc 全变体)累加结果偏离 host 参考;唯一通过的是不需累加的变体 |
| micro/memory | 10 | tload/tstore/mgather/mscatter 的 load→tile→store 往返不保数据:加载到 tile 再写回 c 后,c 与源 a 不等 |
| micro/fixp | 2 | s_qf_s4/v_qf_s4:S4 量化带零点偏移,零输入下 check_zero_result 仍检出非零 D(该 smoke-test 不适用于带零点量化的测例,非真 bug) |
算子未跑到终点,gfrun 在执行中命中模型断言。这部分与常规功能回归的 FAIL 重合。
| 断言/现象 | 数量 | 算子族 | 根因 |
|---|---|---|---|
threadStatus.size() >= kCorePeCount(协作 TMATMUL 需 4 PE) |
4 | micro/fixp | shared_rowmax_init/shared_rowgroup_maxabs/shared_f16_groupmax/shared_s8_rowmax——协作+非 keep_acc 预量化+max 归约集合的已知工具链/模型缺口(单 PE 孪生通过),详见 fixp 源码 NOTE |
m_handlers.find(grp) != m_handlers.cend() |
21 | micro/scalar 14 + micro/vector 7 | 模型未注册移位与开方指令 handler:标量 sll/sra/srl(i32/i64)、sqrt(f64)与向量 tshl/tshr/trsqrt/tsqrt 全部 illegal instruction |
srcTile.size()==1 && dstTile.size()==1 && ...TileCarrier |
5 | one-level/control 4 + multi_thread/fa 1 | TEPL/COPY tile-carrier 契约:hashtable_lookup 的 tile 传送与 MXFP4 fa 的 tile 尺寸不满足契约 |
IsCompatibleLogicalTile / priorSources / IsCompatibleOperationDataTile |
5 | one-level/deepseek | deepseek group/mapping kernel 用到的 3 源逻辑 tile 形状/数据 tile 契约未满足 |
RawTileSourceFits(source, shape) |
3 | control 2 + multi_thread/broadcast 1 | raw tile spill 源形状不匹配 carrier |
broadcastShapeLegal(COPY 广播展开) |
1 | one-level/broadcast | 广播展开维度契约 |
illegal TROWSUM operand or descriptor |
1 | one-level/reduction | TROWSUM 操作数/descriptor 契约 |
| rc=134(abort) | 1 | multi_thread/fa | HIF8_VECFP32 运行时 abort |
concat_scatter(half, tM512)与 topk:日志被 400 行截断且无 Reach the End 标记、rc 无法解析,
疑为超时或截断致判据缺失(非数值/非断言)。需以更长日志复跑确认。
- 常规 gfrun 回归“PASS”≠ 结果正确。
micro/vector121/127 在功能回归里全部“PASS”,但 res_check 下 114 个数值不匹配——功能性模型把指令跑通了,结果却没写回/算错。res_check 是 唯一能挡住这类“假绿”的关卡,应纳入回归基线。 - 两大缺口可定位到模型侧:(a) 元素级算术/访存结果未正确落回内存(vector/cube/memory/scalar
数值桶);(b) 移位/SQRT 指令组未注册 handler(scalar/vector 功能桶)。两者均非 kernel 代码
缺陷——同一模板下
and/cvt通过、add/mul失败即可证。 - one-level 金标准保真度高:94 个里 76 过(80.9%),失败全是少量 kernel 命中 tile 契约断言 (hashtable/deepseek/broadcast/TROWSUM),属模型对个别 tile op 的支持边界,非数值漂移。
- fixp 协作模式:33 个 cooperative 模式须加
-s softcore.multiThreadNum=4(首轮漏配致 33 个 伪 FAIL,补跑后 29 翻转为 PASS、4 留作已记录缺口)。后续回归脚本对 fixp 协作模式应默认带 4-PE。 - 数值不匹配的 verify() 不打印逐元素差异(只置 R2=1),定位需离线比对。建议后续给
bench_utils.hpp::verify()加一行首个失配元素的expected/got打印,可大幅缩短排障路径。
提取方法:
res_check=on全量重编 → gfrun 逐 ELF 跑(multi_thread/fixp 协作加 4-PE)→ 按rc 与 R2 二分(rc=0&R2=1=数值;rc≠0=断言)→ 失配断言文本取每日志首行聚类。原始明细:/tmp/res_check_run/summary_corrected.tsv(elf / 类别 / 状态 / rc / note)。
当前验证基线:2026-09-18(566 个已编译 ELF 全量 gfrun 复测,本地代码含 fa_lowp 重构 + 新 fa 测例;fa 结果为陈旧对象事故修正后复测版); TileOP-API
697f5d8→3be8652(+11 提交,prefix-view 重载约束、B.ASSEMBLE WriterSizeCode 等);pto-spec9323e466→b541bbdd; gfrun 切到fix/gfrun-717-pto291-subview-orderingec5ee047(PTO #291 subview ordering 修复分支,含 PTO #311 分支合并); fa 86 ELF 53 PASS(unroll_gmma 15/15、kchains 32链 18/21 + 单链 18/21、fa_gmma_opt 1/1、fa_lowp_recip 1/2);matmul 30/31; 10 个回归全部模型侧同根因(normalization ×8 + reduction row ×2,validCol/physicalColLocal layout 断言,fix 分支 PTO #291 契约变化); matmul_quantize ×2 编译失败(远端 mxquant 重构破坏集成);fixp MX 家族 ×10 编译失败(TileOP 3be8652 契约加严)。 总 PASS 494,通过率 87.3%
| 组件 | 分支/版本 | Commit |
|---|---|---|
| PTO ISA 规范 / pto-spec | main(v0.58.6 + 已接受修正案) |
b541bbdd |
| gfrun / SuperScalarModel-asl | fix/gfrun-717-pto291-subview-ordering |
ec5ee047 |
| llvm-project | dev-llvm15_56 |
1037cc1cd |
| Linx-TileOP-API | main |
3be8652 |
| linx-toolchain-build | main |
e6a31ef |
| SuperNPUBench | main |
2f272c2e |
编译器按 AGENTS.md 指定用主 linx-toolchain-build worktree:clang 15.0.4(clang hash 1037cc1cd31c80e5493ffd7851f7b35a2f8dd79c),target linx64v5-unknown-linux-musl。ISA 规范 PTO v0.58.6 + 已接受修正案(pto-spec b541bbdd,v0.58.6.0-35,本轮新增 #322 packed FP4/E6M2 TCVT 语义、#325 relaxed-consistency 内存模型、#329 E6M2 TCVT profile 路由)。TileOP-API 697f5d8→**3be8652**(linxisa-v0.58.0-194,+11:3be8652 prefix-view 重载约束 #154、bcaeddf B.ASSEMBLE WriterSizeCode #145、8e7a6b9 跨 TEPL 源消费 prefix views #147/#150、205cea8 Shared subview 父恢复 #148、a5f1136 Vec CUBE tile 父 #141、977547d 原子 RMW gather/scatter #149 等)。gfrun 用 SuperScalarModel-asl worktree,分支从 feat/gfrun-pto-311-cube-reduction-geometry(b00ed95c)切到 fix/gfrun-717-pto291-subview-ordering ec5ee047(该分支已合并 PTO #311 分支 #677,含 28 个修复提交:Local layout 契约适配、B.ASSEMBLE parent/RegSrc 建模、行归约物理列保持、PTO #291 前向适配器等;落后模型 main 22 提交——MGATHER_MASK/PMU/swimlane 类,与本轮无关)。本地代码算子:fa_lowp 重构(TMULS 直接消费 prefix view、M32 E8M0 scale、recip 路径开关)+ 新增 fa_gmma_opt / fa_gmma_dynamic / fa_lowp_recip 测例(2f272c2e)。执行:gfrun -f <elf>(无 -t,ERROR 级日志 ~1–2KB/ELF),kernel 算子加 -s softcore.multiThreadNum=4,单 ELF 420s 超时 + 2GB 早停,零日志落盘(内存 64KB 滚动窗口分类)。PASS = Reach the End of Benchmark + R2 = 0。
1. TileOP-API 697f5d8→3be8652(+11 提交,本轮核心变化)
- prefix-view 重载约束到 reduction-prefix views(#154)、跨 TEPL 源族消费 reduction-prefix views(#147/#150)、B.ASSEMBLE reduction 会话 WriterSizeCode(#145)、Shared/unit-correct subview 父恢复(#148)、Vec CUBE tile 作 subview 父(#141)。
- 编译面影响:fixp MX 家族 ×10(mx/mx_s8/gemv_mx 系列)不再编译(MX scale tile 契约断言:E8M0 Vec tile 载体形状/CUBE_M 布局);matmul_quantize ×2 编译失败叠加——
mxquant::InputTile/BfFullTile被远端 mxquant 重构(2b2a37f)改名,集成待修。 - matmul compile.all 的
set -euo pipefail使 quantize 失败级联跳过 hif4_l1(单独验证可编译并纳入回归)。
2. gfrun 切换 fix/gfrun-717-pto291-subview-ordering
- PTO #291 subview ordering 修复分支(已并入 PTO #311):Local layout 契约、B.ASSEMBLE 建模、行归约物理列等 28 提交。
- 正面:fa_2d_unroll_gmma 保持 15/15 全过;fa_fixpipe 失败原因从 "PTO #311 destinationShape requiredBytes" 变为 "!SelectsPto291CubeMLayout(PTO #291 direct CUBE-M layout)"——断言类别迁移,反映 fixpipe 走上了新的 CUBE-M 直连路径检查。
- 负面(10 个回归,全部模型侧同根因):normalization ×8 + reduction reducesum/reducemax_row ×2,全部
validCol/physicalCol >= validColLocal tile descriptor 断言——fix 分支 PTO #291 Local layout 契约变化与 TileOP 3be8652 新编码的组合效应。已核对模型 main 缺失的 22 提交(MGATHER_MASK/PMU/swimlane)与本回归无关。 - mega_moe_sim(非 mt)>2GB FAIL→PASS:无 trace 模式下可在时限内跑完。
3. 本地 fa 改动验证(2f272c2e + 修正提交)
- fa_lowp 重构(prefix 直接消费、M32 E8M0 scale carrier、recip 开关)编译通过;运行 FAIL(模型 TCVT srcTile descriptor 断言,与 kchains MXFP4 同类)。
- fa_gmma_opt 新测例 1/1 PASS;fa_lowp_recip 1/2:Sq256/Skv256 PASS(TRECIP 路径),Sq128/Skv8192 FAIL(模型 B.ASSEMBLE descriptor 契约——深 KV 循环 512 次 TASSEMBLE,issue #717 修复区);fa_gmma_dynamic 编译器在 Simple Register Coalescing 崩溃,暂不入矩阵(compile.all 注释记录)。
- fa_lowp_recip 构建事故与修复:fa_lowp 与 fa_lowp_recip 曾共用
fa_lowp.o,Makefile.common 的 clean 按 TESTCASE 名删对象(${TESTCASE}.o),对象名 ≠ TESTCASE 名时 clean 失效、make 又不感知 -D 宏变化 → 首轮回归中的 "fa_lowp_recip" 实为无 recip 宏的 TSUB 路径代码(假 FAIL)。修复:独立编译单元src/fa_lowp_recip.cpp(对象名回归 TESTCASE 名,clean 重新生效),两 shape 干净复测确认。 - kchains 默认 PVChainK 32→Tk(单链/每 KV 块一条链,
fa_gmma_kchains.cpp+ Makefile),32 链形式经 compile.all 显式 PVChainK=32 pass 保留。
4. fa 矩阵口径(沿 09-16 之后的调整)
- Sq256/Skv256 三组已移除(
eb37e16a);本轮 fa 86 ELF:Sq1024 / Sq128-Skv8192 / Tk256(Sq256-Skv512) 三组 × 5 模式 × {unroll, fixpipe, subview} + kchains(单链 + 32 链两配置)×6 模式 + lowp 1 + lowp_recip 2(Sq256 基线 + Sq128/Skv8192 长序列)+ gmma_opt 1。
| 范围 | ELF 数 | PASS | FAIL | TIMEOUT | 通过率 |
|---|---|---|---|---|---|
| microbenchmark | 414 | 394 | 20 | 0 | 95.2% |
| one-level-arch (kernel) | 128 | 92 | 36 | 0 | 71.9% |
| solution | 24 | 8 | 16 | 0 | 33.3% |
| 合计 | 566 | 494 | 72 | 0 | 87.3% |
vs 09-16(脚本化逐名对比):−14 ELF(580→566),+11 PASS(483→494),−25 FAIL(97→72),通过率 83.3%→87.3%。同名 521:PASS→FAIL ×10(normalization ×8 + reduction row ×2,模型侧 validCol 断言);FAIL→PASS ×1(mega_moe_sim 非 mt)。仅 09-16 有 59(P18/F41):fa Sq256/Skv256 组 47、matmul_quantize ×2(mxquant 重构)、fixp MX ×10(全为 09-16 运行 FAIL)。仅 09-18 有 45(P38/F7):kchains 单链 21 + 32 链重配 21(P18/F3 各)、fa_gmma_opt 1、fa_lowp_recip 2(P1/F1)。
| 算子族 | ELF | PASS | FAIL | 通过率 | 说明 |
|---|---|---|---|---|---|
| micro/scalar | 124 | 124 | 0 | 100% | 全过 |
| micro/vector | 170 | 152 | 18 | 89.4% | compare/select TSTORE(与 09-16 一致) |
| micro/fixp | 86 | 84 | 2 | 97.7% | MX 家族 ×10 不再编译(TileOP 3be8652 契约);运行 FAIL 仅余 2(09-16 为 12) |
| micro/memory + cube | 34 | 34 | 0 | 100% | 全过 |
| one-level/fa | 86 | 53 | 33 | 61.6% | unroll_gmma 15/15;kchains 单链 18/21 + 32 链 18/21(MXFP4 ×3×2 模型 TCVT);gmma_opt 1/1(新);lowp_recip 1/2(Sq256 PASS / 长序列 B.ASSEMBLE);fixpipe 0/15(PTO #291 CUBE-M);subview 0/10(TROWMAX);lowp 0/1(TCVT) |
| one-level/matmul | 31 | 30 | 1 | 96.8% | hif4_l1 FAIL(RawTileSourceFits,同 09-16);quantize ×2 编译失败(mxquant 重构集成断裂) |
| one-level/reduction | 4 | 2 | 2 | 50% | 回归:reducesum/reducemax_row FAIL(validCol,模型侧);cumsum/reduceprod 过 |
| one-level/{broadcast,concat,conv2d,element_wise,gather,vec} | 7 | 7 | 0 | 100% | 全过 |
| solution/normalization | 8 | 0 | 8 | 0% | 回归:全灭(validCol/physicalCol Local layout 断言,模型侧) |
| solution/{moe_dispatch,moe_combine} | 4 | 4 | 0 | 100% | 全过 |
| solution/mega_moe | 2 | 2 | 0 | 100% | 修复:非 mt 变体无 trace 下跑通 |
| solution/{group_token_old,group_token_vec} | 4 | 2 | 2 | 50% | mt 变体 PASS;非 mt rc=0 无结束标记(~1KB 输出即退,行为变化待查) |
| solution/{gather_v2,view_copy} | 6 | 0 | 6 | 0% | R2=1(09-14 起持续) |
编译产出 544 ELF(414 micro + 106 kernel + 24 solution)。编译失败:
- matmul_quantize ×2(远端 mxquant 重构
2b2a37f改名mxquant::InputTile/BfFullTile,matmul_quantize.hpp:79/182 引用断裂;叠加 TileOP 新增 TCVT CUBE-source 约束)——SuperNPUBench 侧集成待修。 - fixp MX 家族 ×10(TileOP 3be8652 契约加严:E8M0 scale tile Vec 载体/CUBE_M 布局断言)。
- fa_gmma_dynamic(编译器 Simple Register Coalescing 崩溃,已记录,未入矩阵)。
- micro 既有 4 例(Bias CUBE_M ×3、MGATHER_CAS 传输宽度 ×1)、fa HIF4/MXFP4/FP8_VECBF16 低精度模式(TileOP 契约)、subview Tk=256(LinxV5 后端 64KB 帧上限崩溃
RegSize >= 512 && RegSize <= 64*1024)——与 09-16 相同。
| 失败原因 | 数量 | 范围 | 说明 |
|---|---|---|---|
| PTO #291 direct CUBE-M layout | 15 | one-level/fa | fa_fixpipe 全模式(失败类别从 09-16 的 PTO #311 destinationShape 迁移) |
| illegal TROWMAX operand | 10 | one-level/fa | fa_subview(持续) |
| validCol/physicalCol Local descriptor | 10 | solution + kernel | 新增回归:normalization ×8 + reduction row ×2,模型 fix 分支 PTO #291 契约 |
| vector compare/select TSTORE | 18 | micro/vector | 09-10 起持续 |
| TCVT srcTile descriptor(gfrunPto291Tcvt) | 7 | one-level/fa | kchains MXFP4 ×6(单链 3 + 32 链 3)+ fa_lowp ×1(模型侧;注意:U8→E8M0 reinterpret TCVT 类型等价待规范/模型确认,pto-spec #322/#329 区域) |
| illegal B.ASSEMBLE descriptor | 1 | one-level/fa | lowp_recip Sq128/Skv8192(深 KV 循环 512 次 TASSEMBLE,模型侧 issue #717 修复区) |
| R2=1 result mismatch | 6 | solution | gather_v2 ×3 + view_copy ×3(09-14 起持续) |
| RawTileSourceFits | 1 | one-level/matmul | matmul_hif4_l1_quantize(持续) |
| rc=0 无结束标记 | 2 | solution | group_token_old/vec 非 mt(~1KB 输出即退,行为变化,待模型侧确认) |
| fixp 残余 | 2 | micro/fixp | 09-16 为 12,10 个 MX 转为编译失败 |
- 回归主线 = 模型 fix 分支验证:gfrun
fix/gfrun-717-pto291-subview-ordering是为了修 PTO #291 subview ordering;10 个 normalization/reduction 回归全部是其 Local layout 契约变化所致(同根因),fa_fixpipe 断言类别迁移也源于此——这些是修复分支的已知工作面,非算子代码回归。 - TileOP 3be8652 双刃:fa_2d_unroll_gmma / kchains 主路径全部通过(prefix-view 新契约验证 OK);fixp MX ×10 与 matmul_quantize ×2 编译面受损(后者是 mxquant 重构集成断裂,SuperNPUBench 侧需跟进)。
- 本地 fa 代码零回归落地:unroll_gmma 15/15、kchains 双配置 36/42(仅模型侧 MXFP4)、fa_gmma_opt 新测例即过、fa_lowp_recip Sq256 PASS;fa_lowp(TCVT U8→E8M0 reinterpret)与 lowp_recip 长序列(B.ASSEMBLE 深循环会话)的 FAIL 均为模型侧。
- fa_lowp_recip 陈旧对象事故:首轮回归的 lowp_recip FAIL 是共享
fa_lowp.o伪影(clean 按 TESTCASE 名删对象失效 + make 不感知 -D 变化),已用独立 TU 修复并干净复测;仅此一个 ELF 受影响,其余多配置构建对象名与 TESTCASE 名一致不受影响。 - mega_moe_sim 非 mt 在无 trace 模式下修复(>2GB 输出问题是 trace 产物放大)。
- group_token 非 mt 双变体出现 rc=0 无标记早退(新行为,需模型侧确认)。
- micro 通过率 92.9%→95.2%(fixp MX ×10 转编译失败,运行 FAIL 30→20)。
| 类别 | 09-16 (ELF,P,F) | 09-18 (ELF,P,F) | 变化 |
|---|---|---|---|
| microbenchmark | 424, 394, 30 | 414, 394, 20 | −10 ELF(fixp MX 编译失败,其 09-16 全为运行 FAIL)→ FAIL −10 |
| one-level/fa | 88, 32, 56 | 86, 53, 33 | Sq256/Skv256 组移除 −47(其中 kchains 旧 Sq256 基线 2);kchains 新增 42(单链 21 + 32 链 21,P36/F6);gmma_opt +1 P;lowp_recip +2(P1/F1);同名 41 持平(unroll 15/fixpipe 15/subview 10/lowp 1) |
| one-level/matmul | 33, 31, 2 | 31, 30, 1 | quantize ×2 编译失败(−1 P −1 F) |
| one-level/reduction | 4, 4, 0 | 4, 2, 2 | 回归 ×2(validCol,模型侧) |
| one-level 其他 kernel | 7, 7, 0 | 7, 7, 0 | 持平 |
| solution | 24, 15, 9 | 24, 8, 16 | 回归 ×8(normalization,模型侧)+ 修复 ×1(mega_moe_sim)− 行为变化 ×2(group_token 非 mt) |
| 合计 | 580, 483, 97 | 566, 494, 72 | 同名 521:PASS→FAIL ×10(模型侧);FAIL→PASS ×1(mega_moe_sim);移除 59(P18/F41);新增 45(P38/F7) |
早期每日基线仅保留环境版本与总量,供复现与趋势对比;完整分类/失败明细已归档。
| 日期 | gfrun (SuperScalarModel) | llvm / TileOP-API | 工具链 | ELF | PASS | FAIL | T/O | 通过率 | 关键变化 |
|---|---|---|---|---|---|---|---|---|---|
| 09-18 | asl fix/gfrun-717-pto291-subview-ordering ec5ee047;pto-spec b541bbdd(v0.58.6+修正案) |
1037cc1cd / 3be8652 |
AGENTS.md 主 worktree(PTO v0.58.6 + 已接受修正案) | 544 | 475 | 69 | 0 | 87.3% | TileOP 697f5d8→3be8652(+11,prefix-view 契约);gfrun 切 PTO #291 fix 分支;本地 fa_lowp 重构 + fa_gmma_opt/gmma_dynamic/lowp_recip 新测例(2f272c2e);fa 34 PASS(unroll 15/15、gmma_opt 1/1 新增即过);10 回归全模型侧(normalization ×8 + reduction row ×2,validCol Local layout 断言);matmul_quantize ×2 编译失败(mxquant 重构集成断裂);fixp MX ×10 编译失败(TileOP 契约加严);mega_moe_sim 非 mt 修复 |
| 09-16 | asl feat/gfrun-pto-311-cube-reduction-geometry b00ed95c;pto-spec 86f46079(v0.58.6+修正案) |
1037cc1cd / 697f5d8 |
AGENTS.md 主 worktree(PTO v0.58.6 + 已接受修正案) | 580 | 483 | 97 | 0 | 83.3% | gfrun B.ASSEMBLE 支持(b00ed95c)→ HIF4/HIF8 18 ELF 首次纳入(7 PASS);fa Shared-B TransB 契约修正(1f4425d)fa 32/32 PASS 零回归;单线程套件退役(−31 ELF,重构 79e492a);matmul_quantize_FP8_ASM1 被 B.ASSEMBLE 检查拦截(PASS→FAIL);concat_scatter 420s 直接 PASS |
| 09-15 | asl feat/gfrun-pto-311-cube-reduction-geometry 10dd099f |
1037cc1cd / 697f5d8 |
AGENTS.md 主 worktree(PTO v0.58.6) | 593 | 500 | 93 | 0 | 84.3% | gfrun 分支切换(PTO #311 CUBE reduction geometry + binary reduction-prefix subview 修复);TileOP fix/issue-138-reduction-prefix-subview;fa_2d_unroll_gmma TCVT→TREDUCEPREFIXVIEW 零拷贝行归约;validCol TSTORE 28→1 FAIL(gfrun 修复);fa_fixpipe 新增 24 FAIL(PTO #311 destinationShape)+ fa_subview 20 FAIL(TROWMAX);mt/fa compile.all 扩展 38→71 ELF(+fa_gmma_kchains ×2);normalization +8(全 PASS);dynamic_mx_quant 移除(−14);reduction 4→0 FAIL;fixp 16→12 FAIL |
| 09-14 | asl fix/gfrun-shared-tmatmul-layout-257 ad972d21 |
4a3e0bdb5 / 987d034 |
AGENTS.md 主 worktree(PTO v0.58.6) | 579 | 486 | 93 | 0 | 83.9% | gfrun 分支切换(Shared TMATMUL layout);TileOP 加严矩阵 shape 校验→单线程 fa/matmul 19 ELF 编译失败;新增 fa_gmma_kchains(+2)、matmul_blockM/kchains/lowp(+19)、dynamic_mx_quant(+14);gather_v2/view_copy 回归 R2=1(−6 PASS);输出截断 500MB→2GB;compile.all set -euo→set -u |
| 09-11 | asl codex/gfrun-pto-0586-asl e7d883c9 |
0a141cbd2 / e93ef98 |
AGENTS.md 主 worktree(PTO v0.58.6) | 569 | 487 | 82 | 0 | 85.6% | 编译器更新(llvm B.DATR CCTRL 消歧 + TileOP reinterpret_tile);全量重编译 584 ELF;fixp +2 PASS(18→16 FAIL);新增 solution matmul_test ×3(FAIL);dynamic_mx_quant compile FAIL;A16W4 matmul ×3 全部独立验证 PASS(1.07–1.36GB);group_token_old_mt 独立验证 PASS |
| 09-10 | asl codex/gfrun-pto-0586-asl e7d883c9 |
553b08045 / b8669ce |
AGENTS.md 主 worktree(PTO v0.58.6) | 566 | 484 | 82 | 0 | 85.5% | gfrun 切换 asl worktree;multi_thread/fa 编译扩展(5→36,set -e 移除);fa_subview 12 PASS;fa_2d_unroll_gmma/fa_fixpipe 24 FAIL(2048B 行归约限制);vector +20 FAIL(compare/select TSTORE);HIF4/HIF8 排除;fa_2d_unroll_gmma_subview 新算子;solution 树 16 ELF(11 PASS / 5 FAIL) |
| 09-08 | fix/issue-558 07e9c661 |
553b08045 / b8669ce |
AGENTS.md 主 worktree(PTO v0.58.5) | 470 | 438 | 32 | 0 | 93.2% | FA/matmul CUBE 迁移(matmul +13 编译);HIF8 convert 修复;MX scale 对齐 PTO 暴露 HIF4 断言(fixp +14 FAIL);deepseek 移出 compile_all;solution 排除;−40 PASS vs 09-04 |
| 09-04 | codex bc7fae00 |
1ae4ee39 / 804eb03 |
AGENTS.md 主 worktree(CUBE 强制) | 496 | 478 | 18 | 0 | 96.4% | CUBE subview 行归约 + fixpipe GroupMax/RowMaxIn 修复(fa/flashMLA/reduction +14、fixp +98);deepseek CUBE 编译修复;mt 新增 8 算子;+129 PASS / 0 回归 vs 08-27 |
| 08-27 | codex d8903938 |
adcb8794 / f94bc12 |
AGENTS.md 主 worktree(CUBE 强制) | 427 | 349 | 78 | 0 | 81.7% | CUBE cell-layout 强制(matmul/deepseek 编译回归);dataType 断言回归(fa/flashMLA/reduction −14);cube +9、mt/matmul lowp +5;净 −17 vs 08-23 |
| 08-23 | exp a5dca25a |
611105f2b / a795b973020d |
blessed-latest(ADR 0069) | 437 | 366 | 69 | 2 | 83.8% | blessed 编译器+exp 模型正确配对;+27 PASS(fa 全过、mt/matmul lowp 部分);13 编译失败 |
| 08-21 | main 7b691d4d |
a84c4d10a / ffa257738f |
toolchain-build(32KB shared) | 437 | 339 | 98 | 0 | 77.6% | 老 compiler+main 模型;multi_thread 大 tile 首编(bf16/fp16/lowp 运行 FAIL) |
| 08-20 | exp 5a64c34d |
b945a5d0 / c02dae65 |
blessed-latest | 433 | 344 | 89 | 0 | 79.4% | 零步幅 raw tile spill 修复 4 例;fa sfa×2 编译回归(TMATMUL 形状契约) |
| 08-19 | 01f9ec10 |
86959776b / 8b2ee78 |
— | 434 | 341 | 92 | 1 | 78.6% | 4 例 broadcast/GELU FAIL→PASS;mt/matmul 1 PASS→FAIL |
| 08-18 | a68dba29 |
— / 8b2ee78(TileDType 修复) |
— | 429 | 321 | 108 | 2 | 74.8% | 首次全量基线;fa/flashMLA/reduction 由 FAIL 恢复;fixp 27→4(TileDType 暴露契约偏差) |
跨版本要点:
- 09-18 TileOP 3be8652 + PTO #291 fix 分支验证 + 本地 fa 变体:TileOP
697f5d8→3be8652(+11:prefix-view 重载约束 #154、B.ASSEMBLE WriterSizeCode #145、跨 TEPL prefix views #147/#150、subview 父修复 #148/#141)。gfrun 切fix/gfrun-717-pto291-subview-orderingec5ee047(已并入 PTO #311 分支)。本地 fa_lowp 重构 + fa_gmma_opt(新测例 1/1 PASS)/fa_gmma_dynamic(编译器崩溃未入矩阵)/fa_lowp_recip(2f272c2e)。fa_2d_unroll_gmma 15/15、kchains 18/21(MXFP4 ×3 模型 TCVT)零代码回归;fa_fixpipe 失败类别从 PTO #311 destinationShape 迁移为 PTO #291 CUBE-M。10 个 PASS→FAIL 全部模型侧同根因(normalization ×8 + reduction reducesum/reducemax_row ×2,validCol/physicalColLocal descriptor 断言——fix 分支 Local layout 契约变化;已排除模型 main 缺失 22 提交的影响)。mega_moe_sim 非 mt 修复(无 trace 模式可跑完)。编译面:matmul_quantize ×2 挂于远端 mxquant 重构的类型改名(集成待修),fixp MX ×10 挂于 TileOP 契约加严(其 09-16 运行时本就 FAIL,micro 通过率 92.9%→95.2%)。 - 09-16 HIF4/HIF8 解锁 + fa TransB 契约修正 + 单线程退役:gfrun
10dd099f→b00ed95c(model Local B.ASSEMBLE parent references),09-10 起被排除的 18 个 HIF4/HIF8 ELF 首次纳入回归:7 PASS(fa_2d_unroll_gmma HIF8 ×6、matmul_lowp_HIF4X2 ×1)/ 11 FAIL(fa_fixpipe HIF8 ×6、fa_subview HIF8 ×5,失败原因与非 HIF 版本相同)。SuperNPUBench1f4425d修正 fa Shared-B TransB 存储契约(TransB=0 声明物理 [N,K];QK 不再 transpose_b、kchains PV 改 TransB=0),fa_2d_unroll_gmma 30/30、fa_gmma_kchains 2/2 全 PASS 零回归。单线程套件随 single_thread 退役移出编译(−31 ELF / −23 PASS / −8 FAIL,含 hashtable_lookup ×6、topk、broadcast vec_07 half)。matmul_quantize_FP8_ASM1 被 gfrun 新增 B.ASSEMBLE descriptor 检查拦截(PASS→FAIL)。基线口径变化:通过率 84.3%→83.3% 主要由 −31/+18 口径贡献;可比集合与 09-15 完全一致。 - 09-15 gfrun PTO #311 CUBE reduction + TileOP zero-copy prefix views:gfrun 从
fix/gfrun-shared-tmatmul-layout-257(ad972d21) 切换到feat/gfrun-pto-311-cube-reduction-geometry(10dd099f,PTO #311 CUBE reduction geometry 适配 + binary reduction-prefix subview 修复)。TileOP-API987d034→697f5d8(fix/issue-138-reduction-prefix-subview,zero-copy reduction prefix views)。fa_2d_unroll_gmma 从 TCVT tile 拷贝改为 TREDUCEPREFIXVIEW 零拷贝行归约 prefix view(统一 TMAX、TMUL+TADD 替代 TFMA),24/24 PASS。gfrun 修复 validCol TSTORE 断言(28→1 FAIL,09-14 fa_2d_unroll_gmma + fa_fixpipe 24 FAIL → 09-15 仅 fa_lowp MXFP4 1 FAIL),reduction validCol/TROWSUM 全修复(4→0 FAIL)。但 gfrun 新增 PTO #311 destinationShape 断言→ fa_fixpipe 24 FAIL(inst->dsts[0]->size >= destinationShape.requiredBytes),fa_subview 20 FAIL(illegal TROWMAX operand)。multi_thread/fa compile.all 大幅扩展 38→71 ELF(6 config × 8 mode × 3 case + fa_gmma_kchains ×2),fa_2d_unroll_gmma 24 PASS、fa_gmma_kchains 2 PASS(新 config 全过)。新增 normalization ×8(全 PASS)、matmul_quantize ×2(PASS)。dynamic_mx_quant 移除(−14 ELF)。fixp 改善(16→12 FAIL)。net: 486→500 PASS,93→93 FAIL,83.9%→84.3%。 - 09-14 gfrun 分支切换 + TileOP 加严校验:gfrun 从
codex/gfrun-pto-0586-asl(e7d883c9) 切换到fix/gfrun-shared-tmatmul-layout-257(ad972d21),Shared TMATMUL layout 适配。TileOP-APIe93ef98→987d034加严矩阵 shape 校验(AValidCols==BValidRows、D valid shape、MX ScaleB shape)→ 单线程 fa_2d_unroll/sfa ×10 + matmul MASK_FP16/FP8/A16W4 ×9 编译失败(09-11 全 PASS,仅 MASK_FP32 ×3 + fa_softmax_pto ×2 存活)。gfrun 分支切换致 solution gather_v2 ×3 + view_copy ×3 回归 R2=1(结果不匹配)。新增 fa_gmma_kchains(+2 PASS)、matmul_blockM/kchains/lowp_blockM(+19 PASS)、dynamic_mx_quant(+14,2 PASS / 12 FAIL)。输出截断 500MB→2GB,A16W4/concat_scatter/group_token_old_mt 不再需独立验证。compile.allset -euo pipefail→set -u(HIF4 失败不再阻塞后续变体)。net: 487→486 PASS,82→93 FAIL,85.6%→83.9%。 - 09-11 编译器更新:llvm-project
553b08045→0a141cbd2(B.DATR CCTRL union 消歧,PTO-ISA #236),Linx-TileOP-APIb8669ce→e93ef98(reinterpret_tile 文档 + 回归 fixture)。全量重编译 584 ELF。fixp +2 PASS(MX scale dataType 断言 18→16 FAIL,编译器修复)。新增 solution matmul_test ×3(输出 >500MB FAIL,疑似大输出/死循环)。dynamic_mx_quant 编译失败(09-10 为 FAIL,09-11 排除)。A16W4 matmul ×3 因 500MB 输出截断初始 FAIL/TIMEOUT,独立验证全部 PASS(1.07–1.36GB 输出,09-10 均 PASS)。group_token_old_mt 独立验证 PASS(662MB 输出,500MB 截断误判 FAIL)。gfrun 同 09-10(asle7d883c9),无 gfrun 侧变化。 - 09-10 gfrun 切换 asl worktree:gfrun 从
fix/issue-558-fp4-rne-zero(07e9c661) 切换到codex/gfrun-pto-0586-asl(e7d883c9),PTO v0.58.5→v0.58.6。asl worktree 强制 PTO v0.58 行归约 source ≤2048 字节限制 → fa_2d_unroll_gmma/fa_fixpipe 24 FAIL(main gfrun 不强制此限制,09-08 全 PASS);fa_subview 用 TPARTVIEW 分块规避,12/12 PASS。vector compare/select TSTORE 断言 +20 FAIL(asl gfrun 行为差异)。multi_thread/fa compile.all 移除 set -e → 5→36 ELF。gfsim 不支持 B.SUBVIEW 指令,fa_2d_unroll_gmma_subview 无法获取时序数据。solution 树 16 ELF 纳入验证(11 PASS / 5 FAIL——4 例 gfrun 超时疑似算子无限循环、1 例 validCol 断言)。 - 09-08 MX scale 对齐 PTO 暴露 HIF4 断言:gfrun
970ce7afMX scale 处理对齐 PTO 后,HIF4 MX scale dataType 断言在 fixp(+14 FAIL)/ matmul(+4)/ fa(+1)暴露——09-04 这些全 PASS。叠加 fixp shared 15 例编译失败(TileOP B.DATR/PreQuant 契约)→ fixp 118→89 PASS(−29)。FA/matmul CUBE 迁移(334737e)正面抵消:matmul +13 编译 / +9 PASS。 - 09-08 HIF8 convert 修复:gfrun
24d26eeb实现 HIF8 tile 转换 → multi_thread/fa HIF8 FAIL→PASS(09-04.fs→.hifbconvert 未注册消除)。但 FP8_VECBF16 编译失败(TileOP dtype 断言)+ set -e 级联 → mt/fa 7→5 ELF。 - 09-08 deepseek 移出 compile_all.sh:MC2 算子重构进 solution 树,deepseek 21 ELF 不在本轮范围(−17 PASS / −4 FAIL)。solution 树 15 ELF 本轮排除(用户指定)。
- 09-04 CUBE subview 行归约 + fixpipe 修复:gfrun
bc7fae00修复 CUBE subview 行归约 → fa/flashMLA/reduction 全恢复(+14);fixpipe GroupMax/RowMaxIn → fixp 43→4 FAIL(+98 PASS)。与 08-27 单一变量(仅版本更新,编译器 worktree 不变),+129 PASS / 0 回归,通过率 81.7%→96.4%。 - ADR 0069 编码配对(08-21 ↔ 08-23):版本匹配则高 PASS,错位则骤降。08-21 老 compiler+main 模型(均无 ADR 0069)= 匹配 → 339P;08-23 blessed+exp(均有 ADR 0069)= 匹配 → 366P;而 blessed compiler+main 模型(编译器领先、模型落后)= 错位 → 仅 124P(262 个
reserved/deleted TEPL selector:store 的 SizeCode=0 被旧模型误读为 0B 目的)。 - 08-27 切回 AGENTS.md 主 worktree(非 blessed-latest):gfrun codex
d8903938、TileOPf94bc12(CUBE cell-layout 强制)。与 08-23 非单一变量对比;09-04 在此基础上仅版本更新(无 worktree 切换),+129 PASS / 0 回归。 - 持续模型侧限制(跨基线不变):fixp MX scale dataType 断言(09-08 起 18→16→12 FAIL,09-15 部分修复后持平)、vector compare/select TSTORE(18 FAIL,09-10 起)、fa_fixpipe PTO #311 destinationShape(24→30 FAIL,含 HIF8)、fa_subview TROWMAX(20→25 FAIL,含 HIF8)。gather_v2/view_copy R2=1(6 FAIL,09-14 gfrun 分支切换致回归,持续)。09-16 新增:matmul_quantize_FP8_ASM1 B.ASSEMBLE descriptor(1 FAIL)。输出 >2GB(3 ELF:group_token_old/group_token_vec 非 mt + mega_moe_sim,疑似死循环/大输出;单线程 control/sort/topk 已随 single_thread 退役,hashtable_lookup ×6 / broadcast vec_07 half / topk 不再在编译范围)。