news 2026/5/9 12:40:56

CANN算子测试总决赛

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN算子测试总决赛

总决赛:算子测试用例设计

【免费下载链接】cann-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-competitions

赛题概述

本次总决赛要求参赛者为 CANN ops-math 仓库中的算子编写端到端测试用例,在真实昇腾 910_93 NPU 环境下尽可能覆盖算子的各种执行路径,并深入分析算子的精度特性。评分采用五维综合打分,代码覆盖率仍是核心指标,同时新增精度分析与测试报告两个维度。

总决赛共设 2 道题目:

题目算子难度说明
题目 1Add(逐元素加法)进阶$y = x_1 + \alpha \times x_2$,含 alpha 参数和 V3 API,6 类 API 变体
题目 2Cumsum(累积求和)进阶$y[i] = \sum_{j=0}^{i} x[j]$,含 V2 参数(exclusive / reverse),重点关注误差累积效应

各题目的详细要求见对应的题目描述文档。

与预选赛的主要差异

维度预选赛总决赛
运行环境本地 Docker(x86 CPU 模拟器)真实 Ascend 910_93 NPU(远程服务器)
SOC 参数--soc=ascend950 --simulator--soc=ascend910_93(真机)
评分维度代码覆盖率五维综合:编译 / 行覆盖 / 分支覆盖 / 精度分析 / 报告
提交物测试代码 + build 产物测试代码 + build 产物 +测试报告
精度分析非评分项单独评分维度,需深入分析

参考资料

在开始之前,建议阅读以下参考文档:

  • Mul 算子架构分析:了解 CANN 算子的分层结构(op_api/op_host/op_kernel)、支持的数据类型组合以及各层中的条件分支
  • Mul 算子测试用例分析:了解端到端测试用例的代码结构、两段式 API 调用方法(GetWorkspaceSize+Execute)以及结果验证思路
  • Mul 算子精度分析教程:浮点精度问题的典型场景、分析方法与测试设计思路(决赛精度分析维度的重要参考)

实验环境

本次总决赛在远程 Ascend 910_93 NPU 服务器上执行,组委会已预置 CANN 工具链、ops-math 源码、测试报告模板等全部依赖。

接入方式

  1. 安装 UniVPN 客户端并使用统一账号登录内网

  2. 使用组委会邮件下发的 IP / 端口 / 密码通过 SSH 登录本队专属环境

  3. /public

    下的赛题资料拷贝至

    /root

    作为工作目录:

    cp -r /public/* /root/

详细接入步骤请参见《参赛全流程说明》。

注意:由于决赛环境为真机 NPU,不再使用--simulator参数,也不使用 Docker 镜像。所有编译、运行、调试均在远程服务器上完成。

基本操作流程

以 Add 算子为例(Cumsum 只需将命令中的add替换为cumsum):

0. 前置修复:CMakeLists 配置

math/add/CMakeLists.txtmath/cumsum/CMakeLists.txt在默认配置下存在ascend910_93SOC→arch 映射问题,会导致host 层 tiling 覆盖率为 0。编译前务必先执行一键补丁:

cd /root/ops-math # Add:补齐 SOC 列表 + 统一映射到 arch35 sed -i 's|set(SUPPORT_COMPUTE_UNIT "ascend950" "mc62cm12a")|set(SUPPORT_COMPUTE_UNIT "ascend310p" "ascend910_93" "ascend910b" "ascend950" "mc62cm12a")|; s|set(SUPPORT_TILING_DIR "arch35" "arch35")$|set(SUPPORT_TILING_DIR "arch35" "arch35" "arch35" "arch35" "arch35")|' \ math/add/CMakeLists.txt # Cumsum:arch32 → arch35 sed -i 's|set(SUPPORT_TILING_DIR "arch32" "arch32" "arch32" "arch35" "arch35")|set(SUPPORT_TILING_DIR "arch35" "arch35" "arch35" "arch35" "arch35")|' \ math/cumsum/CMakeLists.txt

1. 编译算子

cd /root/ops-math bash build.sh --pkg --soc=ascend910_93 --ops=add --vendor_name=custom --cov

--cov启用覆盖率插桩,编译成功后在build_out/下生成算子安装包。

校验 host 层产物(编译后必做):

find build -name "add_tiling*.gcno"

应能查到文件,若为空说明前置补丁未生效,请回到步骤 0 检查。

2. 安装算子包

./build_out/cann-ops-math-custom_linux-aarch64.run

3. 运行测试(真实 NPU)

bash build.sh --run_example add eager cust \ --vendor_name=custom --soc=ascend910_93 --cov

运行成功后会在build/目录下生成覆盖率数据文件(.gcda)。

4. 查看覆盖率

# 行覆盖 find build -name "*.gcda" | grep add gcov -b <gcda文件路径>

gcov输出的Lines executed: XX.XX% of YY即为行覆盖率,Branches executed: XX.XX% of YY即为分支覆盖率。每次修改测试用例后,需重新执行步骤 1–4。

5. 撰写测试报告

参考测试报告模板和模版样例,编写报告

6. 打包提交

将测试代码、build 目录(仅保留.gcda / .gcno)、测试报告打包为.zip。具体目录结构与打包命令见各题目描述文档。

评分标准

决赛采用五维综合评分

维度说明占比倾向
1. 编译通过率提交代码必须能在评测环境中完整跑完编译 → 安装 → 运行流程前置门槛
2. 行覆盖率统计op_api层与op_host层指定文件的综合行覆盖率核心指标
3. 分支覆盖率统计同一批文件的综合分支覆盖率(gcov -b核心指标
4. 精度分析测试报告中对精度问题的场景发现与原理分析深度质量指标
5. 测试报告报告的完整性、结构、分析质量质量指标

前置条件

  1. 编译通过:编译失败的提交无法获得完整覆盖率得分,但评测系统会尝试从提交的 build 目录中提取覆盖率数据作为参考;
  2. 结果验证:测试代码中必须包含有效的结果验证逻辑(期望值计算 + 数值比对),仅打印结果而不验证的提交将被扣分;
  3. 测试报告:必须按模板提交,缺失报告将直接影响相关维度得分。

提交要求

每道题目独立提交一个压缩包<队名>_<题目>.zip,基本结构:

<队名>/ ├── test_aclnn_<op>.cpp # 测试用例源文件(必须) ├── build/ # 覆盖率产物(仅保留 .gcda / .gcno) └── 测试报告.md # 按模板编写(必须)

build 目录仅保留评分相关的.gcda / .gcno,具体路径与一键筛选打包命令见各题目描述文档,不要提交完整 build 目录(可能有几百 MB)。


祝各参赛队在决赛中取得佳绩!

【免费下载链接】cann-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-competitions

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 12:38:59

怎样高效使用网盘直链下载助手:实用技巧完整指南

怎样高效使用网盘直链下载助手&#xff1a;实用技巧完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …

作者头像 李华
网站建设 2026/5/9 12:36:14

初创公司如何通过 Taotoken 低成本试用多款大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创公司如何通过 Taotoken 低成本试用多款大模型 对于初创团队而言&#xff0c;在技术选型阶段评估不同的大模型是一个关键但充满…

作者头像 李华
网站建设 2026/5/9 12:29:58

高级java每日一道面试题-2025年12月06日-实战篇[Dockerj]-如何配置 Docker 的镜像加速器?国内有哪些常用加速源?

Java Docker 高级面试题详解 如何配置 Docker 的镜像加速器&#xff1f;国内有哪些常用加速源&#xff1f; 在 Java 生产环境及 CI/CD 流水线中&#xff0c;镜像拉取速度直接影响交付效率。面试官通过此题考察你对 Docker 拉取链路、国内网络生态及运维调优的系统认知。以下为纯…

作者头像 李华
网站建设 2026/5/9 12:28:10

如何快速掌握大气层系统:从新手到专家的终极指南

如何快速掌握大气层系统&#xff1a;从新手到专家的终极指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层&#xff08;Atmosphere&#xff09;是一款针对Nintendo Switch的开源自…

作者头像 李华
网站建设 2026/5/9 12:27:48

CANN/catlass GEMM Kernel开发详解

GEMM Kernel 代码开发详解 【免费下载链接】catlass 本项目是CANN的算子模板库&#xff0c;提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass 1. Kernel代码结构概述 CATLASS模板库中的GEMM Kernel采用了高度模块化的设…

作者头像 李华
网站建设 2026/5/9 12:26:41

多模态可解释AI:从热图到文本的跨模态决策解释技术

1. 项目概述&#xff1a;为什么我们需要“看得懂”的AI决策&#xff1f;最近几年&#xff0c;AI模型&#xff0c;特别是那些基于深度学习的“黑箱”模型&#xff0c;在图像识别、自然语言处理乃至多模态任务上取得了惊人的成绩。但一个越来越突出的问题是&#xff1a;我们往往只…

作者头像 李华