☰
华为CANN/ops-math Polar算子自测报告
2026/10/13 23:22:34 网站建设 项目流程

Polar 算子用例结果自测报告

【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math

队名:看不见我 | 算子:aclnnPolar(fp32 input/angle → complex64 out,支持 numpy 广播) 对齐基准:cann/ops-mathmath/complex/op_host/op_api/aclnn_polar.cpp(l0 拼接版,无 TBE 历史实现)


1. 测试环境

项值
硬件Atlas A2 训练系列产品(ascend910b,实测平台:Ascend 910B4)/ Atlas A3 训练系列产品(ascend910_93,同源构建)
软件CANN 8.5;Python3 + torch_npu(pybind);ml_dtypes(AscendOpTest)
算子部署msopgen 工程bash build.sh→*.run --quiet安装至opp/vendors/customize/
权威精度工具官方 AscendOpTest(HIT1920/AscendOpTest)
性能口径官方run_test.py --msprof,聚合op_summaryTask Duration = 每调用设备时

2. 精度自测结果(官方 AscendOpTest,任务权威判据)

python run_test.py -i op/Polar.json -c tests/aot/polar_cases.json --op-type custom --build实跑:

#用例input shapeangle shapeout(complex64)考点结果
1Test_same_small[2,6,10][2,6,10][2,6,10]同 shape 基础PASS
2Test_same_16M[4096,4096][4096,4096][4096,4096]16M 大 shape(所有核参与)PASS
3Test_bcast_lowhigh[4,1,8][4,5,8][4,5,8]广播:低维→高维(新增功能主战场)PASS
4Test_bcast_scalar[1][3,4,5][3,4,5]广播:标量 inputPASS
5Test_bcast_2way[8,1][1,7][8,7]广播:双向PASS
6Test_highdim_unalign[3,5,17,269][3,5,17,269][3,5,17,269]高维 + inner 非 32B 对齐PASS

结论:官方 AscendOpTest 6/6 全 PASS(含 16M[4096,4096])。

精度判据依据:complex64 在 AscendOpTestaccuracy_config.default_acc无内置默认键——若不显式配置工具会 KeyError。故每个output_desc显式写"err_threshold":[0.0001, 0.0001],取值为 fp32 分量默认值([绝对偏差, 错误率])。compare_complex判定为:实部、虚部各自纯绝对误差≤ 1e-4(注意复数比对无相对误差回退,区别于 float 的compare_default),且二者皆满足,错误元素数 > size×1e-4 即判失败。本算子全程 fp32 计算 Cos/Sin/Mul,complex64 经 ReinterpretCast 视作交织 fp32,分量精度等价 fp32,无 Cast 中间损失。

历史风险(已闭环):早期 standalone 测试曾在 16M 用例用苛刻数据(多周期角度 6.86 rad × 大幅值,纯绝对 1e-4)观察到边界抖动。经官方 AscendOpTest 用标准单周期角度数据独立复核 16M稳定 PASS,确认非 kernel 内存/正确性 bug,系 standalone 苛刻数据撞 fp32 Sin/Cos 范围归约精度边界的取数效应。验收以官方工具结论为准。

3. 性能自测结果(vs l0 参考基线)

基线 = 系统libopapi.so中的 l0 参考实现(tests/pybind_baseline/,强制只解析 libopapi.so,零侵入系统 vendor)。本算子与基线均按每调用设备时统计:

场景l0 参考基线本算子(Ascend C 融合)加速比结论
小[2,6,10]14.25 µs12.52 µs1.14×更快 ✓
16M[4096,4096](所有核参与,核心验收场景)1665 µs937.98 µs1.78×达基线 178%,远超 ≥95% 门禁✓✓
广播[4,1,8]×[4,5,8]15.17 µs14.92 µs1.02×更快 ✓
高维非对齐[3,5,17,269]—29.26 µs—精度 PASS(基线未单测,规模小)

结论:全场景性能优于 l0 参考基线;任务核心验收"所有核参与场景"(16M)达基线 1.78×,远超 ≥95% 要求。

性能来源:将参考约 6 个串接 l0 设备算子(Contiguous/Sin/Cos/Mul×2/Complex)融合为单 kernel,kernel 启动 6→1 次、GM↔UB 搬运 ≥10→2 次,中间结果驻留 UB;复数交织用 Gather + Init 一次构造的静态偏移表(规避 Transpose 16×16 约束 / strided DataCopyPad MTE 灾难);广播 offset 全矢量化 unravel(无逐元素标量)。

4. 泛化与特性交叉自测(pybind 16 case,严格复数判据)

tests/pybind/框架,verify_result与官方compare_complex逐行等价(实/虚部纯绝对误差 1e-4)。

基础集(case 1–8):

caseinputangle考点结果
1[2,6,10][2,6,10]同 shape 基础PASS
2[4,1,8][4,5,8]广播 低→高PASS
3[1][3,4,5]广播 标量 inputPASS
4[8,1][1,7]广播 双向 →[8,7]PASS
5[4096,4096]同大 shape(性能)PASS
6[3,5,17,269]同高维 + inner 非 32B 对齐PASS
7[1][1]1 元素边界PASS
8[64,1024]同大角度(Sin/Cos 范围归约压力)PASS

泛化交叉集(case 9–16,广播 ×{rank/shape/角度范围/正负 abs/对齐性}):

case考点结果
98D 满秩同形PASS
105D 中间轴广播PASS
11双向多轴广播PASS
12标量 input × 高维 anglePASS
13负 abs(翻号合法性)PASS
14大负角度(范围归约)PASS
15非 32B 对齐 inner + 广播PASS
16大向量 × 标量PASS

结论:16/16 在严格判据下全 PASS,广播与各特性交叉无异常。

5. 总体结论

验收维度标准自测结果达标
精度AscendOpTest 默认阈值,不低于参考官方工具 6/6 PASS(含 16M)✓
性能所有核参与场景 ≥ l0 参考 95%16M 达基线 178%;全场景更快✓✓
功能fp32→complex64 + numpy 广播,≤8 维16-case 泛化交叉严格判据全 PASS✓
接口对齐 aclnn 两段式aclnnPolar/GetWorkspaceSize 直调验证✓

精度、性能、功能三项验收门禁均达标,性能在核心场景显著超出要求。复现命令见tests/测试步骤指导.md。

6. ops-math 仓内集成实测验证(2026-05-19,Atlas A2 / 910B4)

本算子按 ops-mathexperimental/math约定集成(对标同模型算子arange/erf_inv:ACLNNTYPE aclnn,纯 OpDef + op_kernel,aclnn 接口由 build 从 OpDef autogen)。在 NPU 实测:

步骤命令 / 结果
构建bash build.sh --pkg --soc=ascend910b --ops=polar --experimental→build_exit=0,.run生成
安装*.run --quiet→SUCCESS,装入opp/vendors/customize_math/
aclnn 接口autogenaclnn_polar.h已装入 vendorop_api/include;libcust_opapi.so导出T aclnnPolar、T aclnnPolarGetWorkspaceSize
官方 AscendOpTest 精度6/6 全 PASS:Test_same_small / Test_same_16M / Test_bcast_lowhigh / Test_bcast_scalar / Test_bcast_2way / Test_highdim_unalign(result.csv 各out … ,pass,两轮独立复测均 PASS)

ops-math 集成版性能实测(官方run_test.py --msprof,聚合 op_summary Task Duration = 每调用设备时;l0 基线 = 系统libopapi.so的aclnnPolar,系统不变量):

用例ops-math 集成版l0 参考基线结论
Test_same_small[2,6,10]11.64 µs14.25 µs更快 1.22× ✓
Test_same_16M[4096,4096](所有核参与,核心验收)931.68 µs1665 µs快 1.79×✓✓
Test_bcast_lowhigh[4,1,8]×[4,5,8]14.16 µs15.17 µs更快 ✓
Test_bcast_scalar[1]×[3,4,5]15.14 µs——
Test_bcast_2way[8,1]×[1,7](双向广播)15.84 µs——
Test_highdim_unalign[3,5,17,269]26.94 µs——

ops-math 集成版各用例耗时与原 msopgen 产物逐项一致(均略优:small 12.52→11.64、16M 937.98→931.68、bcast_lowhigh 14.92→14.16 µs),印证 kernel 计算逻辑逐字一致、约定重构零性能回归。

结论:ops-math 约定重构(op_host 三拆 / TilingData 普通 struct / kernel 入口模板式 / IMPL_OP_* 注册宏)经 NPU 实测——构建通过、官方 AscendOpTest 精度 6/6 全 PASS(含 16M 与全部广播,含双向广播Test_bcast_2way[8,1]×[1,7])、性能全场景优于 l0 基线(核心 16M 快 1.79×,远超 ≥95%),与原 msopgen 产物精度与性能完全一致,重构零回归。

【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询