当前位置: 首页 > news >正文

CANN/ops-math Polar算子测试指南

Polar 算子测试步骤指导文档(ops-math 仓内构建)

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

本文档指导验收人员在昇腾 NPU 环境复现全部测试。本地无 NPU 无法运行,须在 Atlas A2/A3(910B4)环境(ModelArts notebook / Developer Space)操作。

约定:$OPSMATH= ops-math 仓根目录(含本算子experimental/math/polar/);$POLAR=$OPSMATH/experimental/math/polar


0. 环境前置(所有测试共用)

source /home/ma-user/Ascend/cann-8.5.0/set_env.sh # 路径以实际环境为准 export PATH=/home/ma-user/gcc/bin:$PATH # 如已配可跳过 export LD_LIBRARY_PATH=/home/ma-user/gcc/lib64:$LD_LIBRARY_PATH

1. 在 ops-math 仓内构建并部署 Polar 算子

本算子已按 ops-mathexperimental/math约定集成,随仓build.sh构建:

本算子在op_host/polar_def.cpp中通过AICore().AddConfig("ascend910b")AddConfig("ascend910_93")同时注册 Atlas A2 / A3 两套 SoC 配置,按--soc选择目标二进制:

cd $OPSMATH # Atlas A2 训练系列产品 (ascend910b) bash build.sh --pkg --soc=ascend910b --ops=polar --experimental --vendor_name=customize -j16 -O3 # Atlas A3 训练系列产品 (ascend910_93),二选一即可,亦可分别 build 各自的 .run # bash build.sh --pkg --soc=ascend910_93 --ops=polar --experimental --vendor_name=customize -j16 -O3 ./build_out/*.run --quiet # 安装到 $ASCEND_HOME_PATH/opp/vendors/customize_math/

使部署算子生效(关键,否则解析不到自定义实现):

source $ASCEND_HOME_PATH/opp/vendors/customize_math/bin/set_env.bash 2>/dev/null || true export LD_LIBRARY_PATH=$ASCEND_HOME_PATH/opp/vendors/customize_math/op_api/lib:$LD_LIBRARY_PATH

注:ops-math build 强制 vendor 名为customize_math(与--vendor_name无关);aclnn 接口(aclnn_polar.h+aclnnPolar/aclnnPolarGetWorkspaceSize符号)由 build 从 OpDef 自动生成并装入该 vendor 的op_api/。 ✅ 已在 Atlas A2(910B4)NPU 实测(2026-05-19):本步构建通过 + §2 官方 AscendOpTest6/6 全 PASS,与原 msopgen 产物精度一致、重构零回归。Atlas A3(ascend910_93)通过同一份 OpDef + Kernel 同源构建得到对应.run包;kernel 与 host tiling 不含任何平台分支(grep 校验过),构建产物结构与 A2 一致。

2. 官方 AscendOpTest 精度验收(任务权威精度判据,优先跑

pip install ml_dtypes cd $POLAR/tests && git clone https://gitcode.com/HIT1920/AscendOpTest.git cd AscendOpTest # 修正用例 expect_func 绝对路径 → 指向本仓 polar_golden.py(保留 :polar 函数名后缀) sed -i "s#\"expect_func\": \".*polar_golden.py:polar\"#\"expect_func\": \"$POLAR/tests/aot/polar_golden.py:polar\"#g" \ $POLAR/tests/aot/polar_cases.json python run_test.py \ -i $POLAR/tests/Polar.json \ -c $POLAR/tests/aot/polar_cases.json \ --op-type custom --op-path $ASCEND_HOME_PATH/opp/vendors/customize_math/op_api --build

结果在result.csv。6 用例:Test_same_smallTest_same_16MTest_bcast_lowhighTest_bcast_scalarTest_bcast_2wayTest_highdim_unalign,预期全 PASS(含 16M)。

精度判据:complex64 在 AscendOpTestaccuracy_config无内置默认 → 每个output_desc显式"err_threshold":[0.0001,0.0001]compare_complex= 实/虚部各自纯绝对误差 ≤ 1e-4(无相对回退),错误元素数 > size×1e-4 即失败。

性能(msprof,复用已 build 工程,不再加 --build):

python run_test.py -i $POLAR/tests/Polar.json -c $POLAR/tests/aot/polar_cases.json \ --op-type custom --op-path $ASCEND_HOME_PATH/opp/vendors/customize_math/op_api --msprof

聚合每用例op_summary*.csv的 Task Duration = 每调用设备时(与自测报告口径一致)。

3. pybind 测试框架(16 case:基础 8 + 泛化交叉 8)

依赖torch_npu,算子已按 §1 部署。

cd $POLAR/tests/pybind bash run.sh 1 # 同 shape 基础 bash run.sh 2 # 广播 低→高(新增功能主战场) # case 列表见本目录 README.md / test_op.py 的 case_data

输出xxx verify result pass!+time_base=... time_use=...verify_result与官方compare_complex逐行等价(实/虚部纯绝对误差 1e-4)。case9–16 = 泛化交叉(8D 满秩 / 5D 中间轴广播 / 双向多轴广播 / 标量×高维 / 负 abs / 大角度归约 / 非 32B 对齐+广播 / 大向量×标量)。

4. l0 参考实现性能基线对比

tests/pybind_baseline/与 pybind 同构,其common/pytorch_npu_helper.hpp强制GetOpApiFuncAddr只解析系统libopapi.so(l0 参考),不触碰任何共享 vendor 目录。

cd $POLAR/tests/pybind_baseline bash run.sh 5 # 同 case 在 l0 参考上的耗时 = 性能基线

与 §3/§2 本算子耗时对比得加速比(核心验收:所有核参与场景 ≥ 基线 95%;本算子 16M 达 178%)。

5. standalone aclnn 两段式调用测试

examples/test_aclnn_polar.cpp(不依赖 torch,5 用例 warmup+计时+CPU 校验),_ref调系统 l0。CANN 8.5 编译:

OPP=$ASCEND_HOME_PATH/opp/vendors/customize_math ACLINC=$ASCEND_HOME_PATH/aarch64-linux/include ASCLIB=$ASCEND_HOME_PATH/aarch64-linux/lib64 # 必须 lib64,勿用 devlib g++ -O2 -std=c++17 -I$ACLINC -I$OPP/op_api/include -L$ASCLIB -L$OPP/op_api/lib \ $POLAR/examples/test_aclnn_polar.cpp -o /tmp/test_aclnn_polar \ -lascendcl -lnnopbase -lcust_opapi LD_LIBRARY_PATH=$OPP/op_api/lib:$ASCLIB:$LD_LIBRARY_PATH /tmp/test_aclnn_polar # 基线版:源换 test_aclnn_polar_ref.cpp,库 -lcust_opapi 换 -lopapi

standalone 自带 verify 仅作冒烟;精度以 §2 官方 AscendOpTest 为准


附:测试与交付项对应

任务书交付项本仓位置复现章节
算子工程代码op_host/op_kernel/CMakeLists.txt§1
全部测试用例tests/{aot,pybind,pybind_baseline}/examples/§2–§5
用例结果自测报告tests/自测报告.md
测试步骤指导文档本文档
设计文档(已通过评审)docs/design.md

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

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

http://www.jsqmd.com/news/1163156/

相关文章:

  • Mermaid Live Editor:实时图表编辑的现代化架构演进
  • 低功耗蓝牙真能穿墙?Nordic芯片告诉你:根本挡不住!
  • 免费离线OCR工具Umi-OCR:三步上手,保护隐私的文字识别利器
  • 机器人策略生成原理:Cosmos3-Nano-Policy-DROID的动作轨迹生成机制终极指南 [特殊字符]
  • 超六成企业踩过代账坑!2026福州正规代理记账TOP4盘点:备案资质+本土服务才是避坑关键 - 互联网科技品牌测评
  • Python 3.12 量化金融实战:用 5 行代码实现 Black-Scholes 期权定价模型
  • 玉溪本地企业GEO工具推荐:农产品供应服务企业如何选对GEO优化工具? - 小随科技
  • AutoKernel高级教程:Loop Schedule优化技巧与性能调优方法论
  • 南京协议离婚财产约定专业律师:用严谨条款,锁住和平分手的最后保障 - AZJ888
  • 南京离婚婚内财产分割律师 - AZJ888
  • 2026阜阳黄金回收白银回收铂金回收靠谱临街实体公安备案支持到店核验门店联系方式推荐
  • Fiber 节点 —— 一个数据结构如何承载整个 React 运行时
  • vLLM部署GLM-5.2-speculator.dspark最佳实践:含推测解码配置示例
  • 浏览器PPT查看器深度解析:告别Office依赖的终极方案
  • 2026商用清洁机器人品牌推荐榜:五大主流品牌深度解析,覆盖全场景清洁需求 - 匠言榜单
  • 重庆孩子读文武学校首选!峨眉山武术学校官方地址+报名电话更新 - 全国文武学校招生
  • AI Agent 全景图 2025-2026:硬核技术拆解全攻略,收藏这一篇就够了!
  • 边境金价持续冲高!东兴旧金变现避坑全攻略,福金阁三门店全城上门,对标上金所零隐形扣费 - 福金阁黄金回收
  • 2026年最新教程:微信里怎么把视频转成GIF 亲测有效方法 - 图片处理研究员
  • POMDPs.jl决策流程揭秘:信念更新与策略优化的完整指南
  • OpenAI 产品主管 Fidji Simo 因病卸任,总裁 Greg Brockman 接管产品工作
  • 架构重构与合规治理:2026 企业级 AI 编程助手品牌选型指南
  • CTOSecurityChecklist:SaaS CTO 终极安全清单 - 10个关键步骤保护您的创业公司
  • 重庆市哪家文武学校正规靠谱?2026 省内优质武校盘点,四川峨眉山武术学校口碑出众 - 全国文武学校招生
  • Nulis部署实战:从零开始搭建你的专属写作平台完整教程
  • 南京出轨离婚财产多分律师:用专业锁定过错证据,守护您的财产权益 - AZJ888
  • 亲身到店探访海口亨得利官方名表服务中心|全部网点地址与官方客服电话(2026年7月更新) - 亨得利官方
  • 当 CDN 撞上 AI 时代:与其被流量账单绑架,不如自建一张“看得见、管得住“的加速网
  • 如何用vLLM高效部署NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
  • STM32与PAM8904构建低功耗多事件音频报警系统