SuperNPUBench ops-20260922
打包政策:不设 gfrun 门禁——所有编译产出的 ELF 直接入包。本版为拉取远端最新 main 后的干净全量重编译(含 matmul S1-S6 性能矩阵),已移除构建后被删除算子(fa_subview)的 ELF,并按 issue #192 仅排除两个具体测例(fa 2d_unroll / kchains 的 Sq256/Skv512/Tk256 FP32 死锁变体),不设容量门禁;09-23 增补 4 个 solution 套件:quant_sparse_flash_mla(QSMLA,5 模式 HIF8 自足用例)、matmul_test(动态 shape fp16 GEMM,单 PE ×7 + 4-PE mt ×2)、quant_batch_matmul_test(mxfp4_mt + hif4)、qli(MSD radix-select TopK ×4 变体)——全部 gfrun 抽检 PASS。
验证环境
| 组件 |
分支/版本 |
Commit |
| PTO ISA 规范 / pto-spec |
main(v0.58.6 + 已接受修正案) |
b541bbdd |
| llvm-project |
dev-llvm15_56 |
1037cc1cd |
| Linx-TileOP-API |
main |
3be8652 |
| linx-toolchain-build |
main |
e6a31ef |
| SuperNPUBench |
main |
e74884e1(构建基线;后续 9fd23139/6c97c170 等重构已提交,见下) |
- 编译器:clang 15.0.4,target
linx64v5-unknown-linux-musl
- 构建基线含本地 matmul 收敛与 S1-S6 矩阵改动(现已提交为
9fd23139 matmul 精简、6c97c170 fa 模式扩展等)
- 本版移除的已删除算子:fa_subview ×15(kernel + 测试已在
6c97c170 删除);fa_2d_unroll_gmma_subview、matmul_kchains/mx/quantize/blockM 系在构建前已删除(本来就不在包内)
- fa 套件已迁移 Cube* 模式命名:CubeFP32/CubeBF16/CubeFP8/CubeHIF8/CubeMXFP8_VectorFP32 + CubeMXFP4_VectorBF16;经典模式名不再产出
matmul S1-S6 性能矩阵(本版新增,来自 matmul_shared_S1_S6_pmu_optimized_20260922.xlsx)
| Shape |
M×N×K |
网格 |
| S1 |
2048×256×2048 |
shared FP32/BF16/FP16 × tN{64,128,256} × tK{64,128,256};lowp FP8/MXFP8/MXFP4 × tK{256,512,1024} |
| S2 |
128×256×7168 |
同上 |
| S3 |
256×128×7168 |
tN{64,128} × tK{64,128,256,512}(lowp tK{256,512,1024}) |
| S4 |
64×128×7168 |
同 S3 |
| S5 |
64×64×7168 |
tN{64} × tK{64,128,256,512}(lowp 同) |
| S6 |
128×256×32768 |
tN{64,128,256} × tK{64,128,256}(lowp tK{256,512,1024}) |
容量预检(SharedTile >256KiB 跳过):BUILT=238,SKIPPED_CAPACITY=26(与表格 264 行完全一致)。
已知编译失败(未产出 ELF,不在包内)
| 类别 |
原因 |
| fa 经典模式名(8 模式循环) |
内核已迁移 Cube* 模式体系 |
| fa_gmma_dynamic |
编译器 Simple Register Coalescing 崩溃(未入矩阵) |
| fa_gmma_opt |
不在当前 compile.all 矩阵 |
| micro/fixp MX 家族 ×10 |
TileOP MX scale tile 契约 |
| micro 既有 ×4 |
Bias CUBE_M ×3、MGATHER_CAS ×1 |
发布物
| 文件 |
内容 |
ELF 数 |
supernpubench_microbenchmark_20260922.tar.gz |
microbenchmark 全部编译 ELF + .elf.diss |
414 |
supernpubench_one-level_20260922.tar.gz |
one-level-arch 全部编译 ELF + .elf.diss(kernel 324 + solution 65) |
389 |
| 合计 |
|
803 |
包含全部编译产出(fa_subview 已删算子的 ELF 已移除;超容量测例见下)。每个 ELF 附带配对 .elf.diss。主要构成:matmul 252(S1-S6 表 238 + 基础/新测例 reuseA)、fa 64(含 fixpipe Tk256 FP32 回归)、normalization 14、MoE 套件各 3、quant_sparse_flash_mla 5(swa/hca/csa/ori_sparse/ori_cmp_sparse tadd_4pe,HIF8 嵌入式输入,gfrun 5/5 PASS)、matmul_test 9(对齐 + 尾部 + 非 2 幂 shape 单 PE ×7、4-PE mt ×2,gfrun 9/9 PASS)、quant_batch_matmul_test 2(mxfp4_mt + hif4;mxfp4 单 PE 变体因 TileOP MX ScaleA CUBE_M32 断言编译失败,套件注释已记录)、qli 4(FP8 radix-select TopK:Sq64/Skv128、Sq4/Skv2048、Sq4/Skv8192、tail Skv2080,gfrun 4/4 PASS;golden 生成依赖 python ml_dtypes 包)。
仍排除的 solution 目录(有意)
| 目录 |
原因 |
common |
共享校验脚本(check_gfrun.py 等),非算子 |
tileop-test |
TileOP 测试基础设施 |
quant |
已退役的 dynamic_mx_quant(09-15 移除,无 compile.all) |
issue #192 排除项(本版生效,无容量门禁)
按 review 意见撤掉全部 footprint 门禁,只排除 issue #192 报告的两个死锁变体:
| 被排除测例 |
2Q+K+V |
说明 |
fa_2d_unroll_gmma Sq256/Skv512/Tm128/Tk256 FP32 |
384KiB |
issue 复现 ELF 之一 |
fa_gmma_kchains Sq256/Skv512/Tm128/Tk256 FP32 |
384KiB |
issue 复现 ELF 之一 |
其余全部保留:fa 的 FP32 Tk128(2Q+K+V 恰 256KiB)、BF16/FP8/HIF8/MXFP8/MXFP4 全 shape、fixpipe Tk256 FP32;matmul 无任何门禁(S1-S6 全表 264 配置全部尝试,238 个编译成功;26 个超限配置由 matmul_shared.hpp 内核自带 static_assert(A+B ≤ 256KiB) 在编译期拒绝,属内核契约而非打包过滤)。fa 64 ELF、matmul 252 ELF。