@ rueenov11 看下是否测试方法有误。 库上现有950 SPMM 之前测试能达到1.0x A100。


@gcw_DmEcQNNx
感谢反馈。
已上库版本此前按整体平均性能比进行验收,整体平均性能比超过 1.0,满足当时的整体验收口径。历史结果中仍存在部分性能未通过的 case,尤其需要关注宽 N、低 nnz 场景。附件中为之前验收的结果。
c2fe0e6c047f4098b86513e3ef74919e.csv
验收主口径确认为一次 torch.sparse.addmm 内全部 NPU kernel 之和的中位数。
P-01 宽 N、低 nnz 场景是否需要 Cube/Vector 融合或调整 tiling,应以实际 profiling 结果为依据:请先补充行 nnz 分布、N/tile 切分、实际活跃核数和访存指标。
请针对性能未通过的 case 补充以下信息:
- 每行 nnz 的分布:min/P50/P90/P99/max、零行数,以及直方图或离散程度;
- N 与 tile 的切分方式:N/tile、行 tile、总 tile 数,以及各 tile 的实际工作量;
- 实际启动核数、活跃核数、每核处理的行数或 nnz,避免仅提供理论核数;
- profiler 时间线:预热和重复次数、各 kernel 时长、预处理/格式转换耗时、主 kernel 时间占比,以及带宽和核利用率指标。
上述信息可用于区分是 tile 数不足或负载不均导致的并行度问题,还是数据访问效率不足导致的访存瓶颈,并据此确定后续优化方向。


感谢确认验收主口径为一次 torch.sparse.addmm 内全部 NPU kernel 之和的中位数。
本帖 2026-08-18 所述 P-01 ~0.48×(~180μs)为早期 SIMT 基线;当前冻结 tip 50571b9 上已按 #166 口径复测通过:
【P-01 真 Cora · #166】PyG Planetoid Cora(2708×2708,nnz=10556;无额外 self-loop/对称化;coalesce;row-asc;I32 base0)
- 环境:Ascend 950PR hidevlab,Release build,CANN 9.1.0,torch 2.10.0+cpu / torch_npu 2.10.0.post4
- 命令:
python3 -u python/ops_sparse/p01_bench.py --profile --input cora - Profiler:warmup=10 / active=30;op_statistic.csv 仅 spmm_custom_fp32(AI_VECTOR_CORE,Count=30)
- kernel_total_us=35.033,GPU 基准 87.040μs,kernel_ratio_vs_gpu=2.485(≥2.0×)
- 分列报告:https://docs.qq.com/doc/DV2hqbWFueFp4aU1E
- #166 已关闭
【与官方口径对齐说明】
- 单次 addmm 设备侧仅见 spmm_custom_fp32 主 kernel(无额外 preprocess/format 设备 kernel 计入同次调用)
p01_bench已补充输出 all_npu_kernels_sum_median_us 与 event median 对照(feat/spmm-950-c64)
【未过 case】官方 fp32 12/25 未达、P-02/P-03 未达/未起跑:自测报告 §6 已给出 B 重用墙实测论证(L2 跨核不可用 × DMA 甜点 × SIMT 封顶),非测试方法错误。若验收侧仍需对具体未过 case 按贵方清单补 profiling(行 nnz 分布、tile 切分、活跃核数、profiler 时间线),我们可在 hidevlab 按 case 补采后更新本帖。
设计 v1.1 已合入 competitions master(#1117);代码 feat/spmm-950-c64 @ 50571b9,待任务页验收通过后提 ops-sparse 上游 PR。


感谢反馈,当前issue问题已解决,此issue关闭。若后续还有相关的问题,可以重新开启issue,提供相关的环境和报错信息来提问。


【任务】8月社区任务 - aclsparseSpMM 算子开发(950)
【代码仓】https://gitcode.com/gcw_DmEcQNNx/ops-sparse 分支 feat/spmm-950-c64
【设计文档】https://gitcode.com/cann/cann-ops-competitions/pull/1073
【已完成】
【问题】
P-01:2708×2708×1433,nnz=10556,fp32,alpha=1,beta=0,Row-major。
任务书 A100 NCU kernel_total = 87.040 μs,目标 ≥1.0×。
当前 950PR:
请确认:
【已排除】
当前保留 (row, colTile) SIMT 基线。