Skip to content

SuperNPUBench ops-20260922

Choose a tag to compare

@lvhao7896 lvhao7896 released this 22 Sep 04:38
· 64 commits to main since this release

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。