总决赛算子测试用例设计【免费下载链接】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 API6 类 API 变体题目 2Cumsum累积求和进阶$y[i] \sum_{j0}^{i} x[j]$含 V2 参数exclusive / reverse重点关注误差累积效应各题目的详细要求见对应的题目描述文档。与预选赛的主要差异维度预选赛总决赛运行环境本地 Dockerx86 CPU 模拟器真实 Ascend 910_93 NPU远程服务器SOC 参数--socascend950 --simulator--socascend910_93真机评分维度代码覆盖率五维综合编译 / 行覆盖 / 分支覆盖 / 精度分析 / 报告提交物测试代码 build 产物测试代码 build 产物 测试报告精度分析非评分项单独评分维度需深入分析参考资料在开始之前建议阅读以下参考文档Mul 算子架构分析了解 CANN 算子的分层结构op_api/op_host/op_kernel、支持的数据类型组合以及各层中的条件分支Mul 算子测试用例分析了解端到端测试用例的代码结构、两段式 API 调用方法GetWorkspaceSizeExecute以及结果验证思路Mul 算子精度分析教程浮点精度问题的典型场景、分析方法与测试设计思路决赛精度分析维度的重要参考实验环境本次总决赛在远程 Ascend 910_93 NPU 服务器上执行组委会已预置 CANN 工具链、ops-math 源码、测试报告模板等全部依赖。接入方式安装 UniVPN 客户端并使用统一账号登录内网使用组委会邮件下发的 IP / 端口 / 密码通过 SSH 登录本队专属环境将/public下的赛题资料拷贝至/root作为工作目录cp -r /public/* /root/详细接入步骤请参见《参赛全流程说明》。注意由于决赛环境为真机 NPU不再使用--simulator参数也不使用 Docker 镜像。所有编译、运行、调试均在远程服务器上完成。基本操作流程以 Add 算子为例Cumsum 只需将命令中的add替换为cumsum0. 前置修复CMakeLists 配置math/add/CMakeLists.txt与math/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 # Cumsumarch32 → 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.txt1. 编译算子cd /root/ops-math bash build.sh --pkg --socascend910_93 --opsadd --vendor_namecustom --cov--cov启用覆盖率插桩编译成功后在build_out/下生成算子安装包。校验 host 层产物编译后必做find build -name add_tiling*.gcno应能查到文件若为空说明前置补丁未生效请回到步骤 0 检查。2. 安装算子包./build_out/cann-ops-math-custom_linux-aarch64.run3. 运行测试真实 NPUbash build.sh --run_example add eager cust \ --vendor_namecustom --socascend910_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. 测试报告报告的完整性、结构、分析质量质量指标前置条件编译通过编译失败的提交无法获得完整覆盖率得分但评测系统会尝试从提交的 build 目录中提取覆盖率数据作为参考结果验证测试代码中必须包含有效的结果验证逻辑期望值计算 数值比对仅打印结果而不验证的提交将被扣分测试报告必须按模板提交缺失报告将直接影响相关维度得分。提交要求每道题目独立提交一个压缩包队名_题目.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),仅供参考