| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fmm_st Co-authored-by: s00949636<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !9201 merge muon_ttk into master fmm_st Created-by: szhexin Commit-by: s00949636 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->fusedmatmul st补充 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue #5361 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->    ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:st更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9201 | 7 天前 | |
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 | 7 天前 | |
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 | 6 天前 | |
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 | 11 天前 | |
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 | 7 天前 | |
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 | 14 天前 | |
算子中存在使用内部的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 | 7 天前 | |
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 | 11 天前 | |
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 | 7 天前 | |
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 | 7 天前 | |
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 | 7 天前 | |
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 | 7 天前 | |
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 | 10 天前 | |
新增aclnnTopkV2接口适配TopkV2算子支持小k场景下的双调排序 Co-authored-by: caoyan_huawei<caoyan11@huawei.com> # message auto-generated for no-merge-commit merge: !8845 merge cy_br_npu_gpu_index into master 新增aclnnTopkV2接口适配TopkV2算子支持小k场景下的双调排序 Created-by: caoyan_huawei Commit-by: caoyan_huawei Merged-by: cann-robot Description: ## 概述 本 PR 为 Topk 算子新增带 sortPolicy 参数的 V2 接口 aclnnTopkV2,用于在指定条件下走 Bitonic 排序路径,使输出索引与 GPU 侧对齐。核心做法是:将原 aclnnTopkGetWorkspaceSize 的逻辑抽取为公共函数 aclnnTopkGetWorkspaceSizeCommon(新增 sortPolicy 参数),并让原 V1 接口与新 V2 接口共同复用;同时定义 Bitonic 排序的阈值与策略常量,新增 IsBitonicSort 判断,当 k 处于 [2, 32] 且 sorted 为 true、sortPolicy == 1 时,跳过原有的 IsSort/IsSortAndTopK 排序分支,改走 l0op::Topk 路径并把 sortPolicy 透传下去。 主要改动 1. 新增 TopkV2 对外接口:在 aclnn_topk.h 中声明 aclnnTopkV2GetWorkspaceSize 与 aclnnTopkV2,在 aclnn_topk.cpp 中实现,二者复用公共逻辑 aclnnTopkGetWorkspaceSizeCommon,并新增 sortPolicy 入参。 2. 重构 workspace 计算逻辑:原 aclnnTopkGetWorkspaceSize 函数体被抽取为带 sortPolicy 参数的 aclnnTopkGetWorkspaceSizeCommon,原接口作为兼容入口以默认值 0 调用公共函数,行为保持不变。 3. 新增 Bitonic 排序策略判断:定义常量 BITONIC_SORT_MAX_K_THRESTHOD(32)、BITONIC_SORT_MIN_K_THRESTHOD(2)、TOP_K_BITONIC_SORT_POLICY(1),并新增 IsBitonicSort 函数;在各排序分支(IsSort、IsSortAndTopK)条件中追加 !IsBitonicSort(...),使满足条件的场景不再走 sort 分支。 4. 扩展 l0op::Topk 接口:在 common/stub/op_api/level0/topk.h 中声明带 sortPolicy 参数的新 Topk 重载,并在 common/stub/op_api/op_api_stub.cpp 中补充对应的 stub 实现;aclnn_topk.cpp 中的各 l0op::Topk 调用点均改为传入 sortPolicy。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5236 ## 测试 ST, UT,二级冒烟测试正常 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8845 | 6 天前 | |
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 | 7 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
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 | 6 天前 | |
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 | 11 天前 | |
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 | 14 天前 | |
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 | 11 天前 | |
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 | 7 天前 | |
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 | 9 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
fix: 重命名kernel侧头文件解决与host侧命名冲突并补充simt后缀 Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> # message auto-generated for no-merge-commit merge: !9554 merge rename_avg_pool_file into master fix: 重命名kernel侧头文件解决与host侧命名冲突并补充simt后缀 Created-by: yu_qinfei Commit-by: yu_qinfei Merged-by: cann-robot Description: ## 描述 重命名4个kernel侧头文件,解决与host侧头文件命名冲突并统一simt后缀命名规范: 1. pooling/avg_pool/op_kernel/arch35/avg_pool_common.h → avg_pool_kernel_common.h:与host侧 op_host/avg_pool_common.h 重名,改为 avg_pool_kernel_common.h 区分。同步更新6个引用该头文件的kernel文件(avg_pool_big_kernel.h、avg_pool_big_kernel_nhwc.h、avg_pool_nchw_small_kernel.h、avg_pool_nchw_small_kernel_pad.h、avg_pool_nhwc_small_kernel.h、avg_pool_nhwc_small_kernel_pad.h)。 2. index/gather_v2/op_kernel/arch35/gather_v2.h → gather_v2_simt.h:标识该头文件为SIMT实现,同步更新 gather_v2_apt.cpp 引用。 3. index/gather_elements/op_kernel/arch35/gather_elements.h → gather_elements_simt.h:同上,同步更新 gather_elements_apt.cpp 引用。 4. index/index_put_with_sort_v2/op_kernel/arch35/index_put_with_sort_v2.h → index_put_with_sort_v2_simt.h:同上,同步更新 index_put_with_sort_v2.cpp 引用。 所有改动仅涉及文件重命名、头文件保护宏(include guard)、文件注释及 #include 引用路径更新,不涉及任何类名或逻辑变更。 ## 关联的Issue - #5384 ## 测试 - 本地执行 pre-commit 检查全部通过(trailing-whitespace、end-of-file-fixer、clang-format、codespell、OAT Compliance Check) - 验证所有 include 引用已正确更新,无残留旧文件名引用 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9554 | 7 天前 | |
Migrate index AICPU shape operators Co-authored-by: jialimin1<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !7519 merge migrate-index-to-addr-aicpu into master Migrate index AICPU shape operators Created-by: jialimin1 Commit-by: jialimin1 Merged-by: cann-robot Description: ## 描述 将三个 AICPU shape 类算子从源仓迁移至 ops-nn 仓库,统一算子仓管理,共新增 43 个文件,并同步更新算子清单 docs/zh/op_list.md: 1. **IndexToAddr**:根据块索引、原始矩阵 shape、块 shape 和基地址信息,生成块内每一行对应的地址表。输入 base_addr(shape=[2])与块索引 x(shape=[2]),输出地址表 shape 为 [block_size[0], 4],每行 [rank_id, base_addr[0]+bias_addr, base_addr[1]+bias_addr, row_size*dtype_size],支持 INT64/UINT64。 2. **NonZeroWithValueShape**:根据 NonZeroWithValue 的 count 输入更新 value/index 输出 shape,分别置为 [count[0]] 与 [2, count[0]]。 3. **NonZeroWithValueShapeV2**:V2 版本,在 V1 基础上新增 GetInputTypeAndCheck 显式校验 index/count 必须为 INT32,输出语义与 V1 一致。 每个算子按 ops-nn 标准目录结构组织,包含 op_graph(IR 原型)、op_host(infershape)、op_kernel_aicpu(kernel 实现与 REGISTER_CPU_KERNEL 注册)、examples(图模式调用样例)、tests/ut(单元测试)、各级 CMakeLists.txt 与 README.md。 ## 关联的Issue #4163 ## 测试 根据代码变更,测试场景如下: 1. **编译构建测试** - 对三个算子(IndexToAddr / NonZeroWithValueShape / NonZeroWithValueShapeV2)分别执行各级 CMakeLists.txt 配置与编译,验证新增 CMake 配置变更正确,算子可正常构建。 2. **算子加载/注册验证** - 验证 REGISTER_CPU_KERNEL 注册成功,三个算子可被框架正确识别与加载。 3. **InferShape 验证** - 验证 op_host/*_infershape.cpp 输出 shape 推导:IndexToAddr 输出 [block_size[0], 4];NonZeroWithValueShape[V2] 输出 out_value=[count]、out_index=[2, count]。 4. **单元测试** - 运行 tests/ut/op_kernel_aicpu/test_*.cpp,覆盖 INT64/UINT64(IndexToAddr)、INT32 校验(NonZeroWithValueShapeV2)等数据类型分支与参数校验逻辑。 5. **图模式接口调用验证** - 运行 examples/test_geir_*.cpp,通过算子 IR 构图方式调用三个算子,验证端到端功能与输出正确性。 6. **参数校验测试** - 覆盖 Check() 中的边界场景:base_addr/x 数据类型一致且 shape=[2]、ori_shape/block_size 为 2 元素、block_size[0]*4 <= output.NumElements()、storage mode 仅支持 Matrix、V2 版本 index/count 必须为 DT_INT32、count 至少 1 个元素等。 7. **算子清单登记验证** - 确认 docs/zh/op_list.md 中三个算子条目正确显示,分类为 index,类型为 AI CPU,且 README 链接可达。 ## 文档更新 - 新增 index/index_to_addr/README.md、index/non_zero_with_value_shape/README.md、index/non_zero_with_value_shape_v2/README.md:产品支持情况、功能说明、参数说明、约束说明与调用说明。 - 更新 docs/zh/op_list.md:登记 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2 三个算子条目。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7519 | 1 个月前 | |
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 | 7 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
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 | 9 天前 | |
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 | 11 天前 | |
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 | 10 天前 | |
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 | 12 天前 | |
docs: 更新16个算子README,新增支持Atlas A2/A3系列产品 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8571 merge doc into master docs: 更新16个算子README,新增支持Atlas A2/A3系列产品 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 更新16个算子README,新增支持Atlas A2/A3系列产品 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4785 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8571 | 24 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
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 | 19 天前 | |
针对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 | 10 天前 | |
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 | 7 天前 | |
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 | 10 天前 | |
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 | 10 天前 | |
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 | 10 天前 | |
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 | 11 天前 | |
Migrate index AICPU shape operators Co-authored-by: jialimin1<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !7519 merge migrate-index-to-addr-aicpu into master Migrate index AICPU shape operators Created-by: jialimin1 Commit-by: jialimin1 Merged-by: cann-robot Description: ## 描述 将三个 AICPU shape 类算子从源仓迁移至 ops-nn 仓库,统一算子仓管理,共新增 43 个文件,并同步更新算子清单 docs/zh/op_list.md: 1. **IndexToAddr**:根据块索引、原始矩阵 shape、块 shape 和基地址信息,生成块内每一行对应的地址表。输入 base_addr(shape=[2])与块索引 x(shape=[2]),输出地址表 shape 为 [block_size[0], 4],每行 [rank_id, base_addr[0]+bias_addr, base_addr[1]+bias_addr, row_size*dtype_size],支持 INT64/UINT64。 2. **NonZeroWithValueShape**:根据 NonZeroWithValue 的 count 输入更新 value/index 输出 shape,分别置为 [count[0]] 与 [2, count[0]]。 3. **NonZeroWithValueShapeV2**:V2 版本,在 V1 基础上新增 GetInputTypeAndCheck 显式校验 index/count 必须为 INT32,输出语义与 V1 一致。 每个算子按 ops-nn 标准目录结构组织,包含 op_graph(IR 原型)、op_host(infershape)、op_kernel_aicpu(kernel 实现与 REGISTER_CPU_KERNEL 注册)、examples(图模式调用样例)、tests/ut(单元测试)、各级 CMakeLists.txt 与 README.md。 ## 关联的Issue #4163 ## 测试 根据代码变更,测试场景如下: 1. **编译构建测试** - 对三个算子(IndexToAddr / NonZeroWithValueShape / NonZeroWithValueShapeV2)分别执行各级 CMakeLists.txt 配置与编译,验证新增 CMake 配置变更正确,算子可正常构建。 2. **算子加载/注册验证** - 验证 REGISTER_CPU_KERNEL 注册成功,三个算子可被框架正确识别与加载。 3. **InferShape 验证** - 验证 op_host/*_infershape.cpp 输出 shape 推导:IndexToAddr 输出 [block_size[0], 4];NonZeroWithValueShape[V2] 输出 out_value=[count]、out_index=[2, count]。 4. **单元测试** - 运行 tests/ut/op_kernel_aicpu/test_*.cpp,覆盖 INT64/UINT64(IndexToAddr)、INT32 校验(NonZeroWithValueShapeV2)等数据类型分支与参数校验逻辑。 5. **图模式接口调用验证** - 运行 examples/test_geir_*.cpp,通过算子 IR 构图方式调用三个算子,验证端到端功能与输出正确性。 6. **参数校验测试** - 覆盖 Check() 中的边界场景:base_addr/x 数据类型一致且 shape=[2]、ori_shape/block_size 为 2 元素、block_size[0]*4 <= output.NumElements()、storage mode 仅支持 Matrix、V2 版本 index/count 必须为 DT_INT32、count 至少 1 个元素等。 7. **算子清单登记验证** - 确认 docs/zh/op_list.md 中三个算子条目正确显示,分类为 index,类型为 AI CPU,且 README 链接可达。 ## 文档更新 - 新增 index/index_to_addr/README.md、index/non_zero_with_value_shape/README.md、index/non_zero_with_value_shape_v2/README.md:产品支持情况、功能说明、参数说明、约束说明与调用说明。 - 更新 docs/zh/op_list.md:登记 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2 三个算子条目。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7519 | 1 个月前 | |
Migrate index AICPU shape operators Co-authored-by: jialimin1<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !7519 merge migrate-index-to-addr-aicpu into master Migrate index AICPU shape operators Created-by: jialimin1 Commit-by: jialimin1 Merged-by: cann-robot Description: ## 描述 将三个 AICPU shape 类算子从源仓迁移至 ops-nn 仓库,统一算子仓管理,共新增 43 个文件,并同步更新算子清单 docs/zh/op_list.md: 1. **IndexToAddr**:根据块索引、原始矩阵 shape、块 shape 和基地址信息,生成块内每一行对应的地址表。输入 base_addr(shape=[2])与块索引 x(shape=[2]),输出地址表 shape 为 [block_size[0], 4],每行 [rank_id, base_addr[0]+bias_addr, base_addr[1]+bias_addr, row_size*dtype_size],支持 INT64/UINT64。 2. **NonZeroWithValueShape**:根据 NonZeroWithValue 的 count 输入更新 value/index 输出 shape,分别置为 [count[0]] 与 [2, count[0]]。 3. **NonZeroWithValueShapeV2**:V2 版本,在 V1 基础上新增 GetInputTypeAndCheck 显式校验 index/count 必须为 INT32,输出语义与 V1 一致。 每个算子按 ops-nn 标准目录结构组织,包含 op_graph(IR 原型)、op_host(infershape)、op_kernel_aicpu(kernel 实现与 REGISTER_CPU_KERNEL 注册)、examples(图模式调用样例)、tests/ut(单元测试)、各级 CMakeLists.txt 与 README.md。 ## 关联的Issue #4163 ## 测试 根据代码变更,测试场景如下: 1. **编译构建测试** - 对三个算子(IndexToAddr / NonZeroWithValueShape / NonZeroWithValueShapeV2)分别执行各级 CMakeLists.txt 配置与编译,验证新增 CMake 配置变更正确,算子可正常构建。 2. **算子加载/注册验证** - 验证 REGISTER_CPU_KERNEL 注册成功,三个算子可被框架正确识别与加载。 3. **InferShape 验证** - 验证 op_host/*_infershape.cpp 输出 shape 推导:IndexToAddr 输出 [block_size[0], 4];NonZeroWithValueShape[V2] 输出 out_value=[count]、out_index=[2, count]。 4. **单元测试** - 运行 tests/ut/op_kernel_aicpu/test_*.cpp,覆盖 INT64/UINT64(IndexToAddr)、INT32 校验(NonZeroWithValueShapeV2)等数据类型分支与参数校验逻辑。 5. **图模式接口调用验证** - 运行 examples/test_geir_*.cpp,通过算子 IR 构图方式调用三个算子,验证端到端功能与输出正确性。 6. **参数校验测试** - 覆盖 Check() 中的边界场景:base_addr/x 数据类型一致且 shape=[2]、ori_shape/block_size 为 2 元素、block_size[0]*4 <= output.NumElements()、storage mode 仅支持 Matrix、V2 版本 index/count 必须为 DT_INT32、count 至少 1 个元素等。 7. **算子清单登记验证** - 确认 docs/zh/op_list.md 中三个算子条目正确显示,分类为 index,类型为 AI CPU,且 README 链接可达。 ## 文档更新 - 新增 index/index_to_addr/README.md、index/non_zero_with_value_shape/README.md、index/non_zero_with_value_shape_v2/README.md:产品支持情况、功能说明、参数说明、约束说明与调用说明。 - 更新 docs/zh/op_list.md:登记 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2 三个算子条目。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7519 | 1 个月前 | |
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 | 7 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
算子中存在使用内部的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 | 7 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
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 | 7 天前 | |
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 | 9 天前 | |
新增算子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 个月前 | |
docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9399 merge fix/aclnn-doc-support-scope into master docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 三类「资料与实现不符」的订正,来源于测试反馈的资料核对。**不改动任何算子实现**,唯一的非文档改动是补了 2 条 tiling 边界 UT。 **一、GroupNormSiluQuant / GroupNormSilu:输出 Tensor 的「非连续Tensor」列标注与实现不符** aclnnGroupNormSiluQuant 的 out / meanOut / rstdOut 三行在 docs 中标 -(未标注)、在 README 中标 x(不支持);aclnnGroupNormSilu 的同三行标 x。而三者的 op_api 实现中每个输出均经 l0op::ViewCopy 写回(空 Tensor 分支的 FillScalar 同样经 ViewCopy),即支持非连续输出。三处统一改为 √。 **二、GroupNormSiluQuant:空 Tensor 支持范围声明过宽** docs 与 README 原文为「支持空Tensor(任意维度为0)」。实现自首版 5d36b373b 起,CheckAttr 即拒收 N(第 0 维)或 C(第 1 维)为 0 的输入并返回 161002。表述收窄为「支持空Tensor:N(第0维)与C(第1维)需大于0,其余维度可为0」,填充行为(out 为空、meanOut 填 0、rstdOut 填 NAN)与原描述一致,保留不变。 **三、ScatterMin / ScatterMax / ScatterMul / ScatterDiv:aclnn 资料缺少 varRef 首维上限约束** 四个算子共用 scatter_reduce_common tiling,其中 varFirstDim > INT32_MAX 即拒收——并行归并排序以 INT32_MAX 作为补齐哨兵,首维再大将使合法索引与哨兵不可区分。该约束已在四个算子的 README「约束说明」中声明(2e6678836,与实现同笔提交),但四篇 aclnn 资料的「约束说明」节遗漏,本次补入「varRef的首维大小不超过INT32_MAX。」。 **四、补齐 ScatterMin tiling 的边界用例** 既有 4 条 tiling UT 均为常规规模,未覆盖 INT32_MAX 边界。新增两条:首维 = INT32_MAX 期望接受、= INT32_MAX + 1 期望拒收。 ## 关联的Issue 关联Issue #5270 —— https://gitcode.com/cann/ops-nn/issues/5270 ## 测试 **1. Host UT** bash build.sh -u --ophost --ops=scatter_min --soc=ascend950 ScatterMinTiling 共 9 条用例全部通过(原 4 条 + 本次新增 2 条 + 其余 3 条),含新增的 test_tiling_var_dim0_eq_int32max(期望 GRAPH_SUCCESS)与 test_tiling_var_dim0_over_int32max(期望拒收)。 **2. Ascend 950PR 真机实测(CANN 9.2.0 发布包内置 kernel)** - 非连续输出:为 aclnnGroupNormSiluQuant 与 aclnnGroupNormSilu 构造末维 stride=2 的非连续输出,结果均与全连续基线逐元素一致;并在 storage 空隙中预置哨兵值,跑完检查未被改写,确认是按 stride 散射写入而非连续覆盖。 - 空 Tensor 逐轴:N=0、C=0 被拒收并返回 161002;H=0、W=0 通过,meanOut 填 0、rstdOut 填 NAN。 ## 文档更新 更新了 7 篇资料,均只改与实现不符的字段,不涉及接口与行为变更: - norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu_quant/README.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu/docs/aclnnGroupNormSilu.md(非连续标记 ×3) - index/scatter_min/docs/aclnnScatterMin.md、index/scatter_max/docs/aclnnScatterMax.md、index/scatter_mul/docs/aclnnScatterMul.md、index/scatter_div/docs/aclnnScatterDiv.md(各补 1 条首维约束) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9399 | 9 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
feat(scatter_elements_v2): 新增 WithSorted 确定性 add 优化路径 Co-authored-by: zoujiamin<zoujiamin1@huawei.com> # message auto-generated for no-merge-commit merge: !8908 merge master into master feat(scatter_elements_v2): 新增 WithSorted 确定性 add 优化路径 Created-by: zoujiamin123 Commit-by: zoujiamin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->950上scatter_elements_v2算子新增确定性排序模板,性能优化。具体方法: 确定性模式下新增全局排序模板(KernelScatterElementsWithSorted, tilingKey 前缀 2xxxxxx): 收集全部 linear_index → radix sort 使同目标地址连续 → 段首线程单写者归约, add 固定求和顺序、none 最后写者赢,确定性不再依赖分核策略。 - host: dtype 资格 + IsSortTemplateAdmitted 四条件准入,独立 sortTiling 承载切核, workspace 128B 对齐布局,原确定性模板路径数值零变化 - kernel: 三段式 SIMT/SIMD 实现,FP/窄整型累加升精度,支持 8 维输入 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->https://gitcode.com/cann/ops-nn/issues/5228 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->xrun及ttk测试用例通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8908 | 9 天前 | |
fix(arch35): scatter 类补 AutoContiguous;LambApplyOptimizerAssign infershape 与 tiling 对齐;foreach inplace 与 ScatterList 资料订正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8767 merge fix/scatter-noncontig-and-lamb-infershape into master fix(arch35): scatter 类补 AutoContiguous;LambApplyOptimizerAssign infershape 与 tiling 对齐;foreach inplace 与 ScatterList 资料订正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 长尾算子问题优化:scatter 类补 AutoContiguous;LambApplyOptimizerAssign infershape 与 tiling 对齐;foreach inplace 与 ScatterList 资料订正 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4865 ## 测试 不涉及 ## 文档更新 README ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8767 | 20 天前 | |
docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9399 merge fix/aclnn-doc-support-scope into master docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 三类「资料与实现不符」的订正,来源于测试反馈的资料核对。**不改动任何算子实现**,唯一的非文档改动是补了 2 条 tiling 边界 UT。 **一、GroupNormSiluQuant / GroupNormSilu:输出 Tensor 的「非连续Tensor」列标注与实现不符** aclnnGroupNormSiluQuant 的 out / meanOut / rstdOut 三行在 docs 中标 -(未标注)、在 README 中标 x(不支持);aclnnGroupNormSilu 的同三行标 x。而三者的 op_api 实现中每个输出均经 l0op::ViewCopy 写回(空 Tensor 分支的 FillScalar 同样经 ViewCopy),即支持非连续输出。三处统一改为 √。 **二、GroupNormSiluQuant:空 Tensor 支持范围声明过宽** docs 与 README 原文为「支持空Tensor(任意维度为0)」。实现自首版 5d36b373b 起,CheckAttr 即拒收 N(第 0 维)或 C(第 1 维)为 0 的输入并返回 161002。表述收窄为「支持空Tensor:N(第0维)与C(第1维)需大于0,其余维度可为0」,填充行为(out 为空、meanOut 填 0、rstdOut 填 NAN)与原描述一致,保留不变。 **三、ScatterMin / ScatterMax / ScatterMul / ScatterDiv:aclnn 资料缺少 varRef 首维上限约束** 四个算子共用 scatter_reduce_common tiling,其中 varFirstDim > INT32_MAX 即拒收——并行归并排序以 INT32_MAX 作为补齐哨兵,首维再大将使合法索引与哨兵不可区分。该约束已在四个算子的 README「约束说明」中声明(2e6678836,与实现同笔提交),但四篇 aclnn 资料的「约束说明」节遗漏,本次补入「varRef的首维大小不超过INT32_MAX。」。 **四、补齐 ScatterMin tiling 的边界用例** 既有 4 条 tiling UT 均为常规规模,未覆盖 INT32_MAX 边界。新增两条:首维 = INT32_MAX 期望接受、= INT32_MAX + 1 期望拒收。 ## 关联的Issue 关联Issue #5270 —— https://gitcode.com/cann/ops-nn/issues/5270 ## 测试 **1. Host UT** bash build.sh -u --ophost --ops=scatter_min --soc=ascend950 ScatterMinTiling 共 9 条用例全部通过(原 4 条 + 本次新增 2 条 + 其余 3 条),含新增的 test_tiling_var_dim0_eq_int32max(期望 GRAPH_SUCCESS)与 test_tiling_var_dim0_over_int32max(期望拒收)。 **2. Ascend 950PR 真机实测(CANN 9.2.0 发布包内置 kernel)** - 非连续输出:为 aclnnGroupNormSiluQuant 与 aclnnGroupNormSilu 构造末维 stride=2 的非连续输出,结果均与全连续基线逐元素一致;并在 storage 空隙中预置哨兵值,跑完检查未被改写,确认是按 stride 散射写入而非连续覆盖。 - 空 Tensor 逐轴:N=0、C=0 被拒收并返回 161002;H=0、W=0 通过,meanOut 填 0、rstdOut 填 NAN。 ## 文档更新 更新了 7 篇资料,均只改与实现不符的字段,不涉及接口与行为变更: - norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu_quant/README.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu/docs/aclnnGroupNormSilu.md(非连续标记 ×3) - index/scatter_min/docs/aclnnScatterMin.md、index/scatter_max/docs/aclnnScatterMax.md、index/scatter_mul/docs/aclnnScatterMul.md、index/scatter_div/docs/aclnnScatterDiv.md(各补 1 条首维约束) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9399 | 9 天前 | |
docs: 更新16个算子README,新增支持Atlas A2/A3系列产品 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8571 merge doc into master docs: 更新16个算子README,新增支持Atlas A2/A3系列产品 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 更新16个算子README,新增支持Atlas A2/A3系列产品 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4785 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8571 | 24 天前 | |
docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9399 merge fix/aclnn-doc-support-scope into master docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 三类「资料与实现不符」的订正,来源于测试反馈的资料核对。**不改动任何算子实现**,唯一的非文档改动是补了 2 条 tiling 边界 UT。 **一、GroupNormSiluQuant / GroupNormSilu:输出 Tensor 的「非连续Tensor」列标注与实现不符** aclnnGroupNormSiluQuant 的 out / meanOut / rstdOut 三行在 docs 中标 -(未标注)、在 README 中标 x(不支持);aclnnGroupNormSilu 的同三行标 x。而三者的 op_api 实现中每个输出均经 l0op::ViewCopy 写回(空 Tensor 分支的 FillScalar 同样经 ViewCopy),即支持非连续输出。三处统一改为 √。 **二、GroupNormSiluQuant:空 Tensor 支持范围声明过宽** docs 与 README 原文为「支持空Tensor(任意维度为0)」。实现自首版 5d36b373b 起,CheckAttr 即拒收 N(第 0 维)或 C(第 1 维)为 0 的输入并返回 161002。表述收窄为「支持空Tensor:N(第0维)与C(第1维)需大于0,其余维度可为0」,填充行为(out 为空、meanOut 填 0、rstdOut 填 NAN)与原描述一致,保留不变。 **三、ScatterMin / ScatterMax / ScatterMul / ScatterDiv:aclnn 资料缺少 varRef 首维上限约束** 四个算子共用 scatter_reduce_common tiling,其中 varFirstDim > INT32_MAX 即拒收——并行归并排序以 INT32_MAX 作为补齐哨兵,首维再大将使合法索引与哨兵不可区分。该约束已在四个算子的 README「约束说明」中声明(2e6678836,与实现同笔提交),但四篇 aclnn 资料的「约束说明」节遗漏,本次补入「varRef的首维大小不超过INT32_MAX。」。 **四、补齐 ScatterMin tiling 的边界用例** 既有 4 条 tiling UT 均为常规规模,未覆盖 INT32_MAX 边界。新增两条:首维 = INT32_MAX 期望接受、= INT32_MAX + 1 期望拒收。 ## 关联的Issue 关联Issue #5270 —— https://gitcode.com/cann/ops-nn/issues/5270 ## 测试 **1. Host UT** bash build.sh -u --ophost --ops=scatter_min --soc=ascend950 ScatterMinTiling 共 9 条用例全部通过(原 4 条 + 本次新增 2 条 + 其余 3 条),含新增的 test_tiling_var_dim0_eq_int32max(期望 GRAPH_SUCCESS)与 test_tiling_var_dim0_over_int32max(期望拒收)。 **2. Ascend 950PR 真机实测(CANN 9.2.0 发布包内置 kernel)** - 非连续输出:为 aclnnGroupNormSiluQuant 与 aclnnGroupNormSilu 构造末维 stride=2 的非连续输出,结果均与全连续基线逐元素一致;并在 storage 空隙中预置哨兵值,跑完检查未被改写,确认是按 stride 散射写入而非连续覆盖。 - 空 Tensor 逐轴:N=0、C=0 被拒收并返回 161002;H=0、W=0 通过,meanOut 填 0、rstdOut 填 NAN。 ## 文档更新 更新了 7 篇资料,均只改与实现不符的字段,不涉及接口与行为变更: - norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu_quant/README.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu/docs/aclnnGroupNormSilu.md(非连续标记 ×3) - index/scatter_min/docs/aclnnScatterMin.md、index/scatter_max/docs/aclnnScatterMax.md、index/scatter_mul/docs/aclnnScatterMul.md、index/scatter_div/docs/aclnnScatterDiv.md(各补 1 条首维约束) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9399 | 9 天前 | |
docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9399 merge fix/aclnn-doc-support-scope into master docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 三类「资料与实现不符」的订正,来源于测试反馈的资料核对。**不改动任何算子实现**,唯一的非文档改动是补了 2 条 tiling 边界 UT。 **一、GroupNormSiluQuant / GroupNormSilu:输出 Tensor 的「非连续Tensor」列标注与实现不符** aclnnGroupNormSiluQuant 的 out / meanOut / rstdOut 三行在 docs 中标 -(未标注)、在 README 中标 x(不支持);aclnnGroupNormSilu 的同三行标 x。而三者的 op_api 实现中每个输出均经 l0op::ViewCopy 写回(空 Tensor 分支的 FillScalar 同样经 ViewCopy),即支持非连续输出。三处统一改为 √。 **二、GroupNormSiluQuant:空 Tensor 支持范围声明过宽** docs 与 README 原文为「支持空Tensor(任意维度为0)」。实现自首版 5d36b373b 起,CheckAttr 即拒收 N(第 0 维)或 C(第 1 维)为 0 的输入并返回 161002。表述收窄为「支持空Tensor:N(第0维)与C(第1维)需大于0,其余维度可为0」,填充行为(out 为空、meanOut 填 0、rstdOut 填 NAN)与原描述一致,保留不变。 **三、ScatterMin / ScatterMax / ScatterMul / ScatterDiv:aclnn 资料缺少 varRef 首维上限约束** 四个算子共用 scatter_reduce_common tiling,其中 varFirstDim > INT32_MAX 即拒收——并行归并排序以 INT32_MAX 作为补齐哨兵,首维再大将使合法索引与哨兵不可区分。该约束已在四个算子的 README「约束说明」中声明(2e6678836,与实现同笔提交),但四篇 aclnn 资料的「约束说明」节遗漏,本次补入「varRef的首维大小不超过INT32_MAX。」。 **四、补齐 ScatterMin tiling 的边界用例** 既有 4 条 tiling UT 均为常规规模,未覆盖 INT32_MAX 边界。新增两条:首维 = INT32_MAX 期望接受、= INT32_MAX + 1 期望拒收。 ## 关联的Issue 关联Issue #5270 —— https://gitcode.com/cann/ops-nn/issues/5270 ## 测试 **1. Host UT** bash build.sh -u --ophost --ops=scatter_min --soc=ascend950 ScatterMinTiling 共 9 条用例全部通过(原 4 条 + 本次新增 2 条 + 其余 3 条),含新增的 test_tiling_var_dim0_eq_int32max(期望 GRAPH_SUCCESS)与 test_tiling_var_dim0_over_int32max(期望拒收)。 **2. Ascend 950PR 真机实测(CANN 9.2.0 发布包内置 kernel)** - 非连续输出:为 aclnnGroupNormSiluQuant 与 aclnnGroupNormSilu 构造末维 stride=2 的非连续输出,结果均与全连续基线逐元素一致;并在 storage 空隙中预置哨兵值,跑完检查未被改写,确认是按 stride 散射写入而非连续覆盖。 - 空 Tensor 逐轴:N=0、C=0 被拒收并返回 161002;H=0、W=0 通过,meanOut 填 0、rstdOut 填 NAN。 ## 文档更新 更新了 7 篇资料,均只改与实现不符的字段,不涉及接口与行为变更: - norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu_quant/README.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu/docs/aclnnGroupNormSilu.md(非连续标记 ×3) - index/scatter_min/docs/aclnnScatterMin.md、index/scatter_max/docs/aclnnScatterMax.md、index/scatter_mul/docs/aclnnScatterMul.md、index/scatter_div/docs/aclnnScatterDiv.md(各补 1 条首维约束) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9399 | 9 天前 | |
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 | 7 天前 | |
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 | 11 天前 | |
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 | 11 天前 | |
新增算子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 个月前 | |
docs: 更新16个算子README,新增支持Atlas A2/A3系列产品 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8571 merge doc into master docs: 更新16个算子README,新增支持Atlas A2/A3系列产品 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 更新16个算子README,新增支持Atlas A2/A3系列产品 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4785 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8571 | 24 天前 | |
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 | 7 天前 | |
增加ScatterNonAliasingAdd算子indices维度相关约束 Co-authored-by: surezz<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !8885 merge scatter_modify_constrain into master 增加ScatterNonAliasingAdd算子indices维度相关约束 Created-by: surezz Commit-by: surezz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 增加ScatterNonAliasingAdd算子indices维度相关约束 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5131 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟、二级 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更改了ScatterNonAliasingAdd算子README.md文件中对indices的相关约束 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8885 | 13 天前 | |
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 | 11 天前 | |
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 | 9 天前 | |
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 | 7 天前 | |
算子日志可读性与代码规范性的优化 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 | 9 天前 | |
贡献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 | 19 天前 | |
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 | 19 天前 | |
SparseFillEmptyRows RT2 infershape 迁移 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !8003 merge sparse_fill_empty_rows_rt2_infershape into master SparseFillEmptyRows RT2 infershape 迁移 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ### 修改内容 - 新增 SparseFillEmptyRows RT2 InferShapeRange。 - 输出 shape range 语义对齐 canndev RT2 实现。 - 增加 op_host infershape UT 覆盖 dense_shape 常量输入场景。 ### 依据 - canndev: ops/built-in/op_proto/runtime/sparse_fill_empty_rows_infer.cc ### 验证 - git diff --check - bash build.sh -u --ophost --ops=sparse_fill_empty_rows --noexec -j8 - pre-commit 已在提交时通过 See merge request: cann/ops-nn!8003 | 11 天前 | |
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 | 11 天前 | |
修复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 | 11 天前 | |
docs(index): fix SparseSegmentSum README Co-authored-by: jialimin1<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !8950 merge fix/sparse-segment-sum-readme into master docs(index): fix SparseSegmentSum README Created-by: jialimin1 Commit-by: jialimin1 Merged-by: cann-robot Description: ## 描述 修正 SparseSegmentSum 算子 README 中的产品支持范围和数据类型名称,使文档与实际支持能力及算子文档规范保持一致: 1. 将 Atlas A3、Atlas A2、Atlas 推理系列和 Atlas 训练系列产品的支持状态由“不支持”更正为“支持”。 2. 移除参数数据类型名称中的 DT_ 前缀,统一使用 INT8、INT32、FLOAT16 等标准文档格式。 ## 关联的Issue 关联Issue #4935 ## 测试 本次为纯文档变更,建议执行以下静态检查: 1. 检查产品支持表在 Markdown 渲染后列对齐、支持标记及产品名称显示正常。 2. 核对 x、indices、segment_ids 和 y 的数据类型名称均已移除 DT_ 前缀。 3. 对照算子实现或产品支持清单,确认更新后的支持范围准确。 4. 运行仓库已有的 Markdown 或文档格式检查(如有)。 > 未执行算子功能测试;本次修改不涉及算子实现代码。 ## 文档更新 更新 index/sparse_segment_sum/README.md: - 修正 4 类 Atlas 产品的支持状态。 - 规范 4 个输入/输出参数的数据类型名称。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8950 | 18 天前 | |
修改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 | 17 天前 | |
针对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 | 10 天前 | |
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 | 11 天前 | |
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 | 13 天前 | |
修改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 | 7 天前 | |
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 | 10 天前 | |
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 | 10 天前 | |
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 | 11 天前 | |
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: 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 | 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 | 14 天前 | |
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 | 6 天前 | |
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 | 9 天前 | |
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 | 9 天前 | |
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 | 9 天前 | |
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 | 9 天前 | |
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 | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 天前 | ||
| 7 天前 | ||
| 6 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 7 天前 | ||
| 14 天前 | ||
| 7 天前 | ||
| 11 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 10 天前 | ||
| 6 天前 | ||
| 7 天前 | ||
| 9 天前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 11 天前 | ||
| 14 天前 | ||
| 11 天前 | ||
| 7 天前 | ||
| 2 个月前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 1 个月前 | ||
| 7 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 11 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 24 天前 | ||
| 9 天前 | ||
| 19 天前 | ||
| 10 天前 | ||
| 7 天前 | ||
| 10 天前 | ||
| 10 天前 | ||
| 2 个月前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 7 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 20 天前 | ||
| 9 天前 | ||
| 24 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 24 天前 | ||
| 7 天前 | ||
| 13 天前 | ||
| 11 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 9 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 18 天前 | ||
| 17 天前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 13 天前 | ||
| 7 天前 | ||
| 10 天前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 2 个月前 | ||
| 21 天前 | ||
| 14 天前 | ||
| 6 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 8 个月前 |