本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(ci): compile.sh 用 sh 调用 bash 脚本 check_experimental_pkg.sh,改为 bash Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !11628 merge fix-compile-sh-use-bash-for-experimental-check-v2 into master fix(ci): compile.sh 用 sh 调用 bash 脚本 check_experimental_pkg.sh,改为 bash Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 问题 .gitcode/scripts/compile.sh 第 179 行 Compile_Ascend_experimental*) 分支里用 sh scripts/ci/check_experimental_pkg.sh 调用该脚本,但 check_experimental_pkg.sh 含 bash-only 语法([[ ]]/数组等),在 sh(Debian/Ubuntu 上为 dash)下执行会 Syntax error。同仓其它调用(如 bash scripts/ci/compile_ascend950_pkg.sh)均用 bash 调用。 ## 影响 CI 在 dash 为默认 sh 的环境里,experimental 包校验步骤直接语法报错,DP_ASSERT_EQUAL $? 0 失败。 ## 修改 sh scripts/ci/check_experimental_pkg.sh → bash scripts/ci/check_experimental_pkg.sh。(第 181 行 echo 里的字符串保持不动,仅作展示。) > 说明:此为对旧 PR #11440(因冲突被关闭)的重新提交,改动仍必要(当前 master 第 179 行仍是 sh)。 See merge request: cann/ops-nn!11628 | 6 天前 | |
[softplus_v2_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !11065 merge softplus_v2_grad_quality_hardening into master [softplus_v2_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: # [softplus_v2_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) ## 一、变更概述 本 PR 为 SoftplusV2Grad 算子( ops-nn/activation/softplus_v2_grad,SoC=ascend950)的质量加固整改,来源为 ops-admission-scan 白盒准入扫描与 ascendc-code-review 全量代码检视两轮报告的结论。 - 准入扫描初始判定 **FAIL**(PASS 14 / FAIL 2 / REVIEW 2 / N/A 1),真实问题:950 TBE ini 残留(P1)、GEIR 通路 rank>8 静默 clamp(P3)、FORMAT_ND 无运行时校验(P5)、beta/threshold 值域无 isfinite 说明(P4)。 - 代码检视 125 条例 PASS 120 / FAIL 2 / SUSPICIOUS 3,高优先问题:PERF-7 VF 尾块掩码未收敛(UB 越界写风险)、TOPK-7 GEIR rank>8 静默 clamp(TilingData 槽越界写风险);设计一致性 S1-S7+D8 共 4❌3✅(S2 空 Tensor 短路 / S3 clamp 缺失 / S6 eArg 伪代码无实现 / D8 文档格式)。 - 本次整改在代码仓 softplus_v2_grad_quality_hardening 分支共 8 个 commit(基线 a19d0f9b8 起),并同步交付件仓 operator-artifacts/SoftplusV2Grad(625b165 / 8a47e70 本算子部分)。 - 修复后用例覆盖度:kernel **93.3% → 97.9%**、aclnn **92.4% → 97.6%**。 ## 二、分类修改清单 ### (一)代码 | 类别 | 内容 | |---|---| | PERF-7 掩码收敛 | VF 循环内 UpdateMask<T>(count) 改为逐 repeat rem = count - i*VL 后 UpdateMask<T>(rem),尾 repeat 掩码正确收敛,消除 StoreAlign 将垃圾 lane 写出 tile 有效区的 UB 越界写风险(kernel.h:95-98) | | TOPK-7 rank>8 拦截 | GEIR 通路 GetShapeInfo 增加 rank_ > SOFTPLUS_V2_GRAD_RANK_8 显式拒绝(OP_LOGE_FOR_INVALID_SHAPEDIM_WITH_REASON + GRAPH_FAILED),禁止静默 clamp 导致的 TilingData 槽负下标越界写 | | S3 exp clamp | VF 链 S2.5 增加 Mins(regT2, kExpInputClamp=50.0)(eArg = min(nege, CLAMP)),消除 self 大负值时 exp 中间量上溢 +inf,满足 §5.2 精度约束 | | S2 空 Tensor 短路 | Kernel num_cores == 0 早退 + tiling numel==0 短路(num_cores=0、SetBlockDim(1)),显式落地空 Tensor 支持声明 | | X2 format 运行时拒绝 | op_api CheckParams 增加 CheckFormat:三输入任一 IsPrivateFormat → OP_LOGE + ACLNN_ERR_PARAM_INVALID,FORMAT_ND 成为运行时契约 | | LOG-1 预定义宏 | tiling 8 处裸 OP_LOGE 全部替换为 OP_LOGE_FOR_INVALID_*_WITH_REASON 结构化宏 | | GEN-7.1 转换规范 | C 风格 (int)/(int64_t)/(double) 转换全部 static_cast 规范化(框架必要 reinterpret_cast 保留并注释) | | STYLE-2.8/2.1 | 单行单变量声明拆分、超 120 字符长行折行 | ### (二)资料 | 类别 | 内容 | |---|---| | X4 值域口径 | README/aclnn 文档 beta/threshold 属性补「仅支持有限float值,不支持inf/NaN」(README.md:64/71/89、docs/aclnnSoftplusBackward.md:112/122) | | 产品支持表回退 | bd0d3572a 回退首轮误改,恢复 admission 1.1 PASS 原口径(A3/A2/训练 √),并恢复 aclnn 文档被误删的 id7 训练产品段 | | D8/D1 文档格式 | README/aclnn 文档中英文空格违例修复(1c82bf715) | | 错误码表同步 | aclnn 文档错误码表补「存储格式为私有格式(非ND格式)」行(7d55d5f3d) | | 设计文档同步 | DESIGN.md v1.2(VF 尾块掩码收敛/exp clamp/空 Tensor 短路/Compare-Select 位于 VF 寄存器链,:9/:529/:614)、v1.3(有限值域口径、t=NaN 边界差异记录、§3.10 空格规范)(交付件 625b165 / 8a47e70) | ### (三)用例 - 新增/修正 UT:非整除尾块 case12(fp32)/case13(fp16)、rank9 拒绝、空 tensor 短路、dtype 异常期望改 ACLNN_ERR_PARAM_INVALID、交付件测试用例 CSV 补 010/011 等缺口。 - 覆盖度复评:kernel **93.3% → 97.9%**、aclnn **92.4% → 97.6%**。 ## 三、逐 commit 摘要 代码仓(ops-nn,分支 softplus_v2_grad_quality_hardening): | # | commit | 日期 | 摘要 | |---|---|---|---| | 1 | a19d0f9b8 | 2026-09-22 | 基线首轮批量:aclnn dtype 白名单收敛为 fp16/fp32/bf16 且同 dtype 强制、隐式 Cast 移除;README/aclnn 文档 dtype 表收敛;proto 注释 1D-8D → 0D-8D;tiling dtype/broadcast 失败日志改预定义宏;README 补动态 Shape/Rank 声明;dtype 异常 UT 期望修正 | | 2 | bd0d3572a | 2026-09-24 | README/aclnn 文档产品支持表回退(恢复 A3/A2/训练 √ 与 id7 训练产品段,对齐 admission 1.1 PASS 原口径) | | 3 | 1c82bf715 | 2026-09-24 | README/aclnn 文档中英文/数字空格格式修复(D8/D1) | | 4 | 369b4d509 | 2026-09-24 | PERF-7 VF 尾块掩码逐 repeat 收敛(消除 StoreAlign 越界写);S3/S6 exp 输入 clamp 落地(kExpInputClamp=50.0);S2 空 Tensor Kernel 早退;附非整除尾块 UT case12/13 | | 5 | c8966f194 | 2026-09-24 | TOPK-7 GEIR rank>8 显式拦截;S2 空 Tensor tiling 短路(num_cores=0 + SetBlockDim(1));LOG-1 裸 OP_LOGE 全部预定义宏化;GEN-7.1 static_cast 规范化;附 rank9/空 Tensor UT | | 6 | 7d55d5f3d | 2026-09-24 | X2 op_api 增加 IsPrivateFormat 运行时显式拒绝(CheckFormat),同步 aclnn 文档错误码表 | | 7 | 510b8bba8 | 2026-09-24 | X4 beta/threshold 值域口径:文档声明「仅支持有限float值,不支持inf/NaN」(README/docs) | | 8 | db8c62956 | 2026-09-24 | STYLE-2.8 单行单变量声明拆分、STYLE-2.1 超 120 字符长行折行 | 交付件仓(operator-artifacts,本算子 SoftplusV2Grad 部分): | # | commit | 日期 | 摘要 | |---|---|---|---| | A | 625b165 | 2026-09-24 | DESIGN.md v1.2(VF 尾块掩码收敛/exp clamp/空 Tensor 短路/Compare-Select VF 寄存器链回写);测试用例 CSV 缺口补齐 | | B | 8a47e70 | 2026-09-24 | DESIGN.md v1.3(beta/threshold 有限值域口径、t=NaN 边界差异记录、§3.10 空格规范);交付件同步第二轮修补 | ## 四、测试与验证 - **tiling 语法编译**:op_host 侧 tiling/def/infershape 修改(rank>8 拦截、空 Tensor 短路、日志宏、static_cast)经 -fsyntax-only 语法编译通过,无编译期告警回归。 - **kernel 构建**:kernel 侧修改(VF 掩码收敛、Mins clamp、num_cores==0 早退、风格整改)随 kernel UT 工程构建通过,新增 case12/13 非整除尾块用例覆盖掩码收敛回归路径。 - **UT**:op_host tiling UT 通过(tiling_fp32_rank9_rejected → GRAPH_FAILED;tiling_fp32_empty_tensor_shortcut → num_cores=0 且 per_buf_bytes>0);op_api UT 通过(dtype 异常返回 ACLNN_ERR_PARAM_INVALID、私有格式拒绝);kernel UT 全量通过。 - **覆盖度复评**:十维覆盖模型复评 kernel 97.9%、aclnn 97.6%(修复前 93.3% / 92.4%)。 - **环境限制说明**:本环境无 NPU/TTK,GEIR/TTK 异常实跑拦截验证与 TTK 级对拍无法执行(对应白盒证据判定);代码仓 pre-commit 静态检查(clang-format/OAT 等)与交付件一致性检查已通过。 ## 五、未完成事项与限制 ### 三禁区声明 1. **ACLNN 接口禁区**:未修改任何 ACLNN 接口签名/语义。aclnn 通路 X1/X3/X5/X7 各检查项均 PASS;X2 增加 CheckFormat 运行时校验属实现层加固,接口契约未变。 2. **产品支持表禁区**:bd0d3572a 仅回退首轮历史误改,恢复 admission 1.1 PASS 的原口径(A3/A2/训练 √),未新增任何产品支持声明。 3. **canndev 禁区**:本分支对 canndev 零改动。E3 950 TBE ini 残留由 canndev 上游 commit 76b8921f24 删除并经本仓 canndev HEAD ee20258ba7 同步闭环,架构师定 canndev 不在本仓修改。 ### 环境限制 - 无 NPU/TTK:API-3 NDDMA DataCopy 32B 对齐问题(C3)维持原实现待 TTK 真机验证(同仓 Broadcast 范式 7+ 先例,静态复核置信度不足以推翻现状);TTK GEIR 拦截实跑与异常用例真机验证 UNAVAILABLE。 ### 未修项引用 - 未完成与豁免决策共 **5 条**(环境限制类 1:API-3 NDDMA 对齐;工具链·仓内惯例冲突 2:STYLE-1.4 snake_case 共享契约、STYLE-3.3 S 编号计算链锚点注释;有意设计 2:S7 t=NaN 边界差异已记录、X4 选文档口径不补运行时拦截),决策建议与修复条件详见《softplus_v2_grad_未修项明细.md》。 - 误报 2 条不在本 PR 范围:admission P2(15.4 提取器产品支持表/样板文本噪音假阳性,真实约束经模板 A 交叉验证均 IMPLEMENTED)、P6(15.6 扫描器渲染缺陷,manifest 实际 PASS),属扫描器改进项。 See merge request: cann/ops-nn!11065 | 2 天前 | |
feat(quant_matmul_activation_quant): 支持 SiLU + MX 量化融合 Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !11505 merge master into master feat(quant_matmul_activation_quant): 支持 SiLU + MX 量化融合 Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 为 quant_matmul_activation_quant 新增 activationType="silu"(Torch:activation_type="silu")。完整 FP32 MatMul 结果加可选 bias 后,逐元素计算 x * sigmoid(x),经 BF16 RINT 后进行 MXFP8 量化;输出保持 [..., M, N],scale 为 [..., M, ceil(N/64), 2]。 - ND 支持四种 E4M3FN/E5M2 输入组合及 FF/FT/TF/TT 转置;WeightNZ 要求 x2 为 E4M3FN、transposeX1=false,支持两种 x1 FP8 和两种 transposeX2。输出 dtype 与 x1 一致。 - 支持 batch 广播、FP32 bias、OCP/BLAS(scaleAlg=0/1)及 RINT。 - 补齐 ACLNN/Torch 参数校验、图推导、tiling 和单/多 batch、A 全载/非全载 kernel 分发。 - 共用 N 对齐常量统一为 MX_BASEN_ALIGN=32UL,扩展 CSV 驱动 UT/ST 和 CPU golden。 **依赖配套 ops-tensor PR:https://gitcode.com/cann/ops-tensor/merge_requests/466**。使用新的 BlockEpilogueSiluMxQuant 头文件,构建时需要同步该变更。 ## 关联的Issue 关联 https://gitcode.com/cann/ops-nn/issues/6395 配套 epilogue 需求:https://gitcode.com/cann/ops-tensor/issues/287 补充关联(TTK 用例失败):https://gitcode.com/cann/ops-nn/issues/6406 ## 测试 - 2026-10-07 的功能实现版本(当时名称为 sigmoid_mul)完成了定向完整二进制包构建和安装;在 CANN 9.3.0 / Ascend950PR_9589 NPUSim 上,20 条边界用例及 1 条 A 全载专项共 21/21 PASS。FP8 rtol=0.001、atol=0、最低匹配率 0.999,E8M0 scale 逐位比较,未放宽精度标准。 - SiLU 重命名后,30 条 kernel CSV 加载校验通过;21 条 CPU golden 输出与改名前逐字节一致。 - 本 PR 新增/扩展的 CSV 覆盖 Host/API/Kernel UT、TTK kernel/ACLNN/E2E:ND/NZ、dtype/转置、OCP/BLAS、N/K 尾块、M=1、batch/bias、全载/非全载和非法参数。上述用例配置不等同于整套 UT/ST 已完成设备执行。 - 提交前 clang-format、ruff、codespell、OAT 等钩子通过,当前分支差异检查通过。 - NPUSim 验证属于重命名前的实现版本;当前提交未重新编包或上板。原验证环境未识别到 NPU,故无实机通过结论。20 条专项边界 CSV 为独立验证输入,本 PR 保留仓内常规 CSV 回归和宽 N 全载用例。 ## 文档更新 更新算子 README、ACLNN ND/WeightNZ 文档、Torch API、算子目录、Torch API 目录和测试运行说明,统一正文名称为 SiLU,参数值保留小写 silu。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11505 | 6 天前 | |
refactor: unify fusion pass platform checks and extend platform support Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !12595 merge pass2A6 into master refactor: unify fusion pass platform checks and extend platform support Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 新增公共平台校验工具 arch_utils.h,统一 norm 系列融合规则的平台校验逻辑,并扩展各规则的平台支持范围。 ### 改动原因 1. 12 条融合规则各自维护私有的 IsSupportedPlatform() 实现(平台信息获取 + NpuArch 检查逻辑重复,且日志口径、返回语义不一致); 2. 各规则需扩展平台支持范围,分散修改易遗漏。 ### 改动方法 1. **新增公共工具 common/inc/op_graph/arch_utils.h**:提供 CheckNpuArch(pass_name, supported_archs)——统一完成平台信息获取、NpuArch 读取与支持列表判断,失败/不支持时输出诊断日志。 2. **12 条融合规则统一平台校验**:删除各文件私有 IsSupportedPlatform(),改用 ops::CheckNpuArch;涉及 layer_norm 系列 5 条、add_layer_norm 1 条、add_layer_norm_quant 3 条、add_rms_norm 系列 3 条、inplace_add_rms_norm 1 条。 3. **扩展平台支持**:各融合规则的支持平台列表新增新的 NpuArch 取值,扩大融合规则生效平台范围。 4. **inplace_add_layer_norm 平台判据重构**:原基于 short_soc_version 白名单 + soc_info.l2_size,改为 NpuArch 白名单 + GetLocalMemSize(L2);同时新增"输入直接来自 Data 节点则跳过"校验。 5. **UT 适配**:test_inplace_add_layer_norm_fusion_pass.cpp 适配新平台判据与新校验(+62 -14);test_layer_norm_remove_broadcast_fusion_pass.cpp 新增新平台用例(+15)。 涉及文件(17 个,+206 -272): - common/inc/op_graph/arch_utils.h(新增,+52) - 12 个融合规则文件:layer_norm / layernorm_inference / layer_norm_onnx / layer_norm_onnx_mul / layer_norm_remove_broadcast / add_layer_norm / add_layer_norm_quant_fusion_common / addlayernorm_dynamicquant / quantize_addlayernorm / add_rms_norm / add_rms_norm_dynamic_quant / add_rms_norm_quant / inplace_add_rms_norm / inplace_add_layer_norm - 2 个 UT 文件适配:test_inplace_add_layer_norm_fusion_pass.cpp(+62 -14)、test_layer_norm_remove_broadcast_fusion_pass.cpp(+15) ## 关联的Issue -https://gitcode.com/cann/ops-nn/issues/7313 ## 测试 - 既有融合规则 UT 全量回归(平台校验逻辑统一后行为不变,新平台用例新增通过)。 - inplace_add_layer_norm UT 适配新平台判据(NpuArch 白名单 + L2 获取方式)及 Data 直连输入拒绝校验。 ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构与平台扩展 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12595 | 3 天前 | |
修改aclnn确定性开关 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12749 merge master into master 修改aclnn确定性开关 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 1、修改aclnn确定性开关为aclrtSetSysParamOpt 2、修复删除查看源码后的多余空行 ## 关联的Issue 关联Issue [#7186](https://gitcode.com/cann/ops-nn/issues/7186) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12749 | 3 天前 | |
fix(conv): 修复infershape与Depthwise融合pass的7处缺陷 (回退) Co-authored-by: XianyongWang<aaronhkw@163.com> # message auto-generated for no-merge-commit merge: !12855 merge revert-mr-12390-1793093053077-auto into master fix(conv): 修复infershape与Depthwise融合pass的7处缺陷 (回退) Created-by: XianyongWang Commit-by: XianyongWang Merged-by: cann-robot Description: ## 描述 回退PR https://gitcode.com/cann/ops-nn/pull/12390 ## 关联的Issue 不涉及 ## 测试 相关用例执行通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12855 | 2 天前 | |
feat(quant_matmul_activation_quant): 支持 SiLU + MX 量化融合 Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !11505 merge master into master feat(quant_matmul_activation_quant): 支持 SiLU + MX 量化融合 Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 为 quant_matmul_activation_quant 新增 activationType="silu"(Torch:activation_type="silu")。完整 FP32 MatMul 结果加可选 bias 后,逐元素计算 x * sigmoid(x),经 BF16 RINT 后进行 MXFP8 量化;输出保持 [..., M, N],scale 为 [..., M, ceil(N/64), 2]。 - ND 支持四种 E4M3FN/E5M2 输入组合及 FF/FT/TF/TT 转置;WeightNZ 要求 x2 为 E4M3FN、transposeX1=false,支持两种 x1 FP8 和两种 transposeX2。输出 dtype 与 x1 一致。 - 支持 batch 广播、FP32 bias、OCP/BLAS(scaleAlg=0/1)及 RINT。 - 补齐 ACLNN/Torch 参数校验、图推导、tiling 和单/多 batch、A 全载/非全载 kernel 分发。 - 共用 N 对齐常量统一为 MX_BASEN_ALIGN=32UL,扩展 CSV 驱动 UT/ST 和 CPU golden。 **依赖配套 ops-tensor PR:https://gitcode.com/cann/ops-tensor/merge_requests/466**。使用新的 BlockEpilogueSiluMxQuant 头文件,构建时需要同步该变更。 ## 关联的Issue 关联 https://gitcode.com/cann/ops-nn/issues/6395 配套 epilogue 需求:https://gitcode.com/cann/ops-tensor/issues/287 补充关联(TTK 用例失败):https://gitcode.com/cann/ops-nn/issues/6406 ## 测试 - 2026-10-07 的功能实现版本(当时名称为 sigmoid_mul)完成了定向完整二进制包构建和安装;在 CANN 9.3.0 / Ascend950PR_9589 NPUSim 上,20 条边界用例及 1 条 A 全载专项共 21/21 PASS。FP8 rtol=0.001、atol=0、最低匹配率 0.999,E8M0 scale 逐位比较,未放宽精度标准。 - SiLU 重命名后,30 条 kernel CSV 加载校验通过;21 条 CPU golden 输出与改名前逐字节一致。 - 本 PR 新增/扩展的 CSV 覆盖 Host/API/Kernel UT、TTK kernel/ACLNN/E2E:ND/NZ、dtype/转置、OCP/BLAS、N/K 尾块、M=1、batch/bias、全载/非全载和非法参数。上述用例配置不等同于整套 UT/ST 已完成设备执行。 - 提交前 clang-format、ruff、codespell、OAT 等钩子通过,当前分支差异检查通过。 - NPUSim 验证属于重命名前的实现版本;当前提交未重新编包或上板。原验证环境未识别到 NPU,故无实机通过结论。20 条专项边界 CSV 为独立验证输入,本 PR 保留仓内常规 CSV 回归和宽 N 全载用例。 ## 文档更新 更新算子 README、ACLNN ND/WeightNZ 文档、Torch API、算子目录、Torch API 目录和测试运行说明,统一正文名称为 SiLU,参数值保留小写 silu。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11505 | 6 天前 | |
[L1] fix: ascend.cmake 的 include 列表有 4 行用 U+00A0 缩进 → CMake 把它当成 8 个独立列表项(实测),改为 ASCII 空格 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !11442 merge fix-nbsp-indent-in-ascend-cmake into master [L1] fix: ascend.cmake 的 include 列表有 4 行用 U+00A0 缩进 → CMake 把它当成 8 个独立列表项(实测),改为 ASCII 空格 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 问题 examples/fast_kernel_launch_example/cmake/ascend.cmake 里 set(ASCEND_INCLUDE_DIRS ...) 这个列表, 第 65、67、68、69 这 4 行的行首缩进**不是普通空格,而是不换行空格 U+00A0**(每行两个,UTF-8 字节为 C2 A0): console $ sed -n '65p' examples/fast_kernel_launch_example/cmake/ascend.cmake | od -c | head -2 0000000 302 240 302 240 $ { A S C E N D _ D 0000020 I R } / o p p / b u i l t - i n 同一个列表里其余 15 行用的都是 4 个 ASCII 空格。 **CMake 不认为 U+00A0 是空白**(它的参数分隔只认空格/制表/换行),所以这 4 行不是"缩进丑一点", 而是**每个非 ASCII 空格都会变成一个独立的列表项**。在昇腾开发机(cmake 3.20.5)上按同样的字节复现: console $ cat /tmp/nbsp_demo.cmake set(INCS aa/bb cc/dd ee/ff ) list(LENGTH INCS N) message(STATUS "N=${N}") foreach(i ${INCS}) message(STATUS "item=[${i}]") endforeach() $ cmake -P /tmp/nbsp_demo.cmake -- N=5 ← 期望 3 个元素,实际 5 个 -- item=[aa/bb] -- item=[ ] ← NBSP 单独成项 -- item=[ ] ← NBSP 单独成项 -- item=[cc/dd] -- item=[ee/ff] 对应到本文件:ASCEND_INCLUDE_DIRS 会多出 **8 个内容只有一个 NBSP 的"目录"**, 它们再经 CMakeLists.txt:37 进入 INCLUDE_DIRECTORIES 参与编译。 现在的后果是列表被污染(这些"目录"不存在,编译器只会忽略); 但它是个真实的陷阱:**只要哪天这种缩进后面少打一个 ASCII 空格**, ${ASCEND_DIR}/… 就会粘成**一个**项, 路径开头带 NBSP,头文件搜索静默失效,排查成本很高。 ## 修改 把这 4 行的行首缩进换成与同文件其它行一致的 4 个 ASCII 空格,**只动行首的 8 个字符,路径本身一字不改**: diff - ${ASCEND_DIR}/opp/built-in/op_impl/ai_core/tbe/impl/ops_nn/ascendc/conv3d_v2/arch35 + ${ASCEND_DIR}/opp/built-in/op_impl/ai_core/tbe/impl/ops_nn/ascendc/conv3d_v2/arch35 - ${CMAKE_CURRENT_SOURCE_DIR}/../../conv/common/op_host/op_tiling/arch35 + ${CMAKE_CURRENT_SOURCE_DIR}/../../conv/common/op_host/op_tiling/arch35 - ${CMAKE_CURRENT_SOURCE_DIR}/../../conv/conv3d_v2/op_host/op_tiling/arch35 + ${CMAKE_CURRENT_SOURCE_DIR}/../../conv/conv3d_v2/op_host/op_tiling/arch35 - ${CMAKE_CURRENT_SOURCE_DIR}/../../conv + ${CMAKE_CURRENT_SOURCE_DIR}/../../conv ## 复验 1. 脚本硬断言:全文件 U+00A0 恰为 8 个,且全部位于第 65/67/68/69 行的行首(\xc2\xa0 \xc2\xa0 前缀), 改完文件里 \xc2\xa0 为 0; 2. 脚本硬断言:同一个列表里其余 15 行( ${…} 形式)都是 ASCII 缩进(本改动是向既有风格对齐,不是引入新风格); 3. CMake 的空白判定与"U+00A0 会单独成项"是在昇腾开发机上用 cmake -P 实测的(上面 N=5),不是推断; 4. 不改任何路径、变量名、编译选项,也不动其它文件。 See merge request: cann/ops-nn!11442 | 7 天前 | |
修改aclnn确定性开关 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12749 merge master into master 修改aclnn确定性开关 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 1、修改aclnn确定性开关为aclrtSetSysParamOpt 2、修复删除查看源码后的多余空行 ## 关联的Issue 关联Issue [#7186](https://gitcode.com/cann/ops-nn/issues/7186) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12749 | 3 天前 | |
修复ForeachMulList算子计算单核数据量错误问题 Co-authored-by: kevin_huang<kevin.huangdi@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master 修复ForeachMulList算子计算单核数据量错误问题 Created-by: kevin_huang1234 Commit-by: kevin_huang Merged-by: cann-robot Description: ## 描述 修复ForeachMulList算子计算单核数据量错误问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/7441 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. 完成算子ST测试 2. 完成950冒烟测试 3. 完成OPB冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12664 | 2 天前 | |
更正 InitEmbeddingHashTable README 中的 initializer_mode 取值 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12429 merge codex/init-embedding-hash-table-initializer-mode-20261021 into master 更正 InitEmbeddingHashTable README 中的 initializer_mode 取值 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # 更正 InitEmbeddingHashTable README 中的 initializer_mode 取值 InitEmbeddingHashTable 的 README 将常量初始化模式写为 const,而 Host 实现只接受 constant,按文档配置会被判为非法模式。已将 README 的初始化模式说明更正为 random、constant,并修正 constant_value 的生效条件。静态核对及补丁检查通过。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6992 See merge request: cann/ops-nn!12429 | 3 天前 | |
960_maxpoolv3grad适配 Co-authored-by: duxinlei<duxinlei@h-partners.com> # message auto-generated for no-merge-commit merge: !12496 merge 960_maxpoolv3grad into master 960_maxpoolv3grad适配 Created-by: duxinlei Commit-by: duxinlei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 960_maxpoolv3grad适配;追加sparseSegmentMeanGrad的fe通路960dt适配 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#7365](https://gitcode.com/cann/ops-nn/issues/7365) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟和david冒烟 用例通路自测 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12496 | 2 天前 | |
[soft_margin_loss_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !11192 merge soft_margin_loss_grad_quality_hardening into master [soft_margin_loss_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: # [soft_margin_loss_grad] quality-hardening:算子质量加固修复(准入+检视问题整改) ## 一、变更概述 本 PR 针对 SoftMarginLossGrad(soft_margin_loss_grad)算子 2026-09-23 准入扫描(白盒模式,总体结论 FAIL:E3 TBE ini 残留 FAIL、1.4 资料缺约束说明 FAIL、E4 旧 Tiling 注册 WARN)与代码检视(144 条例,FAIL 5 / SUSPICIOUS 1 / 风格违规 4 项 / 设计一致性 S2、S5、S6、D8 不一致)发现的问题,完成如下整改: - 准入 1.4:README 与 aclnn 文档补齐动态 shape/动态 rank 声明与空 tensor 短路行为声明(消除 FAIL); - 准入 P6/检视 REDLINE-2:aclnn 层新增 CheckReduction 取值校验,reduction 越界不再索引 REDUCTION_STR(消除越界读未定义行为); - 准入 P5:aclnn 头文件参数注释补齐 BFLOAT16; - 准入 D7/D10:归档用例缺口清零(passed.csv 补 6 条带 strides 非连续用例、l2_exception.csv 补 dtype/format 异常 4 条); - 检视 HOST-1:op_host 删除链式 InferDataType 注册,消除与 op_graph 的重复注册; - 检视 LOG-1:tiling 与 op_api 两侧裸 OP_LOGE 收敛为 OP_LOGE_FOR_INVALID_SHAPEDIM / OP_LOGE_FOR_INVALID_SHAPES_WITH_REASON 预定义宏; - 检视 GEN-7.1/GEN-4.2/GEN-1.3:C 风格转换改 static_cast、kernel 入口数组长度改命名常量、TilingData 只写不读三字段删除(复用面复核无消费者); - 风格 STYLE-3.3:清理 AI 开发阶段横幅/编号注释; - 设计一致性 S2/S5/S6、D8:DESIGN.md v1.1/v1.2 与实现同步(切分轴从内向外、cof_is_mean+total_num+P=8+workspace=0、字面 9 op 链、文档全角/空格格式),REQUIREMENTS.md 数字空格同步。 变更范围:代码仓 quality-hardening-soft_margin_loss_grad/ops-nn(分支 soft_margin_loss_grad_quality_hardening,自基线 2b83d6781 起 7 笔提交)+ 交付件仓 operator-artifacts/SoftMarginLossGrad/(提交 625b165/8a47e70 本算子部分,另含 Golden 绑定修复 a379273)。 说明:准入 P1(E3 950 ini 残留)由上游 canndev 提交 76b8921f24(legacy 下线:删除 20 个算子的 950 ini 段)闭环,本 PR 对 canndev 零改动,仅在验证章节记录核实结果。 ## 二、分类修改清单 ### (一)代码修复(ops-nn,逐条对应报告条目) | 报告条目 | 修复内容 | 文件 | |---------|---------|------| | REDLINE-2 / admission P6(FAIL,高) | 新增 CheckReduction():reduction 不在 [REDUCTION_NONE_NUM, REDUCTION_SUM_NUM] 报 ACLNN_ERR_PARAM_INVALID;CheckParams 增加 reduction 形参并在索引 REDUCTION_STR 前校验(对齐 canndev 既有修复) | loss/soft_margin_loss_grad/op_api/aclnn_soft_margin_loss_backward.cpp:103-110、:116-119、:202 | | HOST-1(FAIL,高) | 删除 op_host 链式 .InferDataType(...) 一节,消除与 op_graph IMPL_OP(...).InferDataType(...) 的重复注册;InferShape 原地保留 | loss/soft_margin_loss_grad/op_host/soft_margin_loss_grad_infershape.cpp:60 | | LOG-1(FAIL,高) | tiling rank 越界改用 OP_LOGE_FOR_INVALID_SHAPEDIM、广播不兼容改用 OP_LOGE_FOR_INVALID_SHAPES_WITH_REASON;op_api 广播失败两处改用 OP_LOGE_FOR_INVALID_SHAPES_WITH_REASON(EZ0010,新增 kOpName 与 log/log.h 依赖) | loss/soft_margin_loss_grad/op_host/arch35/soft_margin_loss_grad_tiling_arch35.cpp:252-258;loss/soft_margin_loss_grad/op_api/soft_margin_loss_grad.cpp:33-46、:12、:24 | | GEN-7.1(FAIL,中) | (int64_t)x C 风格转换全量替换 static_cast<int64_t>(...)(10 处) | loss/soft_margin_loss_grad/op_host/arch35/soft_margin_loss_grad_tiling_arch35.cpp:55/58/61/101/141/167/170/252/304/308 | | GEN-4.2(FAIL,中) | kernel 入口 GM_ADDR ins[3]/outs[1] 字面量改用 kMaxInputSlots/kMaxOutputSlots 命名常量 | loss/soft_margin_loss_grad/op_kernel/soft_margin_loss_grad.cpp:31-32 | | GEN-1.3(SUSPICIOUS,低) | TilingData 删除只写不读字段 rank/num_inputs/num_outputs 及 Host 侧赋值(复用面复核:kernel 用模板常量 RANK 与 kMaxInputSlots/kMaxOutputSlots、UT 不访问字段、canndev 残留为独立 AutoTiling 机制不引用本结构体) | loss/soft_margin_loss_grad/op_kernel/arch35/soft_margin_loss_grad_tiling_data.h:47-57;loss/soft_margin_loss_grad/op_host/arch35/soft_margin_loss_grad_tiling_arch35.cpp(DoTilingAndSet 三处赋值删除) | | STYLE-3.3(风格,中) | 删除 kernel 分节横幅、CheckParams 步骤编号注释(改语义描述:参数空指针校验 / reduction 取值范围校验 / 输入数据类型校验 / 输出 shape 校验)、tiling_data.h 常量横幅 | loss/soft_margin_loss_grad/op_kernel/arch35/soft_margin_loss_grad.h:29;loss/soft_margin_loss_grad/op_api/aclnn_soft_margin_loss_backward.cpp:112-127;loss/soft_margin_loss_grad/op_kernel/arch35/soft_margin_loss_grad_tiling_data.h | | admission P5(低,补充) | aclnn 头文件 gradOutput/self/target/out 四参数注释补齐 BFLOAT16 | loss/soft_margin_loss_grad/op_api/aclnn_soft_margin_loss_backward.h:27-38 | ### (二)资料修复 | 报告条目 | 修复内容 | 文件 | |---------|---------|------| | admission 1.4 / P2(FAIL) | README 约束章节与 aclnn 文档「约束说明」补动态 shape/动态 rank 声明(DynamicShapeSupportFlag=true、DynamicRankSupportFlag=true) | loss/soft_margin_loss_grad/README.md:88;loss/soft_margin_loss_grad/docs/aclnnSoftMarginLossBackward.md:233 | | admission 1.4 / P3(FAIL) | README 与 aclnn 文档补空 tensor 短路行为声明(numel=0 不执行计算、输出为空 tensor、返回 ACLNN_SUCCESS) | loss/soft_margin_loss_grad/README.md:89;loss/soft_margin_loss_grad/docs/aclnnSoftMarginLossBackward.md:234 | | code-review D8(文档格式) | aclnn 文档 reduction 行中文正文半角括号改全角(0(none) → 0(none));REQUIREMENTS.md 数字空格整改(0-8 维 → 0-8维) | loss/soft_margin_loss_grad/docs/aclnnSoftMarginLossBackward.md:113;operator-artifacts SoftMarginLossGrad/REQUIREMENTS.md:70 | | code-review S2/S5/S6(设计一致性 ❌) | DESIGN.md v1.1 改文档迁就实现:切分轴从内向外搜索 + error 507035 规避论证(a_i≥1 恒成立、per_buf_bytes 32B 对齐、NDDMA dst 连续紧排);TilingData 字段(cof_is_mean/total_num)、kPhysNodes=8、per_buf_bytes=(ubSize/8)&~31 动态、workspace=0 与 gert TilingData 机制、cof 在 Kernel Init 以 1.0f/total_num 计算(先乘 grad 防 mean 溢出);字面 9 op 链(S1-S9)+ ISSUE-3 修订;DESIGN.md v1.2 同步 GEN-1.3 字段删除 | operator-artifacts SoftMarginLossGrad/DESIGN.md:8-9、:316、:627、:822、:928 | ### (三)用例与交付件补充 | 报告条目 | 修复内容 | 文件 | |---------|---------|------| | admission D7/D10(覆盖度缺口) | passed.csv 新增 6 条带 tensor_view_strides 非连续用例(L1_002/L1_004/L1_009/L1_035/L1_044/L1_117);l2_exception.csv 新增 4 条预期异常用例(不支持 dtype int32×1、NZ 格式异常×fp16/fp32/bf16),D7/D10 缺口清零 | operator-artifacts SoftMarginLossGrad/测试用例/aclnnSoftMarginLossBackward_passed.csv、aclnnSoftMarginLossBackward_l2_exception.csv | | Golden cross_check 绑定修复 | Torch 通路 third_party 由字符串形式改为类形式 _TorchSoftMarginTorch:self 输入与 Python 保留槽冲突,服务端按名字绑定不进 **kwargs,改经 *args 位置接收、target/reduction 经 **kwargs 提供,修复 cross_check 绑定 | operator-artifacts SoftMarginLossGrad/Golden/soft_margin_loss_backward.py:123-145、:167 | ## 三、逐 commit 摘要 ### 代码仓(ops-nn,分支 soft_margin_loss_grad_quality_hardening,自基线 2b83d6781 起) | commit | 日期 | 主题 | 对应报告条目 | |--------|------|------|-------------| | ef2a9f45d | 2026-09-24 | 修复代码检视问题 | REDLINE-2/P6(CheckReduction)、HOST-1(删链式 InferDataType)、LOG-1(tiling 侧宏)、GEN-7.1(static_cast)、GEN-4.2(命名常量)、P5(头文件 BF16 注释) | | 36974d574 | 2026-09-24 | 资料补齐约束说明与文档格式修复 | 1.4/P2(动态 shape 声明)、1.4/P3(空 tensor 声明)、D8(aclnn 文档全角括号) | | c06596283 | 2026-09-24 | GEN-1.3 清理 TilingData 只写不读字段 | GEN-1.3(rank/num_inputs/num_outputs 三字段及 Host 赋值删除) | | 1313aff13 | 2026-09-24 | LOG-1 收敛 op_api 广播失败日志到预定义宏 | LOG-1(op_api 侧 OP_LOGE_FOR_INVALID_SHAPES_WITH_REASON) | | 33f5c3f2a | 2026-09-24 | STYLE-3.3 清理 AI 开发阶段注释残留 | STYLE-3.3(kernel 横幅、CheckParams 编号注释改语义) | | c11ff4001 | 2026-10-08 | 回退 experimental 路径误改(其他对话追加) | 恢复 experimental/loss/soft_margin_loss_grad 与上游一致形态:撤销此前误落在 experimental 路径的 CheckReduction、op_graph 增量(CMakeLists/graph_infer)、ascend950 AddConfig、tiling reduction 校验、broadcast-util 依赖与 int32 进度改造等 8 文件改动 | | 63b0b42c2 | 2026-10-09 | experimental 路径与上游逐字节对齐(其他对话追加) | README 行尾空格、infershape/kernel 文件尾换行等字节级对齐;experimental/loss/soft_margin_loss_grad 与 origin/master diff 归零 | ### 交付件仓(operator-artifacts,本算子部分) | commit | 日期 | 主题 | 对应报告条目 | |--------|------|------|-------------| | a379273 | 2026-09-24 | fix(soft_margin_loss_grad): Torch 通路 third_party 改类形式修复 cross_check 绑定 | Golden 绑定修复 | | 625b165 | 2026-09-24 | quality-hardening 19 算子批量修复(SoftMarginLossGrad 部分):DESIGN.md v1.1(S2/S5/S6 同步)、REQUIREMENTS.md(D8)、passed.csv(+6 strides)、l2_exception.csv(+4) | S2/S5/S6、D8、D7/D10 | | 8a47e70 | 2026-09-24 | 第二轮补修(SoftMarginLossGrad 部分):DESIGN.md v1.2(GEN-1.3 字段删除同步) | GEN-1.3(文档侧) | ## 四、测试与验证 - **白盒复跑(静态)**:准入报告两处 FAIL 均已闭环——1.4 资料约束说明(README:88-89、aclnn 文档:233-234);E3 由上游 canndev 76b8921f24 删除 950 ini [SoftMarginLossGrad] 段(当前 2102 行 ini grep 无该段,本分支核实)。E4 旧 Tiling 注册为 WARN 且属禁区(见未完成事项),维持现状。 - **检视复盘**:FAIL 5(REDLINE-2/HOST-1/LOG-1/GEN-7.1/GEN-4.2)全部修复,SUSPICIOUS 1(GEN-1.3)已清理;设计一致性 ❌ 4 维(S2/S5/S6/D8)经 DESIGN.md v1.1/v1.2 与 REQUIREMENTS.md 同步闭环。 - **覆盖度复测(缺口核对)**:admission 覆盖度报告为 2026-09-23 修复前快照(aclnn 侧 85.7% PASS),列示缺口 D7(非连续:CSV 无 strides 列)与 D10(不支持 dtype 异常、format 异常×BF16/FLOAT/FLOAT16 缺失)已由 6 条 strides 用例 + 4 条 l2_exception 用例逐一补齐(D7/D10 缺口清零);覆盖度评估器(Step 7.5)未随修复重跑,复测得分待扫描器重跑后更新。 - **交付件一致性**:1.6 本地交付件 CSV 复核——aclnn doc ↔ spec.yaml ↔ REQUIREMENTS dtype 集一致、golden 规则 a-h 通过、接口资料含 out 与 tolerance 表一致,判定一致(PASS)。 - **编译/实机**:本环境无 NPU/TTK,未执行实机编译与 GEIR/TTK 通路验证(admission-report §五 UNAVAILABLE)。本批次代码改动均为局部修改(新增参数校验、宏替换、类型转换、字段/注释清理),未触碰 kernel 计算链路(字面 9 op 链公式与调度不变);本分支未改动 tests/ut 与 tests/st 归档用例。 ## 五、未完成事项与限制 本 PR 遵守三条禁区决策,以下事项不在本次修复范围: 1. **不新增 ACLNN 接口**:本算子已具备手写 aclnn 两段式接口(op_api),无新增接口需求(admission 1.3 资料缺失 PASS)。 2. **不处理产品支持矛盾**:admission 1.1 产品支持 PASS(README 6 产品与代码双向一致),无矛盾行动项。 3. **不改 canndev 仓**:本 PR 不含任何 canndev 修改。E4 旧 Tiling 注册(op_tiling/soft_margin_loss_grad.cc:86,已由上游 TILING_REG_FLAG 隔离)与 canndev 旧仓残余(canndev/ops/loss/soft_margin_loss_grad 迁移中间态)维持现状,随旧芯片下线版本清理。 其余未完成事项与限制: 4. **STYLE-1.4/1.5/2.3 豁免待裁决**:TilingData 字段 snake_case(仓内 Broadcast 范式统一约定,DESIGN §3.2 同型)、k 前缀常量(CANN 算子仓历史约定)、指针声明符随类型(与仓内 clang-format PointerAlignment: Left 缺省冲突,手改会被格式化还原)——代码检视报告原文自附「建议豁免」结语,需算子规范评审组整体裁定。 5. **无 NPU/TTK 实机验证**:GEIR TTK 测试模式 UNAVAILABLE,异常类结论基于代码+资料双向静态审视;环境就绪后需优先补测 reduction ∈ {0,1,2} 之外非法值(对应 CheckReduction 修复的实测)、广播不兼容、空 tensor 短路、rank=8 高维 shape,并回签 S2 切分轴从内向外搜索的 32B 对齐(error 507035)论证。 6. **kernel 侧无归档用例**:admission 第 16 项按评估器口径标记「无归档用例,不判 FAIL」,本批次未新增 kernel 侧归档 CSV,维持现状。 完整未修项明细见:guide/未修项明细/soft_margin_loss_grad_未修项明细.md(条目 1-6:E4 旧 Tiling 注册残留、canndev 旧仓残余、NPU/TTK 实机验证与补测缺口、STYLE-1.4、STYLE-1.5、STYLE-2.3)。 See merge request: cann/ops-nn!11192 | 2 天前 | |
fix(wqbmmv2): 修复 arch35 adaptive split tiling 的 L1 预算校验缺陷(PreloadA 封顶 + 全载/扩展预算) Co-authored-by: maqijun<maqijun@h-partners.com> # message auto-generated for no-merge-commit merge: !12304 merge fix/wqbmmv2_preload_l1_overflow into master fix(wqbmmv2): 修复 arch35 adaptive split tiling 的 L1 预算校验缺陷(PreloadA 封顶 + 全载/扩展预算) Created-by: maqijun Commit-by: maqijun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> **问题**:WeightQuantBatchMatmulV2 在 arch35(DAV3510)adaptive split tiling 路径上,perchannel、weight(int4)转置、x(bf16)非转置场景下,多组形状因 **L1 预算校验缺陷**导致 kernel 缓冲区越界/相互踩踏,结果非确定性出错(背景与复现数据见关联 Issue)。本 PR 修复同文件内三处相关缺陷(host tiling,kernel 不变): - **缺陷 1:PreloadA 预载长度越界**。 SetPreLoad 判断 A 预载是否装得下时只用粗估 256KB,未扣除 L1 A 区实际被 WeightL1(baseN×baseK×stepKb,双缓冲)和 bias(4KB,双缓冲)占用的空间;kernel 侧按 host 下发的 aPreloadSize 预载 A 时越界踩踏 WeightL1_P1,与 AIV 反量化写 Weight 竞态。实测 16 核(baseN=352)溢出 32KB、22 核(baseN=384)溢出 12KB。 - **缺陷 2:baseN 扩展检查无符号下溢**。CheckL1SizeAfterExtending 用无符号减法比较 L1 预算,al1Size 超过 aL1MaxSize 时左侧下溢为巨大正数,扩展误判放行(baseN 256→288)。 - **缺陷 3:A 全载准入低估真实占用**。OptimizeMatmulTiling 判断 A 全载时按 baseM × CeilAlign(K,32) × 2B 估算(255KB ≤ 256KB 放行),但 kernel 按 baseK 粒度实际分配(K=1632→1664,真实 260KB),且预算未扣除 WeightL1/bias,最终 AL1 260KB + WeightL1 288KB = 548KB > L1(512KB)。 **修复**: 1. SetPreLoad:按 kernel 真实 L1 布局,用 L1 − 2×(weight单块 + bias单块) 计算 A 区真实剩余(换算为元素数后向下对齐预载粒度),对 aPreloadSize 做 min 封顶;装得下时行为完全不变。 2. CheckL1SizeAfterExtending:改为纯加法等价式 al1Size + extendedBl1Size > aL1MaxSize + l1Size/2,消除无符号下溢。 3. OptimizeMatmulTiling 全载准入:**保留原估算准入条件不变**(不影响贴边但实际装得下的既有用例的 full-load 性能),新增真实占用校验——kernel 按 CeilAlign(kAlign, baseK) 粒度分配 AL1,真实 AL1 与 WeightL1+bias 占用之和不得超过 L1 容量(加法式,无下溢)。 4. WeightL1+bias 占用公式抽取为 GetWeightL1AndBiasBytes 单一实现,SetPreLoad 与全载准入共用,防止两处公式漂移;bias 单块 4KB 与预载对齐粒度 64 常量化为 BIAS_L1_SIZE / A_PRELOAD_ALIGN(注释标明与 kernel 侧 BT_SIZE 及 128B cacheline 的对应关系)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #7357 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本机全仓构建 libophost_nn.so(make ophost_nn)替换 CANN 安装目录同名库后实测,**kernel 为未修改的原始版本**(已清 JIT 缓存重编),即设备上运行的就是本 PR 内容: | 用例 | 配置 | 修复前 | 修复后 | |---|---|---|---| | M=256 K=6144 N=6912 | 图模式 16/22 核 | FAIL(非确定,rel_l2 0.2~0.6) | PASS(rel_l2 2.82e-03),vs eager 逐 bit 一致 | | M=256 K=6144 N=6912 | 图模式 8~32 其余核数 + eager | PASS | PASS(无回归) | | M=80 K=1632 N=9216 | eager 原生配置 | FAIL(非确定,rel_l2 0.95~1.4) | PASS(rel_l2 2.80e-03) | | M=80 K=1632 N=9216 | 图模式合法配比 16AIC:32AIV | 竞态下偶发正确 | PASS,vs eager 逐 bit 一致 | 修复后 tiling:M=80 用例全载被拒退回流式双缓冲,AL1 80KB + WeightL1 288KB = 368KB < 512KB;M=256 16 核预载量 98304→81920 元素(封顶至 A 区真实剩余 160KB)。 ST 回归用例:rdv_BF16S4_t_nd_perchannel_preload_overflow(M=256)、rdv_BF16S4_t_nd_perchannel_l1_budget_overflow(M=80)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12304 | 2 天前 | |
适配4个Norm算子支持ascend960 Co-authored-by: clwsy1<wangsiyang3@huawei.com> # message auto-generated for no-merge-commit merge: !12575 merge dev into master 适配4个Norm算子支持ascend960 Created-by: clwsy1 Commit-by: clwsy1 Merged-by: cann-robot Description: ## 描述 新增AddLayerNormQuant、InstanceNorm、LayerNormGrad和LayerNormGradV3算子支持ascend960 ## 关联的Issue [#7373](https://gitcode.com/cann/ops-nn/issues/7373) ## 测试 4个算子均通过自测验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12575 | 2 天前 | |
fix(optim): inplace_apply_proximal_adagrad尾tile预取传余数修复末核GM越读 Co-authored-by: dengguojie<dengguojie@huawei.com> # message auto-generated for no-merge-commit merge: !12827 merge fix/174 into master fix(optim): inplace_apply_proximal_adagrad尾tile预取传余数修复末核GM越读 Created-by: dengguojie Commit-by: dengguojie Merged-by: cann-robot Description: ## 描述 InplaceApplyProximalAdagrad(arch35) Process() 中尾 tile 预取硬编码满长 ubFactor_:任一核 blockLen 不能被 ubFactor 整除时,末核尾 tile 实际仅余 blockLen − i×ubFactor 个元素,预取却按满长进行,越过张量末端——mssanitizer 插桩检出 3 次 illegal read(608/608/864 B @ block aiv(55) 尾核,语句级栈帧 op_kernel/arch35/inplace_apply_proximal_adagrad.h:480;触发示例 shape (235,126,16,112) fp16,每核余数 1,344 → 逻辑越读 1,408 B/张量)。 修复:尾 tile 预取改传三元式余数——(i+1) == loopCount-1 时取 blockLen_ − (i+1)×ubFactor_,否则满长 ubFactor_;与 Process() 既有尾块三元式及仓内 layer_norm_grad 等「预取下一块」写法一致。改动 +4/−1,仅 1 个文件:optim/inplace_apply_proximal_adagrad/op_kernel/arch35/inplace_apply_proximal_adagrad.h。 ## 关联的Issue Fixes #7445 ## 测试 - mssanitizer(mSSAN memcheck)插桩:修复前 3× illegal read(608/608/864 B)→ 修复后 **No error detected**; - OOM 越界插桩:触发用例 2/2 转干净(修复前 VEC_ERROR); - 数值比对:触发 shape (235,126,16,112) fp16 等 4 组用例修复前后**逐位一致**(bit-exact,100% PASS); - 全量回归:主套件 571/571 全绿,四分类对账 PASS→FAIL = **0**(零退化;FAIL→PASS 3 = mSSAN 转绿 + OOM 2 例转干净,其余原绿保持)。 ## 决策与权衡 - 处置选型:算子侧最小收敛(本方案,2 行三元式)vs 运行时豁免/环境侧规避——越读虽数值良性(不进计算、不回写),但插桩档系统性可见且生产 trap 有风险,内存安全收紧趋势下应在算子侧消除,故选算子侧修复; - 修改面控制:仅 kernel 单文件单 hunk(预取长度三元式),不触碰 op_host/tests/golden/公共代码;修复不改变任何数值结果(全量回归逐位一致佐证)。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12827 | 2 天前 | |
rt1.0_avg_pool3_d_and_grad Co-authored-by: duxinlei<duxinlei@h-partners.com> # message auto-generated for no-merge-commit merge: !12344 merge rt1.0_avg_pool3_d_and_grad into master rt1.0_avg_pool3_d_and_grad Created-by: duxinlei Commit-by: duxinlei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 日落avg_pool3_d和avg_pool3_d_grad,并新增与canndev对齐的参数校验; ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #7360 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟通过 本地自测通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12344 | 2 天前 | |
fake_quant_with_min_max_args算子精度提升 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !12808 merge dev_quant into master fake_quant_with_min_max_args算子精度提升 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fake_quant_with_min_max_args算子精度提升 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/wangyueting/changwei_liuyi/issues/84 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码实现优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12808 | 2 天前 | |
fix: 整改 gru 等 9 个算子非法使用的错误码 Co-authored-by: xiu_ling_wang<wangxiuling2@h-partners.com> # message auto-generated for no-merge-commit merge: !12805 merge gru_gru_single_layer_lstm_grad into master fix: 整改 gru 等 9 个算子非法使用的错误码 Created-by: xiu_ling_wang Commit-by: xiu_ling_wang Merged-by: cann-robot Description: ## 描述 将以下 9 个算子中非法使用的错误码统一整改为规范用法: gru、gru_grad、single_layer_lstm_grad、convolution_backward、dynamic_rnn、 dynamic_rnnv2、thnn_fused_lstm_cell、thnn_fused_lstm_cell_grad、modulate_grad。 改动原因:算子中多处使用废弃/内部错误码(E89999、EZ9999、E69999)及 VECTOR_INNER_ERR_REPORT_TILIING 等不合规上报接口,且存在重复上报与 不可达的错误检查,违反错误码使用规范。 改动方法: - 参数校验类场景改用 OP_LOGE_FOR_INVALID_* 等语义化接口; - 合法输入下的内部失败统一走预定义错误码并收敛为首次上报; - 冗余/重复的日志上报改为 OP_LOGE_WITHOUT_REPORT; - 删除时序上不可达的死检查。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/7249 ## 测试 - 完成算子源码编译验证(op_host / op_api 目标级); - 错误码处置台账静态复扫对账 PASS,算子目录内非法内部码字面量清零; - thnn_fused_lstm_cell / thnn_fused_lstm_cell_grad等 的 op_host、op_api UT 已实测全量通过。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12805 | 2 天前 | |
适配4个Norm算子支持ascend960 Co-authored-by: clwsy1<wangsiyang3@huawei.com> # message auto-generated for no-merge-commit merge: !12575 merge dev into master 适配4个Norm算子支持ascend960 Created-by: clwsy1 Commit-by: clwsy1 Merged-by: cann-robot Description: ## 描述 新增AddLayerNormQuant、InstanceNorm、LayerNormGrad和LayerNormGradV3算子支持ascend960 ## 关联的Issue [#7373](https://gitcode.com/cann/ops-nn/issues/7373) ## 测试 4个算子均通过自测验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12575 | 2 天前 | |
Revert "fix: hash trailing bytes after processed blocks" Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !12571 merge master into master Revert "fix: hash trailing bytes after processed blocks" Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 定界结论: 代码问题 / LLT编译失败 — common/tests/ut/op_host/test_common_hash_tiling.cpp / test_murmur_hash_tiling.cpp(基线分支引入, 非本 PR 变更) 失败类型: 代码问题 / LLT编译失败(UT 任务链接错误) 根因: 基线分支已合入的哈希 tiling UT 测试(common/tests/ut/op_host/test_common_hash_tiling.cpp、test_murmur_hash_tiling.cpp)引用 RuntimeKb::CommonHash 与 Ops::NN::HostTiling::MurmurHash, ascend910b 版本的 UT 链接闭包缺少这两个符号的实现, 导致 nn_op_host_ut 链接失败; 同一 UT 在 ascend950 版本链接成功且用例全部通过 与本 PR 的关系: 本 PR 的 21 个变更文件全部位于 norm/in_training_update_grad/(新增 ascend350 支持), 均不含失败文件; 近 30 小时内另有 6 个不同 PR 的 run 挂同一 Job(抽验错误完全一致)→ 失败为基线(master)已合入代码的缺陷, 非本 PR 引入 处置建议: ① 本 PR 无需修改代码; 通知基线哈希 tiling 测试/实现的相关提交者或仓库维护者, 为 ascend910b 补齐这两个符号的实现(或按版本裁剪/条件编译该测试); ② 基线修复后重新触发流水线即可完成验证 排除项: 非环境问题——同 run 内 29 个 compile Job、其余 3 个 ut Job(不同版本/目标)全部通过, 且同一错误在其他 PR 上确定性复现(非瞬时网络/设备/Runner 故障); 非本 PR 引入——失败文件不在 PR 变更集, 本 PR 的 CMake 改动(COMPUTE_UNIT ascend950 → ascend950 ascend350)仅作用于 in_training_update_grad 算子自身 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 配套issue 异常回退 https://gitcode.com/cann/ops-nn/issues/7196 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ok ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12571 | 7 天前 | |
修改aclnn确定性开关 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12749 merge master into master 修改aclnn确定性开关 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 1、修改aclnn确定性开关为aclrtSetSysParamOpt 2、修复删除查看源码后的多余空行 ## 关联的Issue 关联Issue [#7186](https://gitcode.com/cann/ops-nn/issues/7186) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12749 | 3 天前 | |
multi_scale_deformable_attn_function/scaled_masked_softmax_v2增加ut结果的验证 Co-authored-by: caihualilili<liangfuzhan@h-partners.com> # message auto-generated for no-merge-commit merge: !12817 merge sms_msda_add_ut_check into master multi_scale_deformable_attn_function/scaled_masked_softmax_v2增加ut结果的验证 Created-by: caihualilili Commit-by: caihualilili Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 属于测试代码增强(UT increase),目标是让两个算子 host 侧 tiling 用例从“打印 tiling 结果、留待后续校验”改为对结果做实际断言。vfusion/multi_scale_deformable_attn_function 的 tiling 测试改为对 GetTilingKey() 与 TilingData2Str 输出做精确比对;vfusion/scaled_masked_softmax_v2 的 tiling 测试改为校验 TilingKey、原始 tiling 数据有效性和解析出的结构字段值。失败路径的用例同时删除了无意义的 tiling 结果打印。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#7171](https://gitcode.com/cann/ops-nn/issues/7171) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT本地测试结果:   ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 增加ut结果比较 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12817 | 2 天前 | |
修改matmul 算子atoll 异常反馈判断 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !7083 merge master into master 修改matmul 算子atoll 异常反馈判断 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改matmul 算子atoll 异常反馈判断,异常时返回默认值 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3882 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7083 | 3 个月前 | |
docs: 新增图融合规则说明文档 Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !9676 merge fusion_pass_doc into master docs: 新增图融合规则说明文档 Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 对于已开源的图融合算子,进行对应的资料开源,包含MatmulToGemmOpFusionPass、MatmulReshapeTransposeFusionPass、GemmToMatmulFusionPass、BatchMatMul2MulFusionPass 其中的png图片格式,使用lfs进行托管 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5541 ## 文档更新 matmul\batch_mat_mul_v3\docs\BatchMatMul2MulFusionPass.md matmul\mat_mul_v3\docs\MatmulToGemmOpFusionPass.md matmul\mat_mul_v3\docs\MatmulReshapeTransposeFusionPass.md matmul\mat_mul_v3\docs\GemmToMatmulFusionPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9676 | 1 个月前 | |
动态库解耦 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8927 merge master into master 动态库解耦 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 旨在将算子侧代码与 legacy 动态库(libophost_comm_legacy.so)解耦:LegacyCommonMgr 新增 isSupported_ 支持位与 IsSupport() 接口,依据编译宏 ASCEND_COMPUTE_UNIT 判断当前 SoC 版本是否属于受支持集合 SUPPORTED_VERS(ascend910b、ascend910_93、ascend310p、ascend310b、ascend910),仅受支持时才 dlopen 加载 legacy 库;各 legacy 封装接口在不受支持时提前短路返回,matmul 系列算子的 tiling 流程同步改为容忍 legacy 能力缺失而不再硬失败,并配套调整 CMake 编译宏与 UT 测试。 ## 关联的Issue [5093](https://gitcode.com/cann/ops-nn/issues/5093) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8927 | 2 个月前 | |
docs:修改代码块缺闭合围栏问题 Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !11686 merge master into master docs:修改代码块缺闭合围栏问题 Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6434](https://gitcode.com/cann/ops-nn/issues/6434) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> codearts_check_rule_config.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11686 | 13 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 16 天前 | |
docs: 修复注释与文档不一致(贡献指南与fast kernel launch示例) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !12380 merge docs/comment-cleanup-20261019-04 into master docs: 修复注释与文档不一致(贡献指南与fast kernel launch示例) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修正文档中与实际内容/上下文不一致的表述: - CONTRIBUTING.md:将“确保您的贡献符合项目标准,签署 CLA”中的半角逗号 , 改为全角逗号 ,,统一中文标点规范。 - examples/fast_kernel_launch_example/README.md:删除“Ascend 950PR&950DT系列产品产品使用”中的重复“产品”,共两处(第 33 行、第 83 行)。 ## 关联的Issue 关联 Issue #6948 https://gitcode.com/cann/ops-nn/issues/6948 ## 测试 仅文档变更,不涉及代码逻辑;已人工核对修改后语句与上下文一致,无功能影响。 ## 文档更新 - 更新 CONTRIBUTING.md - 更新 examples/fast_kernel_launch_example/README.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12380 | 8 天前 | |
init | 1 年前 | |
docs: add LayerNormRemoveBroadcastFusionPass doc Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9631 merge ln_pass_doc into master docs: add LayerNormRemoveBroadcastFusionPass doc Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 为现有LayerNormRemoveBroadcastFusionPass融合规则补充独立资料页。该规则在Ascend 950PR/Ascend 950DT场景下,将LayerNorm算子gamma和beta输入前的BroadcastTo从图中删除,使gamma和beta直接作为LayerNorm算子的输入,并将begin_norm_axis和begin_params_axis统一设置为归一化维度的起始轴。 资料同步说明规则的使用约束: - LayerNorm算子的gamma和beta输入前均为BroadcastTo,且两个BroadcastTo的shape输入相同。 - 输入x、gamma和beta均为静态shape。 - gamma和beta不为标量,二者的shape和数据类型相同。 - gamma的维数不大于x的维数,且gamma的shape与x从归一化轴开始的后缀shape相同。 - LayerNorm算子的begin_norm_axis换算为非负轴后,指向归一化维度的起始轴。 同时新增融合前后拓扑对比图,展示两个BroadcastTo节点被移除前后的图结构。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5430 ## 测试 - 本次仅新增文档和配图,不涉及代码逻辑变更,未执行代码测试。 - 已检查Markdown格式、图片文件格式及图片引用路径。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormRemoveBroadcastFusionPass.md,说明融合模式和使用约束。 - 新增docs/zh/figures/LayerNormRemoveBroadcastFusionPass_1.png,展示融合前后的图结构。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9631 | 1 个月前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 30 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 8 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 8 个月前 | |
docs: 修复注释与文档不一致(build脚本默认参数说明) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !12379 merge docs/comment-cleanup-20261019-03 into master docs: 修复注释与文档不一致(build脚本默认参数说明) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修正 build.sh 帮助信息与 docs/zh/install/build.md 中与实际实现不一致的默认参数说明: - -j[n]:默认值由「8」更正为「CPU 核心数」。build.sh 中 THREAD_NUM=$(grep -c ^processor /proc/cpuinfo),未显式传入 -j 时按 CPU 核心数编译。 - --vendor_name:默认值由「customize-nn」更正为「custom」。build.sh 在 run_example 场景下当 VENDOR_NAME 为空时设置为 custom。 涉及文件:build.sh(7 处 -j[n] 文案、1 处 --vendor_name 文案)、docs/zh/install/build.md(参数表 1 处)。 ## 关联的Issue - #6950 ## 测试 仅修改帮助文案与文档,不涉及代码逻辑变更;已核对 build.sh 中 THREAD_NUM 与 VENDOR_NAME 的实际默认值。 ## 文档更新 - docs/zh/install/build.md:更新 -j${n} 默认值说明为 CPU 核心数 - build.sh:更新 usage 中 -j[n]、--vendor_name 的默认值说明 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12379 | 8 天前 | |
chore(classify): 补全 conv_forward_ascendc 并登记 quant_conv2d Co-authored-by: XianyongWang<aaronhkw@163.com> # message auto-generated for no-merge-commit merge: !12638 merge classify-conv-forward into master chore(classify): 补全 conv_forward_ascendc 并登记 quant_conv2d Created-by: XianyongWang Commit-by: XianyongWang Merged-by: cann-robot Description: ## 描述 补全 classify_rule.yaml 中 conv_forward_ascendc 段的分类规则: - quant_conv2d 整算子首次登记。 - 镜像 quant_conv3d 模式补 quant_conv2d 的 UT 依赖 ## 关联的Issue Issue [#7256](https://gitcode.com/cann/ops-nn/issues/7256) ## 测试 不涉及 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:classify_rule 分类规则补全 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12638 | 3 天前 | |
docs:修改代码块缺闭合围栏问题 Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !11686 merge master into master docs:修改代码块缺闭合围栏问题 Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6434](https://gitcode.com/cann/ops-nn/issues/6434) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> codearts_check_rule_config.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11686 | 13 天前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 3 个月前 | |
revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Co-authored-by: cann-robot<cann@cann.team> # message auto-generated for no-merge-commit merge: !11095 merge revert-mr-9924-1790130631176-auto into master revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Created-by: cann-robot Commit-by: cann-robot Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11095 | 1 个月前 | |
upgrade version 9.2.0 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9513 merge master into master upgrade version 9.2.0 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 upgrade version 9.2.0 ## 关联的Issue [#5362](https://gitcode.com/cann/ops-nn/issues/5362) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 版本更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9513 | 1 个月前 |
🔥Latest News
- [2026/05] 优化kernel编译配置项,减少simplified_key和ascendc_config配置文件(!3330)。
- [2026/05] 引入ops-tensor,基于分层结构优化Cube类算子,减少偏移量计算和简化指令参数(!5036)。
- [2026/05] 发布生态算子的精度验收标准(!4572)。
- [2026/03] 开源算子支持下一代芯片:Ascend950PR(!450)。
- [2026/03] 新增<<<>>>的算子开发样例(!620)。
- [2026/03] 低bit类算子和融合算子支持更多数据类型:fp8/mxfp8/hifp8/mxfp4等,并支持pertensor/perchannel/pertoken/pergroup/perblock等不同量化和组合方式:全量化融合算子:quant_batch_matmul_v4,伪量化融合算子:weight_quant_batch_matmul_v2。
- [2026/03] 支持SIMD/SIMT新同构编程算子实现:[MapIndex](#660),[ScatterSub](#710)。
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR&950DT系列产品/KirinX90,可以通过NPU Simulator仿真工具开发调试;优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导;新支持稀疏4:2量化matmul算子,针对稀疏矩阵开启硬件加速能力。
- [2025/11] 新支持算子index_fill、masked_scatter、scatter、tf_scatter_add、fused_cross_entropy_loss_with_max_sum。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-nn项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-nn是CANN(Compute Architecture for Neural Networks)算子库中提供神经网络计算能力的高阶算子库,包括matmul类、activation类等算子,算子库架构图如下:

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,通用命令如下,${tag_version}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令:git clone -b ${tag_version} https://gitcode.com/cann/ops-nn.git
git clone -b 9.0.0 https://gitcode.com/cann/ops-nn.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。