| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 16 天前 | |
feat: aclnnApplyTopKTopP support Ascend 310P Co-authored-by: gcw_QnqOAGbO<2835806969@qq.com> # message auto-generated for no-merge-commit merge: !7744 merge pr-aclnn-apply-top-k-top-p-310p into master feat: aclnnApplyTopKTopP support Ascend 310P Created-by: gcw_QnqOAGbO Commit-by: gcw_QnqOAGbO Merged-by: cann-robot Description: ## 描述 aclnnApplyTopKTopP 算子新增 Ascend 310P 支持。 主要改动: - 新增 arch20 kernel(310P 专用),适配 310P 平台约束:DataCopyPad 禁用(用 DataCopy + AlignUp 替代)、SetValue 到 GM 需管线同步(SToMTE3Sync/MTE3ToSSync)、无 BF16 硬件 - GROUP_SIZE = BLOCK_BYTES / sizeof(outputT),确保 group 批量输出时 DataCopy 长度对齐(fp32=8,fp16=16) - batch 间增加 SToMTE2Sync,防止 S 管线 scatter 读 sortedValueLocal 时被下一 batch 的 MTE2 DataCopy 覆盖 - top-p only 模式(tilingKey=2)在 310P 上复用 combined kernel + SetMode(2),kthValue=-1e30 旁路 top-k,避免独立 top-p kernel 的 v-split 跨 core softMaxGm 竞争问题 - def.cpp 新增 ascend310p AICore config,binary config 注册 fp32 + fp16 - tiling outTensorBytes 修正为 BLOCK_BYTES * dataNumInit_,匹配 kernel 实际分配 - aclnn 接口名 aclnnApplyTopKTopP,PR 合入后即为本实现,opplugin(torch_npu.npu_top_k_top_p)直接调用 ## 关联的Issue [Requirement|需求建议]: aclnnApplyTopKTopP 算子新增 Ascend 310P 支持 ## 测试 - C++ example 验证:8 组 shape × 2 dtype(fp32/fp16)= 16 个 case 全部 PASS - opplugin 全链路验证(torch_npu.npu_top_k_top_p):13 组 shape × 2 dtype × 3 模式(combined/top-k only/top-p only)= 78 个 case 全部 PASS - ATK 精度测试:fp32/fp16,combined/top-k/top-p 三种模式均通过(自定义对称差精度比对,允许 1 元素/batch 的 cumsum 精度边界差异) - 已知限制:batch ≥ 65534 时 CANN 内置 Sort 崩溃(非本算子问题),测试用例限制 batch ≤ 32768 ## 文档更新 - README.md:Atlas 推理系列产品支持状态改为 √ - aclnnApplyTopKTopP.md:Atlas 推理系列产品支持状态改为 √ - arch20 kernel 头部添加 DataCopy consumer contract 注释 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7744 | 17 天前 | |
perf(arg_max_grad): arch35 轴下标改寄存器生成并开双缓冲, UB 记账由容量反解 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9546 merge fix/arg-max-grad-perf into master perf(arg_max_grad): arch35 轴下标改寄存器生成并开双缓冲, UB 记账由容量反解 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 ArgMaxGrad 在 arch35 上改为不带 D 的原型后,轴下标(A2 融合 pass 里的 assist 张量)由内核自生成。原实现每段都要把轴下标**物化到 UB** 再读回比较,既占 UB(每元素 4B)又多走一趟写;同时 BUFFER_NUM 固定为 1,MTE2→V→MTE3 全串行。本 PR 按「腾地方 + 用地方」两步优化,并把 UB 记账从「先定尺寸再回头检查」改为「按容量反解」。 ### 改动方法 1. **多行合并按行长分四档分派**(arg_max_grad_nd.h) - MERGE_COMPACT_DIRECT 逐行直算:行长是 32B 整数倍且不短于「车道数/铺设遍数」时,轴下标退化成该行的标量常量留在寄存器,indices/updates 只驻留一行并原地重复读; - MERGE_COMPACT_FILL 紧排铺 tile:行长对齐但过短时改回 UB→UB 倍增铺设; - MERGE_PAD 按行补齐:行长非 32B 整数倍且长于一个寄存器时每行一个 burst; - MERGE_COMPACT_STREAM 判据已实现但以常量 false 关闭,原因见代码注释(非对齐流式写会覆盖 32B 块内前导车道)。 2. **轴下标改为寄存器内生成**(arg_max_grad_vf.h) VF 入口新增 AssistSrc 模板档:ARANGE(inner==1,沿被选轴连续,一条 Reg::Arange)/ SCALAR(inner>1 单行段,一条 Reg::Duplicate)/ UB(仅剩「一个寄存器块跨多行」的紧排与补齐两档,k 在寄存器内算不出闭式)。ComputeSeg、ComputeOuters、ComputeRows 三条路径不再调 GenAssist。 3. **UB 记账由容量反解**(arg_max_grad_tiling_arch35.cpp) 新增 UbLayout,六个字段与内核 InitBuffer 的六次调用一一对应,Total() 即一段的真实 UB 需求;SolveColsPerChunk 对其单调性二分,求满足 Total() <= ubSize 的最大整宽段长。i32BufBytes 按档记账:inner==1 或逐行直算档记 0,每元素少 4B。 4. **开启双缓冲**:BUFFER_NUM 1 → 2。上一条腾出的 UB 正好抵消队列翻倍(fp16 每元素 ~8.1B → ~4.1B → ~8.2B,UB 占用基本持平),换来 MTE2 搬入与 V 计算重叠。 5. Process() 拆成 ProcessOuterSeg / ProcessRowSeg(纯重构,语义不变);host UT 补 10 类拒收分支用例。 ### 性能实测(Ascend950PR,ttk -d false -b release,--run 12) 两步收益必须分开说明,**不能合并成一句「优化」**: | 阶段 | 大形状 6 例 | 小形状 8 例 | |---|---|---| | 仅第 2、3 条(轴下标寄存器化) | 几何均值 **0.98x**(无收益) | 0.99x | | 叠加第 4 条(双缓冲)vs 原始 | 中位 **1.13x**,最好 1.35x | 中位 1.05x,最好 1.42x | - 收益集中在 inner>1 的三档(DIRECT/FILL/PAD,1.11~1.42x);inner==1 基本持平(0.98~0.99x,一进一出没有可重叠的流)。 - 轴下标寄存器化单独看没有收益,它的作用是**腾出 UB 让双缓冲开得起**;两步缺一不可。 - 已知退化 1 例:(2,128,129) 0.88x(两次测一致)。段数不足 2 时双缓冲多付一次同步,后续可按段数决定 buffer 深度收回。 ## 关联的Issue 关联 Issue #5418 https://gitcode.com/cann/ops-nn/issues/5418 ## 测试 Ascend950PR 真机,干净包(无插桩符号),kernel .o 与 op_tiling.so 同步部署;每份结果条数与用例数逐份核对一致。 | 集合 | 例数 | 结果 | |---|---:|---| | 泛化(R7 派生量全值域集) | 578 | 578/578 PASS | | 泛化(交付主集) | 1224 | 1224/1224 PASS | | GE 图通路 | 56 | 56/56 PASS | | 三方精度 | 100 | 100/100 PASS | | A/B 对照 | 42 | 42/42 PASS | | DFX(7 例预期拒收 + 2 例行为记录) | 9 | 与改造前基线逐例一致 | | host UT(--soc=ascend950) | 28 | 28/28 PASS | | 性能抽检(精度/越界列) | 14 | 14/14 PASS | 真机功能用例合计 **1839 例**全过。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9546 | 16 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
fix: update bucketize example and avg pool doc Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !7852 merge nnbugfix into master fix: update bucketize example and avg pool doc Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 本次修改包含两处迁仓检视整改: 1. 将 AvgPool1DAvgMatrix 的 proto 输入 format 说明补全为实现实际支持的 NCHW/NHWC/NC1HWC0,避免资料约束描述不完整。 2. 删除 Bucketize GEIR 示例中未使用的 kExpectedBucket 常量,清理冗余代码。 ## 关联的Issue 关联 Issue:https://gitcode.com/cann/ops-nn/issues/4264 ## 测试 - 执行 pre-commit run --files index/bucketize/examples/test_geir_bucketize.cpp pooling/avg_pool1d_avg_matrix/op_graph/avg_pool1d_avg_matrix_proto.h,结果通过。 - 修改 format 表达后,执行 pre-commit run --files pooling/avg_pool1d_avg_matrix/op_graph/avg_pool1d_avg_matrix_proto.h,结果通过。 - 执行 bash build.sh --pkg --ops=bucketize --vendor_name=bucketize -j8,自定义包构建通过。 - 执行 ./build_out/cann-ops-nn-bucketize_linux-aarch64.run --force,自定义包安装通过。 - 设置 ASCEND_CUSTOM_OPP_PATH=/home/developer/Ascend/cann-9.2.0/opp/vendors/bucketize_nn 后,执行 bash build.sh --run_example bucketize graph cust --vendor_name=bucketize,结果通过。 - 日志中确认自定义 AICPU 路径:出现 CUSTAICPUKernel、libnn_aicpu_kernels.so 和 InitAicpuTask node[bucketize]。 ## 文档更新 更新 pooling/avg_pool1d_avg_matrix/op_graph/avg_pool1d_avg_matrix_proto.h 中的 format 说明。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7852 | 1 个月前 | |
feat: Add aclnn golden functions and test cases Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9487 merge master into master feat: Add aclnn golden functions and test cases Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加蓝区aclnn用例和golden函数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5325 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9487 | 17 天前 | |
index clean code Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !9028 merge master_bak into master index clean code Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> index目录下进行clean code整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4233 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9028 | 24 天前 | |
算子中存在使用内部的asc api接口,需要切换为对外的api接口 Co-authored-by: cann-robot<cann-robot@cann-robot> # message auto-generated for no-merge-commit merge: !9063 merge master into master 算子中存在使用内部的asc api接口,需要切换为对外的api接口 Created-by: hw-zhangpanpan Commit-by: cann-robot Merged-by: cann-robot Description: ## 描述 算子中存在使用内部的asc api接口,需要切换为对外的api接口 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5301 ## 测试 切换接口前后二进制文件一致 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9063 | 17 天前 | |
docs: 更新Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9343 merge docs/heaviside-op-api-support into master docs: 更新Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况与实际支持情况不符合 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5255 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9343 | 21 天前 | |
feat: Add aclnn golden functions and test cases Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9487 merge master into master feat: Add aclnn golden functions and test cases Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加蓝区aclnn用例和golden函数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5325 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9487 | 17 天前 | |
fix: 日志规范性整改 Co-authored-by: duxinlei<duxinlei@h-partners.com> # message auto-generated for no-merge-commit merge: !9059 merge 0824LogModify into master fix: 日志规范性整改 Created-by: duxinlei Commit-by: duxinlei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 给activation/pooling/index下部分算子做日志规范性整改,修改pr拼写错误、内容错误、关键信息泄露问题; 仅对loge内容做修改,其余部分为pre-commmit格式修改; ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #5185 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟 obp冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9059 | 17 天前 | |
fix: 日志规范性整改 Co-authored-by: duxinlei<duxinlei@h-partners.com> # message auto-generated for no-merge-commit merge: !9059 merge 0824LogModify into master fix: 日志规范性整改 Created-by: duxinlei Commit-by: duxinlei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 给activation/pooling/index下部分算子做日志规范性整改,修改pr拼写错误、内容错误、关键信息泄露问题; 仅对loge内容做修改,其余部分为pre-commmit格式修改; ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #5185 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟 obp冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9059 | 17 天前 | |
fix: 日志规范性整改 Co-authored-by: duxinlei<duxinlei@h-partners.com> # message auto-generated for no-merge-commit merge: !9059 merge 0824LogModify into master fix: 日志规范性整改 Created-by: duxinlei Commit-by: duxinlei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 给activation/pooling/index下部分算子做日志规范性整改,修改pr拼写错误、内容错误、关键信息泄露问题; 仅对loge内容做修改,其余部分为pre-commmit格式修改; ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #5185 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟 obp冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9059 | 17 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 20 天前 | |
gather_elements算子tik转ascendc实现 Co-authored-by: xiu_ling_wang<wangxiuling2@h-partners.com> # message auto-generated for no-merge-commit merge: !8774 merge gather_elements into master gather_elements算子tik转ascendc实现 Created-by: xiu_ling_wang Commit-by: xiu_ling_wang Merged-by: cann-robot Description: ## 描述 gather_elements算子tik转ascendc实现,并将符合gather elements v2场景路由到v2实现。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5468 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8774 | 16 天前 | |
feat: Add aclnn golden functions and test cases Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9487 merge master into master feat: Add aclnn golden functions and test cases Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加蓝区aclnn用例和golden函数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5325 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9487 | 17 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
feat: aclnnMedian 系列接口接入专用 Median/NanMedian L0 算子 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !9298 merge master into master feat: aclnnMedian 系列接口接入专用 Median/NanMedian L0 算子 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - 修正 RegBase 架构下 aclnnMedianDim 复用 KthValue 的接入方式,改为调用语义匹配的 Median L0 算子;aclnnNanMedianDim 对应接入 NanMedian L0 算子。 - aclnnMedian、aclnnNanMedian 的全局归约路径同样接入对应专用 L0 算子,减少 Sort/Gather 等组合算子带来的中间内存和调度开销。 - 新增 Median/NanMedian weak L0 声明,仅在 RegBase 且对应符号存在时启用新路径;非 RegBase 或符号不存在时保持原始实现。 - Dim 接口沿用 KthValue 已验证的能力与性能分流规则:末轴直接调用;非末轴仅在轴长 2~2048 且未命中小 inner、大 outer 性能排除条件时免 transpose,其余场景先 transpose 到末轴。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5337 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 验证相关接口的 ST 用例通过,内存达标 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9298 | 17 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
index clean code Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !9028 merge master_bak into master index clean code Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> index目录下进行clean code整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4233 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9028 | 24 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
feat: Add aclnn golden functions and test cases Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9487 merge master into master feat: Add aclnn golden functions and test cases Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加蓝区aclnn用例和golden函数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5325 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9487 | 17 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 16 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 16 天前 | |
fix(index): prevent InplaceAdd uint32 loop overflow Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9545 merge fix/inplace-add-uint32-loop-overflow into master fix(index): prevent InplaceAdd uint32 loop overflow Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 InplaceAdd Ascend 950 kernel 在超大合法 shape 下可能卡死的问题。 累加阶段使用 uint32_t grid-stride 循环时,原判断只保证扁平地址不超过 UINT32_MAX,没有为循环末尾的 element += stride 预留空间。当 accTotal 位于 32 位上界前最后 stride - 1 个元素的区间内时,循环变量会 发生无符号回绕,导致循环无法退出。 本次将 32 位累加路径的安全条件收紧为: text widest <= UINT32_MAX && accTotal <= UINT32_MAX - stride + 1 超过该上限的极窄边界区间复用现有 uint64_t 路径。普通 shape 继续使用原 32 位热路径,SIMT 循环内未增加分支。 ## 关联的Issue 无。 ## 测试 - [x] 修复前使用 Ascend 950PR release binary 实机复现: n=k=65535、rowSize=65537、accTotal=UINT32_MAX,TTK 命中 blockDim=56 后报告 AIC Task TIMEOUT。 - [x] 边界算术检查:stride=57344 时安全上限为 4294909952;原反例 4294967295 改走 64 位路径。 - [x] 仓库 pre-commit 全部通过(clang-format、codespell、OAT 等)。 - [x] 修复源码单算子 JIT 构建、部署成功,部署侧源码与仓内源码 SHA-256 一致。 - [x] 修复后同一超大 shape 使用 --clean-dyn 实机复测:动态编译成功,shape、 blockDim=56 及 tiling data 与修复前一致;kernel 正常返回,STATUS: PASS、 DYN_MEM: OK,OK,未再出现 AIC Task TIMEOUT。该用例关闭 golden,只验证卡死消失和 内存安全。 - [x] FP32 普通小 shape JIT 数值回归通过,DYN_GOLD: PASS、STATUS: PASS、 DYN_MEM: OK,OK。 ## 文档更新 无需更新用户文档;问题复现与根因已记录在本地问题档案。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9545 | 17 天前 | |
refactor: 重命名scatter_elements_v2 kernel侧头文件添加v2后缀 Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> # message auto-generated for no-merge-commit merge: !9626 merge rename_scatter_elements_filename into master refactor: 重命名scatter_elements_v2 kernel侧头文件添加v2后缀 Created-by: yu_qinfei Commit-by: yu_qinfei Merged-by: cann-robot Description: ## 描述 重命名 scatter_elements_v2 算子 kernel 侧的两个头文件,添加 v2 后缀以与其他算子头文件命名规范统一: 1. op_kernel/arch35/scatter_elements.h → scatter_elements_v2.h:文件注释更新。 2. op_kernel/arch35/scatter_elements_deterministic.h → scatter_elements_v2_deterministic.h:文件注释及 #include "scatter_elements.h" 引用更新为 scatter_elements_v2.h。 同步更新引用文件: - scatter_elements_v2_apt.cpp:2 处 #include 路径更新。 - scatter_elements_with_sorted.h:注释中的文件名引用更新。 所有改动仅涉及文件重命名、文件注释及 #include 引用路径更新,不涉及任何类名或逻辑变更。 ## 关联的Issue - #5426 ## 测试 - 编译验证通过即可,无逻辑变更。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构-头文件重命名 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9626 | 16 天前 | |
inplace_index_add_with_sorted算子负载均衡模板支持 Co-authored-by: liaohuming<liaohuming@huawei.com> # message auto-generated for no-merge-commit merge: !8291 merge addwithsorted into master inplace_index_add_with_sorted算子负载均衡模板支持 Created-by: steppecat Commit-by: liaohuming Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 原方案对于index高度一致的场景会出现大量的核空转,导致性能劣化,新模板属于负载均衡模板,重复的索引也可以在多个核上进行处理,最后通过全核同步和workSpace来保证确定性。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5249 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8291 | 19 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 16 天前 | |
fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9218 merge fix/proto-isolation-macro into master fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 **改动原因** op_graph/*_proto.h 中的 REG_OP 会被 scripts/util/merge_proto.py 合并进 ops_proto_nn.h/.cpp,再编成内置 op_proto 库(cmake/gen_ops_info.cmake 的 merge_graph_headers → cmake/symbol.cmake 的 gen_opgraph_symbol)。当同名算子在 canndev 侧的遗留原型头(nn_norm_ops.h、reduce_ops.h、ops_proto_legacy.h 等)也有 REG_OP 注册时,两份定义进入同一编译单元会重复定义。 仓库既有范式是在 REG_OP 外层加条件编译隔离宏,merge_proto.py 的匹配式会把该宏一并带入合并产物。本仓已有 activation/relu6_d、optim/sgd、norm/in_training_reduce_v2、vfusion/normalize_bbox 等先例,但本批 30 个算子的原型头遗漏了该保护。检视意见整改。 **改动方法** 对 30 个算子的 op_graph/*_proto.h,在 REG_OP 外层补 #ifndef/#define OPS_PROTO_DEF_<OPTYPE> … #endif: c #ifndef OPS_PROTO_DEF_DEEPNORM #define OPS_PROTO_DEF_DEEPNORM REG_OP(DeepNorm) ... .OP_END_FACTORY_REG(DeepNorm) #endif // OPS_PROTO_DEF_DEEPNORM 宏名取 OPS_PROTO_DEF_ + 算子名大写去下划线,与发布包 opp/built-in/op_graph/inc 中已有 967 个同类隔离宏的拼法一致。位置严格贴在 REG_OP 前、OP_END_FACTORY_REG 后一行——merge_proto.py 的正则要求 guard 与 REG_OP 相邻,位置写偏宏会被丢弃。 **涉及算子(30 个)** ApplyAdagrad、BatchNormExt2、BN3DTrainingUpdate、BNInfer、BNTrainingUpdateV2、BNTrainingUpdateV3、ChamferDistance、ClippedSwiglu、CosineEmbeddingLoss、DeepNorm、DeepNormGrad、DynamicQuantUpdateScatter、DynamicQuantUpdateScatterV2、GemmaRmsNorm、GroupNormSiluQuant、HardSigmoid、HardSwishGradV2、INInferV2、InplaceApplyRMSProp、InplaceSub、InstanceNormGrad、INTrainingUpdateGrad、L2NormalizeGrad、MultiAddRmsNormDynamicQuant、MultilabelMarginLoss、NonZeroWithValue、PoissonNllLoss、Relu6Grad、SoftmaxFocalLoss、SoftmaxFocalLossGrad **顺带修复**:deep_norm、deep_norm_grad、gemma_rms_norm、multi_add_rms_norm_dynamic_quant、dynamic_quant_update_scatter_v2 这 5 个原型头文件末尾缺换行,属存量问题;pre-commit 的 end-of-file-fixer 钩子只扫改动文件,一旦改动即会被拦,故一并补齐。 **变更范围**:30 个文件,+95 −5,改动全部为条件编译指令与文件末尾换行,不改动任何 IR 的输入/输出/属性/dtype 定义,无功能与支持面变化。未改动 common/inc/op_graph/op_nn_proto_extend.h——merge_proto.py 会按算子名把聚合头中的重复项去重,改它不会进入合并产物。 ## 关联的Issue 关联 Issue #5170 ## 测试 1. **合并产物验证**:对 30 个改动文件跑 python3 scripts/util/merge_proto.py,合并产物中 REG_OP 30 个、#ifndef OPS_PROTO_DEF_ 30 个,隔离宏 30/30 全部正确带出。 2. **宏名配对验证**:与发布包 cann-9.2.0/opp/built-in/op_graph/inc/*.h 中同名算子的既有隔离宏逐个比对,宏名不一致项 0 处。 3. **重名检查**:30 个新增宏在三仓范围内无跨文件重名,每个文件内 OPS_PROTO_DEF_ 宏数恰为 1(无嵌套/重复保护)。 4. **格式与合规门禁**:按 .pre-commit-config.yaml 逐钩子本地复现 —— clang-format 18.1.8 --style=file --dry-run -Werror 整文件检查 30/30 通过、OAT 许可头 30/30 合规、trailing-whitespace / end-of-file-fixer / check-merge-conflict / detect-private-key / check-added-large-files 全部通过。 ## 文档更新 无。本 PR 不涉及文档变更。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 <!-- 关联 Issue: https://gitcode.com/cann/ops-nn/issues/5170 --> See merge request: cann/ops-nn!9218 | 22 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 16 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
refactor: 将 op_api 目录移动至算子根目录并统一构建配置 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !8840 merge move-opapi into master refactor: 将 op_api 目录移动至算子根目录并统一构建配置 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 7 个算子的 op_api 实现从 op_host/op_api/ 子目录移动至算子根目录 op_api/,并将算子根目录 CMakeLists.txt 由递归式 file(GLOB) + add_subdirectory 统一为 add_modules_sources 构建方式,同时同步更新所有相关头文件引用路径。 涉及的算子: - index/apply_top_k_top_p_with_sorted - index/embedding_bag - index/linear_index - index/linear_index_v2 - loss/fused_cross_entropy_loss_with_max_sum - quant/fake_quant_affine_cachemask - rnn/single_layer_lstm_grad ### 改动原因 ops-nn 仓库中部分算子的 op_api 代码位于 op_host/op_api/ 层级之下,与其他算子的组织方式不一致,且构建配置分散在 op_host/CMakeLists.txt 中。本改动将 op_api 目录统一上移至算子根目录,并统一算子构建配置。 ### 改动方法 1. 将 7 个算子的 op_host/op_api/ 目录整体移动至算子根目录 op_api/(纯移动,内容不变); 2. 删除 7 个 op_host/CMakeLists.txt,算子根目录 CMakeLists.txt 统一改为调用 add_modules_sources(HOSTNAME ${OPHOST_NAME} MODE PRIVATE DIR ${CMAKE_CURRENT_SOURCE_DIR} OPTYPE <op_name> ACLNNTYPE aclnn_exclude); 3. 同步更新头文件引用路径:index/index_put_v2/op_api/aclnn_index_put_impl.cpp(linear_index_v2.h)、index/scatter_elements_v2/op_api/aclnn_scatter.cpp(linear_index.h)及 6 个 UT 测试文件; 4. 更新 classify_rule.yaml 中 linear_index_v2 的 op_api 路径(op_host/op_api/ → op_api/); 5. 格式修正:3 个文件补充末尾换行符,embedding_bag.cpp 注释格式调整。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/4875 ## 测试 - 变更均为目录结构移动与构建配置统一,无算法逻辑改动;UT 测试文件仅同步头文件引用路径。 - 依赖 CI 构建验证(未在 PR 中提供其他测试信息)。 ## 文档更新 无文档变更。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构(op_api 目录结构整理与构建配置统一) ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!8840 | 29 天前 | |
针对nn仓部分算子存在错误日志问题进行统一整改 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9382 merge master into master 针对nn仓部分算子存在错误日志问题进行统一整改 Created-by: qq_52874943 Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 本 PR 针对 nn 仓部分算子的日志问题进行统一整改,核心内容包括三方面:一是将 activation/relu_grad_v2 与 activation/softplus 的示例测试程序中失败分支的 printf 日志级别由 INFO 纠正为 ERROR;二是对 relu_grad_v2、softplus、map_index、quant_update_scatter、sparse_slice 等算子的 tiling 代码统一修正 OP_LOGE 调用(将误传的 tilingContext 改为 tilingContext->GetNodeName()),并为失败日志补充 coreNum、ubSize、维度等关键参数,同时删除大量冗余的 OP_LOGD 调试日志;三是在 torch_extension/cann_ops_nn/op_builder/builder.py 中为算子 JIT 编译引入文件锁,避免多进程并发编译冲突。 ## 关联的Issue 关联Issue[#5183](https://gitcode.com/cann/ops-nn/issues/5183) ## 测试 本地已完成新精度对比与性能测试,通过静态检查、蓝区冒烟、算子ST以及算子二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9382 | 20 天前 | |
feat: Add aclnn golden functions and test cases Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9487 merge master into master feat: Add aclnn golden functions and test cases Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加蓝区aclnn用例和golden函数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5325 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9487 | 17 天前 | |
Fix dilation2_d example编译失败, clean masked_scatter_with_position无效代码 Co-authored-by: wang-shilong32<wangshilong23@huawei.com> # message auto-generated for no-merge-commit merge: !9337 merge fix_dilation2d_mswp_example into master Fix dilation2_d example编译失败, clean masked_scatter_with_position无效代码 Created-by: wang-shilong32 Commit-by: wang-shilong32 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1.修改dilation2_d example编译失败问题。 2.清除 masked_scatter_with_position无效代码。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5018 https://gitcode.com/cann/ops-nn/issues/5096 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地编译验证修改后example,冒烟测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9337 | 20 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 20 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 20 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 16 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 16 天前 | |
fix: softmax_grad_ext fusion pass 代码审查修复(memcpy_s 安全函数)、quant_update_scatter 原型重构、leaky_relu mask 调整、tiling 告警消除及 classify_rule 测试分类调整 Co-authored-by: yuanbin_22<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !9190 merge fix/softmax-grad-ext-code-review into master fix: softmax_grad_ext fusion pass 代码审查修复(memcpy_s 安全函数)、quant_update_scatter 原型重构、leaky_relu mask 调整、tiling 告警消除及 classify_rule 测试分类调整 Created-by: yuanbin_22 Commit-by: yuanbin_22 Merged-by: cann-robot Description: ## 描述 本 PR 涵盖 softmax_grad_ext fusion pass 代码审查问题修复、quant_update_scatter 算子原型重构、leaky_relu arch35 内核 mask 计算调整、tiling prepare 函数未使用参数告警消除、以及 classify_rule.yaml 测试分类规则调整。共涉及 6 个文件(+150 -94 行)。 ### 涉及文件 | 文件 | 变更类型 | +行 | -行 | |------|----------|-----|-----| | activation/softmax_grad_ext/op_graph/fusion_pass/softmax_grad_ext_fusion_pass.cpp | 代码修复 | +49 | -28 | | classify_rule.yaml | 配置调整 | +45 | -88 | | index/quant_update_scatter/op_host/quant_update_scatter_def.cpp | 重构 | +46 | -63 | | quant/dynamic_block_quant/op_host/dynamic_block_quant_tiling.cpp | 告警修复 | +4 | -1 | | quant/dynamic_mx_quant/op_host/arch35/dynamic_mx_quant_tiling_arch35.cpp | 告警修复 | +4 | -1 | | activation/leaky_relu/op_kernel/arch35/leaky_relu_dag.h | 内核调整 | +2 | -3 | ### 变更内容 #### 1. softmax_grad_ext fusion pass 代码审查修复 - **严格别名违规修复**:GetAxisFromReduceSum 中 reinterpret_cast 直接解引用改为 memcpy_s(安全函数)拷贝到本地变量,并使用 OP_LOGE_IF 检查 memcpy_s 返回值是否为 EOK - **新增 #include "securec.h"**:引入 memcpy_s/EOK 定义 - **格式符修复**:axis_value(int64_t)的格式符从 %ld 改为 %lld - **返回值校验**:AddEdgeAndUpdatePeerDesc 调用使用 ES_ASSERT_GRAPH_SUCCESS 宏包装 - **魔法数字消除**:新增 9 个命名常量替换硬编码值(kUnknownShapeDim、kReduceLastAxis、kAxesShapeDim、kPatternV2VariantCount、kBinaryInputX1Idx、kBinaryInputX2Idx、kReduceSumInputXIdx、kNodeOutputIdx、kTargetSocVersion) - **日志增强**:平台不支持日志中的 Ascend950 改为引用 kTargetSocVersion 常量 #### 2. quant_update_scatter 算子原型重构 将 QuantUpdateScatter 类中各输入/输出的内联 DataType/Format/UnknownShapeFormat 向量提取为文件级 static const 命名向量(varDataType、indicesDataType、updatesDataType、quantScalesDataType、quantZeroPointsDataType、inputAndOutputFormat),消除重复代码,提升可维护性。 #### 3. leaky_relu arch35 内核 mask 计算调整 - 移除局部 constexpr uint64_t VECTOR_REG_WIDTH = 256UL(使用全局定义) - 将 Reg::UpdateMask 从循环外移入循环内,确保每次迭代 mask 与实际剩余元素匹配,避免最后一次循环处理越界 #### 4. tiling prepare 函数未使用参数告警消除 dynamic_block_quant 和 dynamic_mx_quant 的 TilingPrepare 函数中 context 参数未使用,添加 [[maybe_unused]] 属性消除编译告警,并格式化函数体。 #### 5. classify_rule.yaml 测试分类调整 将以下算子的测试代码从 activation-c@ops-nn(已发布分类)移至 VC1@ops-nn(未发布分类),并取消原 VC1 中的注释标记: - elu、elu_grad_v2、fast_gelu、fast_gelu_grad - ge_glu_grad_v2、ge_glu_v2、gelu、gelu_grad、gelu_grad_v2、gelu_quant、gelu_v2 - hardtanh_grad、leaky_relu、leaky_relu_grad、p_relu、relu、relu_grad - sigmoid、sigmoid_grad、silu_grad、swi_glu_grad、swish、swish_grad - ascend_quant ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/1323 ## 测试 - softmax_grad_ext fusion pass 功能验证通过 - quant_update_scatter 算子原型注册行为不受影响 - leaky_relu FP16/BF16/FP32 各 dtype 功能验证通过 - tiling 函数编译无新增告警 - classify_rule 分类调整后 CI 流水线通过(ci-pipeline-passed) ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9190 | 17 天前 | |
docs: 修复 RepeatInterleave 与 ScatterValue 文档问题 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !9659 merge codex/fix-repeat-interleave-scatter-docs into master docs: 修复 RepeatInterleave 与 ScatterValue 文档问题 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 修复 RepeatInterleave 系列和 ScatterValue ACLNN 文档中的格式与示例错误。 - 为 aclnnRepeatInterleave.md 的示例说明补充缺失的句末标点。 - 将 aclnnRepeatInterleaveWithDim.md 中使用中文引号包裹的 API 名称改为反引号格式。 - 修正 aclnnRepeatInterleaveInt.md 功能说明、约束说明和调用示例中的中英文间距。 - 修正 aclnnScatterValue&aclnnInplaceScatterValue.md 的错误处理逻辑:aclCreateScalar 返回 nullptr 时,不再返回前序成功调用遗留的 ret,改为返回 ACL_ERROR_INTERNAL_ERROR。 ## 关联的Issue Closes #5453 ## 测试 本次仅修改 Markdown 文档和文档内示例代码,未执行编译或运行测试。 - git diff --check:通过。 - aclnnRepeatInterleaveInt.md 未检出中英文字符直接粘连。 - aclnnRepeatInterleaveWithDim.md 未检出中文引号。 - 两个 aclCreateScalar 空指针分支均返回 ACL_ERROR_INTERNAL_ERROR。 ## 文档更新 - index/repeat_interleave/docs/aclnnRepeatInterleave.md - index/repeat_interleave/docs/aclnnRepeatInterleaveWithDim.md - index/repeat_interleave/docs/aclnnRepeatInterleaveInt.md - index/scatter_elements_v2/docs/aclnnScatterValue&aclnnInplaceScatterValue.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9659 | 16 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
算子中存在使用内部的asc api接口,需要切换为对外的api接口 Co-authored-by: cann-robot<cann-robot@cann-robot> # message auto-generated for no-merge-commit merge: !9063 merge master into master 算子中存在使用内部的asc api接口,需要切换为对外的api接口 Created-by: hw-zhangpanpan Commit-by: cann-robot Merged-by: cann-robot Description: ## 描述 算子中存在使用内部的asc api接口,需要切换为对外的api接口 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5301 ## 测试 切换接口前后二进制文件一致 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9063 | 17 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
docs(scatter): 修复aclnnInplaceScatterUpdate文档格式规范并重构功能说明场景描述 Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !9713 merge docs/aclnn-inplace-scatter-update-md-fix into master docs(scatter): 修复aclnnInplaceScatterUpdate文档格式规范并重构功能说明场景描述 Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 1、补充scatter单算子/aclnnInplaceScatterUpdate接口索引为2维的功能场景。 2、修复ReadMe样例代码跳转失效。 3、格式整改。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5483 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 更新了Readme和aclnn接口的md文件。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9713 | 15 天前 | |
Fix InplaceAdd/Sub 融合规则按SOC分级校验扩展dtype Co-authored-by: gh_M<meiguohan@huawei.com> # message auto-generated for no-merge-commit merge: !9370 merge FusionPass into master Fix InplaceAdd/Sub 融合规则按SOC分级校验扩展dtype Created-by: gh_M Commit-by: gh_M Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> InplaceAdd、InplaceSub算子在A3上执行,int8/uint8/bf16输入场景下,迁移后融合规则误判生效,导致基础用例执行失败 将dtype校验逻辑按照 SoC 分级改造,将 dtype 白名单拆分为「基础集合」(DT_FLOAT16、DT_FLOAT、DT_INT32,所有非 Ascend310 平台通用)和「扩展集合」(DT_INT8、DT_UINT8、DT_BF16,在未注册对应 kernel 的老芯片上通过黑名单排除) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4800 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> geir测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9370 | 19 天前 | |
新增算子st用例 Co-authored-by: hw-zhangpanpan<zhangpanpan5@huawei.com> Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> Co-authored-by: ligen<ligen75@h-partners.com> Co-authored-by: yefeicoding<yefei25@huawei.com> # message auto-generated for no-merge-commit merge: !7825 merge st into master 新增算子st用例 Created-by: yefeicoding Commit-by: yefeicoding;yu_qinfei;hw-zhangpanpan;李根;ligen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4269 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补充st ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7825 | 1 个月前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 15 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 20 天前 | |
docs: 修复 RepeatInterleave 与 ScatterValue 文档问题 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !9659 merge codex/fix-repeat-interleave-scatter-docs into master docs: 修复 RepeatInterleave 与 ScatterValue 文档问题 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 修复 RepeatInterleave 系列和 ScatterValue ACLNN 文档中的格式与示例错误。 - 为 aclnnRepeatInterleave.md 的示例说明补充缺失的句末标点。 - 将 aclnnRepeatInterleaveWithDim.md 中使用中文引号包裹的 API 名称改为反引号格式。 - 修正 aclnnRepeatInterleaveInt.md 功能说明、约束说明和调用示例中的中英文间距。 - 修正 aclnnScatterValue&aclnnInplaceScatterValue.md 的错误处理逻辑:aclCreateScalar 返回 nullptr 时,不再返回前序成功调用遗留的 ret,改为返回 ACL_ERROR_INTERNAL_ERROR。 ## 关联的Issue Closes #5453 ## 测试 本次仅修改 Markdown 文档和文档内示例代码,未执行编译或运行测试。 - git diff --check:通过。 - aclnnRepeatInterleaveInt.md 未检出中英文字符直接粘连。 - aclnnRepeatInterleaveWithDim.md 未检出中文引号。 - 两个 aclCreateScalar 空指针分支均返回 ACL_ERROR_INTERNAL_ERROR。 ## 文档更新 - index/repeat_interleave/docs/aclnnRepeatInterleave.md - index/repeat_interleave/docs/aclnnRepeatInterleaveWithDim.md - index/repeat_interleave/docs/aclnnRepeatInterleaveInt.md - index/scatter_elements_v2/docs/aclnnScatterValue&aclnnInplaceScatterValue.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9659 | 16 天前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 15 天前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 15 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 16 天前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 15 天前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 15 天前 | |
docs(scatter): 修正6个aclnn接口Ascend 950确定性描述 Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !9500 merge determinstic_check into master docs(scatter): 修正6个aclnn接口Ascend 950确定性描述 Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> **改动原因**:nn仓部分算子资料中描述为"默认确定性实现",但经核实 Ascend 950PR/950DT(arch35)上实际 kernel 采用多核写-写竞争或原子累加实现,在 index/indices 存在重复元素时多次执行结果可能不一致,资料与实现不符。 **核实方法与结论**(基于 arch35 op_host tiling 分核逻辑与 op_kernel 写入方式逐一分析): | 接口 | 950 默认 kernel 行为 | 证据 | |---|---|---| | aclnnIndexCopy&aclnnInplaceIndexCopy | 按 updates 分核, var[varDataIdx]=updates[i] 裸写,重复 index 写序不定 | scatter_update_simt.h:82 | | aclnnInplacePut | accumulate=false 走 ScatterNdUpdate 裸写;=true 走 ScatterNdAdd 原子累加 | scatter_nd_update_simt.h:53 | | aclnnInplaceScatterUpdate | SIMT/SIMD 裸写 GM,重复索引写序不定 | scatter_simt.h:38 | | aclnnScatterNd / aclnnScatterNdUpdate | 默认走 isSimdNonDeterminstic_/simt 裸写分支 | scatter_nd_update_tiling_regbase.cpp:267 | | aclnnTfScatterAdd | 默认走 ScatterAdd/ScatterNdAdd 原子累加 | scatter_nd_add_simt.h:53 | **改动方法**: 1. docs/zh/op_api_list.md:上述 6 个接口的"确定性说明(Ascend 950)"列由"默认确定性实现"修正为"默认非确定性实现,支持配置开启";A2/A3 列**保持原值不动**(本轮仅核实 950)。 2. 各接口 md 的约束说明中,按芯片类型(term 标签)补充确定性说明:950 默认非确定性的成因、aclrtSetSysParamOpt 开启确定性后仍生效的具体条件(dtype、索引维度、元素个数等,与 tiling 中 GetDeterministic() 分支条件一致),以及 A2/A3 的既有口径。 同时核实确认无误、未改动的关联接口:aclnnScatter/ScatterValue/ScatterAdd(A2/A3 arch22 按输出分核顺序处理)、aclnnIndexAdd/V2、aclnnInplaceMaskedScatter(prefix-sum 分配)、IndexFill 系列、RepeatInterleave 系列、Gather 系列、Bucketize、AvgPool2d/3d(清零+单实数加数的对齐原子加)。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5347 无(资料与实现一致性巡检)。 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 仅文档改动(md-only),pre-push 门禁自动识别并跳过编译/UT。 - 已通读 6 个 md 的修改,确认:term 标签 npu/id 与文件内既有标签无冲突(新块使用 id9/id10)、950 说明中的开启条件与 tiling 代码分支条件一一对应、表格 950 列与 md 结论一致。 - codespell/pre-commit 全部通过(曾误报 "scatter nd add" 中的 nd,已改写为 ScatterNdAdd)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - docs/zh/op_api_list.md:6 行接口列表的 950 确定性列修正 - index/scatter_update/docs/aclnnIndexCopy&aclnnInplaceIndexCopy.md - index/scatter_nd_update/docs/aclnnInplacePut.md - index/scatter_nd_update/docs/aclnnScatterNdUpdate.md - index/scatter_nd/docs/aclnnScatterNd.md - index/scatter/docs/aclnnInplaceScatterUpdate.md - index/tf_scatter_add/docs/aclnnTfScatterAdd.md 以上 6 个接口 md 均在约束说明中按芯片类型补充确定性说明。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9500 | 18 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
新增算子st用例 Co-authored-by: hw-zhangpanpan<zhangpanpan5@huawei.com> Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> Co-authored-by: ligen<ligen75@h-partners.com> Co-authored-by: yefeicoding<yefei25@huawei.com> # message auto-generated for no-merge-commit merge: !7825 merge st into master 新增算子st用例 Created-by: yefeicoding Commit-by: yefeicoding;yu_qinfei;hw-zhangpanpan;李根;ligen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4269 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补充st ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7825 | 1 个月前 | |
新增算子st用例 Co-authored-by: hw-zhangpanpan<zhangpanpan5@huawei.com> Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> Co-authored-by: ligen<ligen75@h-partners.com> Co-authored-by: yefeicoding<yefei25@huawei.com> # message auto-generated for no-merge-commit merge: !7825 merge st into master 新增算子st用例 Created-by: yefeicoding Commit-by: yefeicoding;yu_qinfei;hw-zhangpanpan;李根;ligen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4269 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补充st ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7825 | 1 个月前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 16 天前 | |
修改scatterNdUpdate算子非连续initMaskGm 问题 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9553 merge fix_sca_nolx into master 修改scatterNdUpdate算子非连续initMaskGm 问题 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 修复了 scatterNdUpdate 算子初始化 mask 时传入非连续维度信息的问题,将 InitMaskGm(tiling_.varInAxis, workspace) 改为 InitMaskGm(tiling_.varStorageInAxis, workspace),使 mask 初始化基于变量存储维度而非原始输入维度,避免非连续 initMaskGm 导致的问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5466 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 错误用例测试通过,冒烟通过,st 用例通过。 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9553 | 16 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 16 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 21 天前 | |
Fix InplaceAdd/Sub 融合规则按SOC分级校验扩展dtype Co-authored-by: gh_M<meiguohan@huawei.com> # message auto-generated for no-merge-commit merge: !9370 merge FusionPass into master Fix InplaceAdd/Sub 融合规则按SOC分级校验扩展dtype Created-by: gh_M Commit-by: gh_M Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> InplaceAdd、InplaceSub算子在A3上执行,int8/uint8/bf16输入场景下,迁移后融合规则误判生效,导致基础用例执行失败 将dtype校验逻辑按照 SoC 分级改造,将 dtype 白名单拆分为「基础集合」(DT_FLOAT16、DT_FLOAT、DT_INT32,所有非 Ascend310 平台通用)和「扩展集合」(DT_INT8、DT_UINT8、DT_BF16,在未注册对应 kernel 的老芯片上通过黑名单排除) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4800 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> geir测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9370 | 19 天前 | |
docs(scatter): 修正6个aclnn接口Ascend 950确定性描述 Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !9500 merge determinstic_check into master docs(scatter): 修正6个aclnn接口Ascend 950确定性描述 Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> **改动原因**:nn仓部分算子资料中描述为"默认确定性实现",但经核实 Ascend 950PR/950DT(arch35)上实际 kernel 采用多核写-写竞争或原子累加实现,在 index/indices 存在重复元素时多次执行结果可能不一致,资料与实现不符。 **核实方法与结论**(基于 arch35 op_host tiling 分核逻辑与 op_kernel 写入方式逐一分析): | 接口 | 950 默认 kernel 行为 | 证据 | |---|---|---| | aclnnIndexCopy&aclnnInplaceIndexCopy | 按 updates 分核, var[varDataIdx]=updates[i] 裸写,重复 index 写序不定 | scatter_update_simt.h:82 | | aclnnInplacePut | accumulate=false 走 ScatterNdUpdate 裸写;=true 走 ScatterNdAdd 原子累加 | scatter_nd_update_simt.h:53 | | aclnnInplaceScatterUpdate | SIMT/SIMD 裸写 GM,重复索引写序不定 | scatter_simt.h:38 | | aclnnScatterNd / aclnnScatterNdUpdate | 默认走 isSimdNonDeterminstic_/simt 裸写分支 | scatter_nd_update_tiling_regbase.cpp:267 | | aclnnTfScatterAdd | 默认走 ScatterAdd/ScatterNdAdd 原子累加 | scatter_nd_add_simt.h:53 | **改动方法**: 1. docs/zh/op_api_list.md:上述 6 个接口的"确定性说明(Ascend 950)"列由"默认确定性实现"修正为"默认非确定性实现,支持配置开启";A2/A3 列**保持原值不动**(本轮仅核实 950)。 2. 各接口 md 的约束说明中,按芯片类型(term 标签)补充确定性说明:950 默认非确定性的成因、aclrtSetSysParamOpt 开启确定性后仍生效的具体条件(dtype、索引维度、元素个数等,与 tiling 中 GetDeterministic() 分支条件一致),以及 A2/A3 的既有口径。 同时核实确认无误、未改动的关联接口:aclnnScatter/ScatterValue/ScatterAdd(A2/A3 arch22 按输出分核顺序处理)、aclnnIndexAdd/V2、aclnnInplaceMaskedScatter(prefix-sum 分配)、IndexFill 系列、RepeatInterleave 系列、Gather 系列、Bucketize、AvgPool2d/3d(清零+单实数加数的对齐原子加)。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5347 无(资料与实现一致性巡检)。 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 仅文档改动(md-only),pre-push 门禁自动识别并跳过编译/UT。 - 已通读 6 个 md 的修改,确认:term 标签 npu/id 与文件内既有标签无冲突(新块使用 id9/id10)、950 说明中的开启条件与 tiling 代码分支条件一一对应、表格 950 列与 md 结论一致。 - codespell/pre-commit 全部通过(曾误报 "scatter nd add" 中的 nd,已改写为 ScatterNdAdd)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - docs/zh/op_api_list.md:6 行接口列表的 950 确定性列修正 - index/scatter_update/docs/aclnnIndexCopy&aclnnInplaceIndexCopy.md - index/scatter_nd_update/docs/aclnnInplacePut.md - index/scatter_nd_update/docs/aclnnScatterNdUpdate.md - index/scatter_nd/docs/aclnnScatterNd.md - index/scatter/docs/aclnnInplaceScatterUpdate.md - index/tf_scatter_add/docs/aclnnTfScatterAdd.md 以上 6 个接口 md 均在约束说明中按芯片类型补充确定性说明。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9500 | 18 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 16 天前 | |
贡献sort lib全局排序公共库 Co-authored-by: lixin433<lixin433@huawei.com> # message auto-generated for no-merge-commit merge: !8888 merge master-sort into master 贡献sort lib全局排序公共库 Created-by: lixin433 Commit-by: lixin433 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 贡献sort lib全局排序公共库,供索引类算子全局排序方案使用 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue [#4913](https://gitcode.com/cann/ops-nn/issues/4913) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟通过,ut通过,本地测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8888 | 29 天前 | |
AscendC接口兼容性变更整改 Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !8316 merge scatter into master AscendC接口兼容性变更整改 Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 AscendC部分接口兼容性变更,为与接口文档保持一致,修改部分算子对应接口。修改后各算子二进制和修改前一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 修改后各算子二进制和修改前一致,算子调用OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:算子AscendC接口兼容性整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8316 | 29 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 16 天前 | |
SparseSegmentMean RT2 infershape 迁移 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !8004 merge sparse_segment_mean_rt2_infershape into master SparseSegmentMean RT2 infershape 迁移 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ### 修改内容 - 新增 SparseSegmentMean RT2 InferShape/InferDataType。 - 输出 shape 语义对齐 canndev SparseSegmentMean RT2,复用 SparseSegmentSum 同类推导口径。 - 增加 op_host infershape UT 覆盖 segment_ids 常量、未知输出首维、dtype 跟随输入等场景。 ### 依据 - canndev: ops/built-in/op_proto/runtime/math_ops.cc SparseSegmentMean RT2 - 参考已合入 SparseSegmentSum RT2 迁移写法 ### 验证 - git diff --check - bash build.sh -u --ophost --ops=sparse_segment_mean --noexec -j8 - pre-commit 已在提交时通过 See merge request: cann/ops-nn!8004 | 21 天前 | |
修复geir重复定义SparseSegmentMeanGrad的问题 Co-authored-by: xiaodong666<yuanxiaodong6@huawei.com> # message auto-generated for no-merge-commit merge: !9272 merge geir_error_fix into master 修复geir重复定义SparseSegmentMeanGrad的问题 Created-by: xiaodong666 Commit-by: xiaodong666 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复geir重复定义SparseSegmentMeanGrad的问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5197](https://gitcode.com/cann/ops-nn/issues/5197) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 在nn仓增加与legacy仓一样的算子宏定义,保证算子不会重复定义 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9272 | 22 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 16 天前 | |
修改SparseSegmentSumGrad、Dilation2D infershape并增加对应UT Co-authored-by: wang-shilong32<wangshilong23@huawei.com> # message auto-generated for no-merge-commit merge: !8931 merge fix_dilation_sparse_infer into master 修改SparseSegmentSumGrad、Dilation2D infershape并增加对应UT Created-by: wang-shilong32 Commit-by: wang-shilong32 Merged-by: cann-robot Description: ## 描述 修改SparseSegmentSumGrad、Dilation2D infershape -1/-2场景 并增加对应UT <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4950 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地验证对应UT用例,出包验证,冒烟测试。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8931 | 28 天前 | |
针对nn仓部分算子存在错误日志问题进行统一整改 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9382 merge master into master 针对nn仓部分算子存在错误日志问题进行统一整改 Created-by: qq_52874943 Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 本 PR 针对 nn 仓部分算子的日志问题进行统一整改,核心内容包括三方面:一是将 activation/relu_grad_v2 与 activation/softplus 的示例测试程序中失败分支的 printf 日志级别由 INFO 纠正为 ERROR;二是对 relu_grad_v2、softplus、map_index、quant_update_scatter、sparse_slice 等算子的 tiling 代码统一修正 OP_LOGE 调用(将误传的 tilingContext 改为 tilingContext->GetNodeName()),并为失败日志补充 coreNum、ubSize、维度等关键参数,同时删除大量冗余的 OP_LOGD 调试日志;三是在 torch_extension/cann_ops_nn/op_builder/builder.py 中为算子 JIT 编译引入文件锁,避免多进程并发编译冲突。 ## 关联的Issue 关联Issue[#5183](https://gitcode.com/cann/ops-nn/issues/5183) ## 测试 本地已完成新精度对比与性能测试,通过静态检查、蓝区冒烟、算子ST以及算子二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9382 | 20 天前 | |
SparseToDense RT2 infershape 迁移 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !8005 merge sparse_to_dense_rt2_infershape into master SparseToDense RT2 infershape 迁移 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ### 修改内容 - 新增 SparseToDense RT2 InferShape/InferDataType。 - 输出 shape 从 output_shape 常量输入推导,非 const 时按 output_shape rank 设置未知维度。 - dtype 跟随 values 输入,增加 op_host infershape UT 覆盖常量/非 const/dtype 场景。 ### 依据 - canndev: ops/built-in/op_proto/runtime/sparse_ops.cc SparseToDense RT2 ### 验证 - git diff --check - bash build.sh -u --ophost --ops=sparse_to_dense --noexec -j8 - pre-commit 已在提交时通过 See merge request: cann/ops-nn!8005 | 21 天前 | |
fix: 修复 TensorScatterUpdate AICPU 并行分支错误码被吞 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !9125 merge tensor_scatter_update_parallel_error into master fix: 修复 TensorScatterUpdate AICPU 并行分支错误码被吞 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 TensorScatterUpdate AICPU 算子的 UpdateOutput 在 info.updates_nums > kSplitSize(64*1024 个元素)时走 CpuKernelUtils::ParallelFor 多线程分支,该分支存在两个问题。 **1. 错误码必现丢失(功能缺陷)** worker 通过按引用捕获的 ret 上报状态,但随后 ret = CpuKernelUtils::ParallelFor(...) 用其返回值覆盖了 ret。CpuKernelUtils::ParallelFor 在 device/sharder 非空时无条件 return KERNEL_STATUS_OK,且其内部 barrier 保证所有 worker 先于该赋值完成,因此 worker 上报的 PARAM_INVALID / INNER_ERROR **100% 被覆盖为 OK**,与线程交错无关。 由此产生行为不一致:同一份越界 indices 输入,updates 元素数 <= 65536 走串行分支正确返回 PARAM_INVALID;> 65536 则静默返回 OK 并输出错误数据。 **2. 数据竞争** ret 为非原子 uint32_t,被多个 worker 并发读(:196/:201)写(:200)。同文件 InitializeOutput(:131) 以及 scatter_elements_aicpu.cpp:250、scatter_nd_max_aicpu.cpp:79 的同构实现均使用 std::atomic<uint32_t>,此处为遗漏。 ### 修改内容 - ret 改为 std::atomic<uint32_t> work_ret,与同仓同类实现对齐; - 循环内改用局部变量 one_ret 承接单次结果,仅在出错时写 work_ret; - ParallelFor 的返回值不再覆盖 work_ret,仅在派发失败时写入。 ### 顺带的性能收益 原实现每次迭代都写共享的 ret(:200 在内层循环内),所有核在同一 cache line 上反复搬运。改后热路径无共享写。x86 微基准(1M updates,模拟 inner_shape_nums==1): | 线程数 | 修改前 | 修改后 | |---|---|---| | 1 | 13.91 ms | 13.63 ms | | 2 | **21.74 ms** | 7.13 ms | | 4 | 20.24 ms | 3.77 ms | | 8 | 15.10 ms | 3.71 ms | 注意修改前 2 线程反而慢于 1 线程,即该并行分支原本基本没有加速比;修改后恢复线性扩展。该数据来自 x86 开发机,非 NPU 实测,仅用于说明量级与方向。 ## 关联的Issue 关联Issue #5084 ## 测试 **1. 单元测试(tests/ut/op_kernel_aicpu/test_tensor_scatter_update.cpp)** 此前 11 个用例全部为小张量,UpdateOutput 的并行分支零覆盖。本 PR 新增 2 例: - PARALLEL_BRANCH_SUCC:updates_nums = 70000 > 65536,合法 indices(逆序置换,让各 shard 写入交错),验证并行分支结果正确; - FAILED_OUT_OF_BOUNDS_INDEX_PARALLEL:同样规模下含单个越界 index,验证返回 KERNEL_STATUS_PARAM_INVALID。 回归对照(bash build.sh --opkernel_aicpu_test --ops=tensor_scatter_update): | | 修改前 | 修改后 | |---|---|---| | 原有 11 例 | 全通过 | 全通过 | | PARALLEL_BRANCH_SUCC | 通过 | 通过 | | FAILED_OUT_OF_BOUNDS_INDEX_PARALLEL | **失败**(ret=0,期望 1) | 通过 | 修改前 12 通过 1 失败,修改后 13/13 全通过。新增用例确实能捕获该缺陷。 **2. 真机验证(Ascend 910B3 + CANN 9.1.0)** 打自定义算子包(bash build.sh --pkg --soc=ascend910b --ops=tensor_scatter_update,确认 tensor_scatter_update_aicpu.cpp.o 编入 libnn_aicpu_kernels.so)后,用 graph example 对照: | 输入 | CANN 9.1.0 内置算子 | 装入本修复后 | |---|---|---| | 越界 index,updates_nums=70000(并行分支) | Run graph success,输出静默错 10 个元素 | Run graph failed(预期) | | 合法 index,updates_nums=70000(并行分支) | — | SELF_CHECK mismatch=0,success | | 仓内原版 updates_nums=10(串行分支) | success | success,数值不变 | 第一行即本 PR 的核心:错误现在能一路传到 session->RunGraph()。UT 覆盖 HostSharder,真机覆盖 DeviceSharder,两条 sharder 路径均已验证。 注:build.sh --run_example 单独执行时不编译 AICPU kernel,链接的是已安装的 opp 包,需打自定义包安装后才能验证算子改动。 **3. 门禁** pre-commit run 全部通过(trailing-whitespace / end-of-file / clang-format / codespell / OAT 等)。 ## 文档更新 无。本 PR 不改变算子对外接口、语义或约束,仅修复并行分支下错误码未上报的实现缺陷,行为向串行分支对齐。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9125 | 23 天前 | |
修改aclnn文档示例代码问题 Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !9489 merge scatter_add into master 修改aclnn文档示例代码问题 Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 修改aclnnTfScatterAdd.md文档示例代码问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5326 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 aclnnScatterAdd.md和aclnnTfScatterAdd.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9489 | 17 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 20 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 20 天前 | |
docs:修复Unique系列 ACLNN文档中的格式与示例错误 Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !9697 merge master into master docs:修复Unique系列 ACLNN文档中的格式与示例错误 Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 修复Unique系列 ACLNN文档中的格式与示例错误。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5491 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次仅修改 Markdown 文档和文档内示例代码,未执行编译或运行测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - index/unique_consecutive/docs/aclnnUnique.md - index/unique_consecutive/docs/aclnnUnique2.md - index/unique_consecutive/docs/aclnnUniqueConsecutive.md - index/unique_with_counts_ext2/docs/aclnnUniqueDim.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9697 | 15 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 16 天前 | |
算子插件迁移 Co-authored-by: welt_lester<songlizhe1@h-partners.com> Co-authored-by: x00842564<xuyanke@huawei.com> # message auto-generated for no-merge-commit merge: !8474 merge master into master 算子插件迁移 Created-by: welt_lester Commit-by: x00842564;welt_lester Merged-by: cann-robot Description: ## 描述 落实issue #4279,将adaptive_avg_pool2d、adaptive_max_pool2d、ascend_anti_quant、ascend_dequant、ascend_quant、batch_mat_mul_v3、batch_norm、celu_v2、instance_norm_v3、ascend_quant、log_softmax_v2、mat_mul_v3、unique_with_counts_and_sorting这13个算子对应的插件从common\src\framework迁出到各自算子目录新建的\framework目录下。 ## 关联的Issue [Bug-Report|缺陷反馈]: 有对应算子的插件不应该放到公共目录 [#4279](https://gitcode.com/cann/ops-nn/issues/4279) ## 测试 compile、本地验证build通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(算子插件归属迁移,落实 #4279 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8474 | 1 个月前 | |
docs:修复Unique系列 ACLNN文档中的格式与示例错误 Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !9697 merge master into master docs:修复Unique系列 ACLNN文档中的格式与示例错误 Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 修复Unique系列 ACLNN文档中的格式与示例错误。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5491 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次仅修改 Markdown 文档和文档内示例代码,未执行编译或运行测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - index/unique_consecutive/docs/aclnnUnique.md - index/unique_consecutive/docs/aclnnUnique2.md - index/unique_consecutive/docs/aclnnUniqueConsecutive.md - index/unique_with_counts_ext2/docs/aclnnUniqueDim.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9697 | 15 天前 | |
UnsortedSegmentMax性能优化 Co-authored-by: zhangxiyan7<zhangxiyan7@huawei.com> # message auto-generated for no-merge-commit merge: !9564 merge UnsortedSegmentMax into master UnsortedSegmentMax性能优化 Created-by: zhangxiyan7 Commit-by: zhangxiyan7 Merged-by: cann-robot Description: ## 描述 针对 UnsortedSegmentMax 的 OutFl 与 SortSimt 两个模板路径进行性能优化: 1. OutFl(输出全载)模板:SIMT 多行并行 - 多行缓冲的跨行步长 accStride 采用奇数块对齐,规避 bank 冲突; - 累加器数量 P 由固定 ROW_NUM(16) 改为动态 parallelNum,在 UB 空间不溢出的前提下提升并行行数; - innerDim == 1 时走专用特化路径,省去每行冗余的2次乘法和1次加法scalar计算。 2. SortSimt 模板:int64 排序键窄化 - segmentIds 为 int64 且 num_segments ≤ INT32_MAX 时启用窄化(narrowSortKey=1):排序dtype由 int64 窄化为 int32,排序数据量与 UB 占用减半,单批可排序规模上界提升。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5413 ## 测试 目标用例性能达标(换算带宽后实现 竞品耗时/NPU耗时 > 0.2),冒烟通过。 | # | 用例 / dtype | 输入形状(seg数) | 初始NPU耗时(µs) | 初始耗时比 | 最终NPU耗时(µs) | 最终耗时比 | |---|---|---|---|---|---|---| | 1 | 000000 int32/int32 | [6628011] (117) | 481.54 | 0.055 | 41.14 | 0.642 | | 2 | 000008 fp16/int32 | [2,5,78511,4,3] (431) | 664.57 | 0.059 | 84.28 | 0.468 | | 3 | 000031 fp32/int64 | [10,5487,2,2,2,2,2,2] (562) | 434.29 | 0.033 | 69.76 | 0.206 | | 4 | 000033 bf16/int64 | [8077011] (528) | 991.70 | 0.041 | 80.94 | 0.503 | | 5 | 000036 bf16/int32 | [3412,36,10] (369) | 91.46 | 0.079 | 19.11 | 0.376 | | 6 | 000050 int32/int32 | [1514,1710] (790) | 190.79 | 0.061 | 50.31 | 0.230 | | 7 | 000113 fp16/int64 | [4872008] (163) | 601.10 | 0.038 | 39.84 | 0.571 | | 8 | 000114 fp16/int32 | [793,1297] (928) | 77.62 | 0.082 | 24.33 | 0.263 | | 9 | 000133 fp32/int64 | [7,30773,7] (492) | 40.46 | 0.194 | 21.05 | 0.373 | | 10 | 000134 fp32/int32 | [13,19,31,39] (34) | 25.48 | 0.147 | 11.98 | 0.314 | | 11 | 000147 bf16/int64 | [163,4073] (71) | 86.71 | 0.057 | 20.13 | 0.246 | | 12 | 000148 bf16/int32 | [1,91,15700] (403) | 105.45 | 0.074 | 21.10 | 0.368 | | 13 | 000152 bf16/int32 | [6,6,8,313,76] (229) | 485.36 | 0.055 | 41.14 | 0.648 | | 14 | 000160 int32/int32 | [6982603] (445) | 506.42 | 0.055 | 117.41 | 0.235 | | 15 | 000168 int32/int32 | [1,2,724159,1,1] (96) | 109.50 | 0.069 | 18.62 | 0.406 | | 16 | 000171 int32/int64 | [2,388,2,220,2,2] (541) | 170.70 | 0.043 | 31.70 | 0.233 | | 17 | 000225 fp32/int32,int64 | [4678,4799] (742) | 1577.47 | 0.062 | 364.12 | 0.269 | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UnsortedSegmentMax算子性能优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9564 | 16 天前 | |
refactor unsorted_segment series tilingkey register Co-authored-by: oah28<wujiahao37@huawei.com> # message auto-generated for no-merge-commit merge: !8864 merge unsorted_segment into master refactor unsorted_segment series tilingkey register Created-by: oah28 Commit-by: oah28 Merged-by: cann-robot Description: ## 描述 针对UnsortedSegment 系列算子(Sum/Max/Min/Prod)的 TilingKey 采用新的注册方式,利用模板化编程ASCENDC_TPL_ARGS_DECL/ASCENDC_TPL_SEL 模板注册方式替换硬编码 TilingKey。 1.将各 Tiling 类 GetTilingKey() 中硬编码的数值常量(如 1000/4000/5000/6000/7000/8000/9000/3100-3202)统一替换为基于模板参数的 GET_TPL_TILING_KEY(TPL_MODE_*, TPL_CAST_*); 2.新增 unsorted_segment_tiling_key.h、unsorted_segment_sum_tiling_key.h、unsorted_segment_sum_struct.h 集中声明模板模式、cast 模式及各模式对应的 tiling 数据结构; 3.host 侧注册宏由 REGISTER_OPS_TILING_TEMPLATE 改为 REGISTER_TILING_TEMPLATE,并将 tiling 数据的写入方式从 set_xxx() + SaveToBuffer 迁移到 context_->GetTilingData<T>() 直接赋值; 4.kernel 入口由运行时 TILING_KEY_IS 判断改为 template <uint64_t TEMPLATE_MODE, uint64_t CAST_MODE> + if constexpr 的编译期分发。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5312](https://gitcode.com/cann/ops-nn/issues/5312) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 门槛用例精度通过,冒烟,ut/st通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UnsortedSegment 系列算子TilingKey模板化编程 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8864 | 19 天前 | |
refactor unsorted_segment series tilingkey register Co-authored-by: oah28<wujiahao37@huawei.com> # message auto-generated for no-merge-commit merge: !8864 merge unsorted_segment into master refactor unsorted_segment series tilingkey register Created-by: oah28 Commit-by: oah28 Merged-by: cann-robot Description: ## 描述 针对UnsortedSegment 系列算子(Sum/Max/Min/Prod)的 TilingKey 采用新的注册方式,利用模板化编程ASCENDC_TPL_ARGS_DECL/ASCENDC_TPL_SEL 模板注册方式替换硬编码 TilingKey。 1.将各 Tiling 类 GetTilingKey() 中硬编码的数值常量(如 1000/4000/5000/6000/7000/8000/9000/3100-3202)统一替换为基于模板参数的 GET_TPL_TILING_KEY(TPL_MODE_*, TPL_CAST_*); 2.新增 unsorted_segment_tiling_key.h、unsorted_segment_sum_tiling_key.h、unsorted_segment_sum_struct.h 集中声明模板模式、cast 模式及各模式对应的 tiling 数据结构; 3.host 侧注册宏由 REGISTER_OPS_TILING_TEMPLATE 改为 REGISTER_TILING_TEMPLATE,并将 tiling 数据的写入方式从 set_xxx() + SaveToBuffer 迁移到 context_->GetTilingData<T>() 直接赋值; 4.kernel 入口由运行时 TILING_KEY_IS 判断改为 template <uint64_t TEMPLATE_MODE, uint64_t CAST_MODE> + if constexpr 的编译期分发。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5312](https://gitcode.com/cann/ops-nn/issues/5312) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 门槛用例精度通过,冒烟,ut/st通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UnsortedSegment 系列算子TilingKey模板化编程 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8864 | 19 天前 | |
refactor unsorted_segment series tilingkey register Co-authored-by: oah28<wujiahao37@huawei.com> # message auto-generated for no-merge-commit merge: !8864 merge unsorted_segment into master refactor unsorted_segment series tilingkey register Created-by: oah28 Commit-by: oah28 Merged-by: cann-robot Description: ## 描述 针对UnsortedSegment 系列算子(Sum/Max/Min/Prod)的 TilingKey 采用新的注册方式,利用模板化编程ASCENDC_TPL_ARGS_DECL/ASCENDC_TPL_SEL 模板注册方式替换硬编码 TilingKey。 1.将各 Tiling 类 GetTilingKey() 中硬编码的数值常量(如 1000/4000/5000/6000/7000/8000/9000/3100-3202)统一替换为基于模板参数的 GET_TPL_TILING_KEY(TPL_MODE_*, TPL_CAST_*); 2.新增 unsorted_segment_tiling_key.h、unsorted_segment_sum_tiling_key.h、unsorted_segment_sum_struct.h 集中声明模板模式、cast 模式及各模式对应的 tiling 数据结构; 3.host 侧注册宏由 REGISTER_OPS_TILING_TEMPLATE 改为 REGISTER_TILING_TEMPLATE,并将 tiling 数据的写入方式从 set_xxx() + SaveToBuffer 迁移到 context_->GetTilingData<T>() 直接赋值; 4.kernel 入口由运行时 TILING_KEY_IS 判断改为 template <uint64_t TEMPLATE_MODE, uint64_t CAST_MODE> + if constexpr 的编译期分发。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5312](https://gitcode.com/cann/ops-nn/issues/5312) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 门槛用例精度通过,冒烟,ut/st通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UnsortedSegment 系列算子TilingKey模板化编程 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8864 | 19 天前 | |
refactor unsorted_segment series tilingkey register Co-authored-by: oah28<wujiahao37@huawei.com> # message auto-generated for no-merge-commit merge: !8864 merge unsorted_segment into master refactor unsorted_segment series tilingkey register Created-by: oah28 Commit-by: oah28 Merged-by: cann-robot Description: ## 描述 针对UnsortedSegment 系列算子(Sum/Max/Min/Prod)的 TilingKey 采用新的注册方式,利用模板化编程ASCENDC_TPL_ARGS_DECL/ASCENDC_TPL_SEL 模板注册方式替换硬编码 TilingKey。 1.将各 Tiling 类 GetTilingKey() 中硬编码的数值常量(如 1000/4000/5000/6000/7000/8000/9000/3100-3202)统一替换为基于模板参数的 GET_TPL_TILING_KEY(TPL_MODE_*, TPL_CAST_*); 2.新增 unsorted_segment_tiling_key.h、unsorted_segment_sum_tiling_key.h、unsorted_segment_sum_struct.h 集中声明模板模式、cast 模式及各模式对应的 tiling 数据结构; 3.host 侧注册宏由 REGISTER_OPS_TILING_TEMPLATE 改为 REGISTER_TILING_TEMPLATE,并将 tiling 数据的写入方式从 set_xxx() + SaveToBuffer 迁移到 context_->GetTilingData<T>() 直接赋值; 4.kernel 入口由运行时 TILING_KEY_IS 判断改为 template <uint64_t TEMPLATE_MODE, uint64_t CAST_MODE> + if constexpr 的编译期分发。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5312](https://gitcode.com/cann/ops-nn/issues/5312) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 门槛用例精度通过,冒烟,ut/st通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UnsortedSegment 系列算子TilingKey模板化编程 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8864 | 19 天前 | |
TF plugin修改1 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !7547 merge nn1 into master TF plugin修改1 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 TF plugin修改 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4196 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7547 | 1 个月前 | |
License Change Split2 Co-authored-by: huohuo_wy<wangyan389@huawei.com> # message auto-generated for no-merge-commit merge: !371 merge spilit2License3 into master License Change Split2 Created-by: huohuo_wangyan Commit-by: huohuo_wy Merged-by: cann-robot Description: ## 描述 批量整改文件copyright注释 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/177 ## 测试 COPYRIGHT注释头按新要求刷新 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!371 | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 16 天前 | ||
| 17 天前 | ||
| 16 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 17 天前 | ||
| 24 天前 | ||
| 17 天前 | ||
| 21 天前 | ||
| 17 天前 | ||
| 17 天前 | ||
| 17 天前 | ||
| 17 天前 | ||
| 20 天前 | ||
| 16 天前 | ||
| 17 天前 | ||
| 20 天前 | ||
| 17 天前 | ||
| 2 个月前 | ||
| 21 天前 | ||
| 24 天前 | ||
| 21 天前 | ||
| 17 天前 | ||
| 2 个月前 | ||
| 20 天前 | ||
| 20 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 17 天前 | ||
| 16 天前 | ||
| 19 天前 | ||
| 21 天前 | ||
| 16 天前 | ||
| 22 天前 | ||
| 16 天前 | ||
| 20 天前 | ||
| 29 天前 | ||
| 20 天前 | ||
| 17 天前 | ||
| 20 天前 | ||
| 20 天前 | ||
| 2 个月前 | ||
| 20 天前 | ||
| 21 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 17 天前 | ||
| 16 天前 | ||
| 20 天前 | ||
| 17 天前 | ||
| 20 天前 | ||
| 15 天前 | ||
| 19 天前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 20 天前 | ||
| 16 天前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 16 天前 | ||
| 15 天前 | ||
| 15 天前 | ||
| 18 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 21 天前 | ||
| 19 天前 | ||
| 18 天前 | ||
| 16 天前 | ||
| 29 天前 | ||
| 29 天前 | ||
| 16 天前 | ||
| 21 天前 | ||
| 22 天前 | ||
| 16 天前 | ||
| 28 天前 | ||
| 20 天前 | ||
| 21 天前 | ||
| 23 天前 | ||
| 17 天前 | ||
| 20 天前 | ||
| 20 天前 | ||
| 15 天前 | ||
| 16 天前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 16 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 1 个月前 | ||
| 9 个月前 |