| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 17 天前 | |
refactor(apply_top_k_top_p_with_sorted): reduce duplicate code Co-authored-by: yangziqi_007<yangziqi4@huawei.com> # message auto-generated for no-merge-commit merge: !9916 merge cleancode into master refactor(apply_top_k_top_p_with_sorted): reduce duplicate code Created-by: yangziqi_007 Commit-by: yangziqi_007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> apply_top_k_top_p_with_sorted降低重复代码 cleancode ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> atk验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: cleancode ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9916 | 12 天前 | |
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 | 18 天前 | |
fix(BroadcastGradientArgs):ParseParamsByOperatorFn back to ParseParamsFn Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9862 merge tf-back into master fix(BroadcastGradientArgs):ParseParamsByOperatorFn back to ParseParamsFn Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 BroadcastGradientArgs 使用ParseParamsByOperatorFn 导致 ParseGraph失败,回退到ParseParamsFn <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9862 | 15 天前 | |
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 | 19 天前 | |
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 | 26 天前 | |
算子中存在使用内部的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 | 19 天前 | |
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 | 23 天前 | |
feat: Embedding算子新增SIMD模板支持pice through场景(连续二维+非连续场景) Co-authored-by: Apricityh<wangxu359@huawei.com> # message auto-generated for no-merge-commit merge: !8200 merge feat/embedding-simd-template-clean into master feat: Embedding算子新增SIMD模板支持pice through场景(连续二维+非连续场景) Created-by: Apricityh Commit-by: Apricityh Merged-by: cann-robot Description: ## 描述 Embedding算子新增SIMD模板支持pice through场景(连续二维+非连续场景) ## 关联的Issue 关联Issue #5027 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 白盒用例、端对端通路验证:包括geir通路、aclnn、aclgraph通路 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8200 | 16 天前 | |
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 | 19 天前 | |
fix asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 16 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
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 | 22 天前 | |
gather_elements算子tik转ascendc实现 Co-authored-by: xiu_ling_wang<wangxiuling2@h-partners.com> # message auto-generated for no-merge-commit merge: !9921 merge gather_elements into master gather_elements算子tik转ascendc实现 Created-by: xiu_ling_wang Commit-by: xiu_ling_wang Merged-by: cann-robot Description: ## 描述 gather_elements算子tik转ascendc实现,并将符合gather elements v2场景路由到v2实现。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5468 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9921 | 12 天前 | |
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 | 19 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
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 个月前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
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 | 26 天前 | |
fix asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 16 天前 | |
docs: 修正 IndexFill 文档参数命名及示例代码错误,修复 avg_pool 类型安全与清理无用头文件 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !9841 merge dev_zl_2026_0806 into master docs: 修正 IndexFill 文档参数命名及示例代码错误,修复 avg_pool 类型安全与清理无用头文件 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 indexfill文档修改&avg_pool cleancode问题解决 ### 文档修正 - 统一 aclnnInplaceIndexFillGetWorkspaceSize 文档中参数命名:selfRef → self,与函数原型中的实际参数名一致 - 修正中英文混排空格(如 value = 0时 → value = 0 时、所需workspace大小 → 所需 workspace 大小) - 修正示例代码中 indexHostData 的数据类型:std::vector<int> → std::vector<int64_t>,与 API 参数 aclDataType::ACL_INT64 保持一致 - 修正 aclnnInplaceIndexFill 示例代码中的函数名:aclnnIndexFillTensor → aclnnInplaceIndexFill - 修正 aclnnInplaceIndexFill 示例代码日志中的 API 名称:"aclnnIndexFillGetWorkspaceSize failed" → "aclnnInplaceIndexFillGetWorkspaceSize failed" ### 代码修正 - **平均池化 infershape**:GetDimInFormat 函数中 formatStr.find() 返回 std::string::size_type,直接赋值给 int64_t 存在缩窄转换。改为先通过 pos == std::string::npos 判后再明确给 dimPosition 赋值 -1 - **平均池化 tiling**:删除未使用的 #include <array> ## 关联的Issue - #5557 ## 测试 文档类变更,不涉及功能逻辑;avg_pool 修改为类型安全修正,已有编译与测试用例覆盖。 ## 文档更新 - index/index_fill_d/docs/aclnnIndexFill&aclnnInplaceIndexFill.md - pooling/avg_pool/op_host/avg_pool_infershape_common.h - pooling/avg_pool/op_host/avg_pool_tiling_common.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:代码清理与类型安全修正 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9841 | 12 天前 | |
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 个月前 | |
修改aclnnIndexPutImpl文档已知问题 Co-authored-by: surezz<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9953 merge aclnnIndexPutImpl_md_modify into master 修改aclnnIndexPutImpl文档已知问题 Created-by: surezz Commit-by: surezz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改aclnnIndexPutImpl文档已知问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5617 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnIndexPutImpl.md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9953 | 12 天前 | |
算子日志可读性与代码规范性的优化 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 | 21 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 18 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 18 天前 | |
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 | 19 天前 | |
fix asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 16 天前 | |
inplace_index_add_with_sorted将golden规范化 Co-authored-by: liaohuming<liaohuming@huawei.com> # message auto-generated for no-merge-commit merge: !9902 merge master into master inplace_index_add_with_sorted将golden规范化 Created-by: liaohuming Commit-by: liaohuming Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5588 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9902 | 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 | 23 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 17 天前 | |
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 | 24 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 17 天前 | |
算子日志可读性与代码规范性的优化 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9376 merge fix_nn_log into master 算子日志可读性与代码规范性的优化 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 批量修正日志/报错信息中的英文拼写错误与语法问题,并补充更明确的参数越界诊断信息,同时修正示例测试程序中的日志级别与代码格式问题。改动不涉及业务逻辑与算法流程变化,均为日志可读性与代码规范性的优化。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5291 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:算子日志可读性与代码规范性的优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9376 | 21 天前 | |
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 | 1 个月前 | |
针对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 | 22 天前 | |
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 | 19 天前 | |
fix: 修复文件重名问题 Co-authored-by: duxinlei<duxinlei@h-partners.com> # message auto-generated for no-merge-commit merge: !9675 merge checkRepeat2 into master fix: 修复文件重名问题 Created-by: duxinlei Commit-by: duxinlei Merged-by: cann-robot Description: ## 描述 解决单仓内和多仓间文件名重复问题, 1、对于将公共文件引入单算子目录的重命名问题,改引用公共目录下的文件 2、对于单纯重名问题,重命名 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联issue #5460 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9675 | 16 天前 | |
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 | 22 天前 | |
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 | 22 天前 | |
fix(assets,index,loss): ScatterList 资料/校验、loss 检视整改、TTK spec 适配、tf 三方腿与三方精度修正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9870 merge fix/ttk-golden-tf-third-party into master fix(assets,index,loss): ScatterList 资料/校验、loss 检视整改、TTK spec 适配、tf 三方腿与三方精度修正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ## 描述 补齐foreach类、scatter类及lamb类算子的tf等通路三方 ## 关联的Issue NA ## 测试 st ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9870 | 12 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 18 天前 | |
feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9685 merge tf-plugin-part2 into master feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 为 TensorFlow(TF)算子插件迁移的第二批(分支 tf-plugin-part2),新增 21 个 *_tf_plugin.cpp 插件注册文件,覆盖 common、conv、matmul、pooling、optim、norm、index、vfusion 模块。每个文件通过 REGISTER_CUSTOM_OP 将 TF 框架算子注册为自定义算子: - .FrameworkType(TENSORFLOW):声明算子来源于 TF 框架; - .OriginOpType(...):映射原始 TF 算子类型(含 Resource* 变体,如 ApplyAddSign / ResourceApplyAddSign); - 参数解析:多数算子通过 AutoMappingByOpFn 自动映射属性;Conv2D 额外将 filter format 固定为 HWCN,并根据 explicit_paddings 与输入 format(NCHW/NHWC)生成 pads 属性;Conv2DBackpropInput / Conv2DBackpropFilter / Conv3DBackpropFilter / Conv3DBackpropInput / AvgPool3D 等设置 NDHWC/NCDHW/DHWCN 等 format 与 pads 默认值;BatchMatMulV2 将 adj_x / adj_y 映射为 adj_x1 / adj_x2,并对 BatchMatMulV3 提供 ParseOpToGraphFn 将算子展开为 Data -> BatchMatMulV3 -> Cast 子图;InstanceNormGrad 提供 FusionParseParamsFn 融合参数解析接口; - .ImplyType(ImplyType::TVM):所有注册算子采用 TVM 实现。 ### 新增算子清单(21 个文件) | 文件 | 注册算子(OriginOpType) | |------|-------------------------| | common/src/framework/apply_add_sign_tf_plugin.cpp | ApplyAddSign(ApplyAddSign / ResourceApplyAddSign) | | common/src/framework/basic_lstm_cell_tf_plugin.cpp | BasicLSTMCell | | common/src/framework/basic_lstm_cell_grad_tf_plugin.cpp | BasicLSTMCellCStateGrad / BasicLSTMCellWeightGrad / BasicLSTMCellInputGrad | | common/src/framework/dynamic_lstm_tf_plugin.cpp | DynamicLSTM | | conv/conv2d_v2/framework/conv2d_tf_plugin.cpp | Conv2D | | conv/conv3d_v2/framework/conv3d_tf_plugin.cpp | Conv3D | | conv/conv3d_backprop_filter_v2/framework/conv2d_backprop_filter_tf_plugin.cpp | Conv2DBackpropFilter | | conv/conv3d_backprop_filter_v2/framework/conv3d_backprop_filter_tf_plugin.cpp | Conv3DBackpropFilter(Conv3DBackpropFilterV2) | | conv/conv3d_backprop_input_v2/framework/conv2d_backprop_input_tf_plugin.cpp | Conv2DBackpropInput | | conv/conv3d_backprop_input_v2/framework/conv3d_backprop_input_tf_plugin.cpp | Conv3DBackpropInput(Conv3DBackpropInputV2) | | index/non_zero_with_value_shape_v2/framework/non_zero_with_value_shape_v2_tf_plugin.cpp | NonZeroWithValueShapeV2 | | matmul/mat_mul_v3/framework/matmul_tf_plugin.cpp | MatMulV2(MatMul) | | matmul/batch_mat_mul_v3/framework/batch_matmul_tf_plugin.cpp | BatchMatMulV2(BatchMatMul / BatchMatMulV2 / BatchMatMulV3) | | norm/instance_norm_grad/framework/instance_norm_grad_tf_plugin.cpp | InstanceNormGrad | | optim/inplace_apply_adagrad_da/framework/apply_adagrad_da_tf_plugin.cpp | ApplyAdagradDA(ApplyAdagradDA / ResourceApplyAdagradDA) | | optim/inplace_apply_adagrad_v2/framework/apply_adagradv2_tf_plugin.cpp | ApplyAdagradV2(ApplyAdagradV2 / ResourceApplyAdagradV2) | | optim/inplace_apply_power_sign/framework/apply_power_sign_tf_plugin.cpp | ApplyPowerSign(ApplyPowerSign / ResourceApplyPowerSign) | | pooling/avg_pool3_d/framework/avg_pool3d_tf_plugin.cpp | AvgPool3D | | pooling/dilation2_d/framework/dilation2d_tf_plugin.cpp | Dilation2D | | pooling/max_pool_3d_grad_grad/framework/max_pool3d_grad_grad_tf_plugin.cpp | MaxPool3DGradGrad | | vfusion/normalize_bbox/framework/normalize_bbox_tf_plugin.cpp | NormalizeBBox | ### 改动原因 TF 算子插件迁移系列工作的第二批:将 TF 算子按模块拆分为独立的 */framework/*_tf_plugin.cpp 注册文件,统一注册方式与代码组织。 ## 关联的Issue - #5464 ## 测试 本次变更仅新增插件注册文件,未包含测试用例变更。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9685 | 16 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
算子日志可读性与代码规范性的优化 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 | 21 天前 | |
算子中存在使用内部的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 | 19 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
gather_v2、scatter、scatter_update、scatter_nd_update算子支持PCIE through特性 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !8407 merge dev_zl_2026_0806 into master gather_v2、scatter、scatter_update、scatter_nd_update算子支持PCIE through特性 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 gather_v2、scatter、scatter_update、scatter_nd_update算子支持PCIE through特性 ## 关联的Issue 关联Issue #5449 ## 测试 白盒用例、端对端通路验证:包括geir通路、aclnn、aclgraph通路 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8407 | 16 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 16 天前 | |
新增算子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 个月前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 11 天前 | |
算子日志可读性与代码规范性的优化 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 | 21 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 17 天前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 11 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 17 天前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 11 天前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 11 天前 | |
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 | 19 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 23 天前 | |
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 | 23 天前 | |
新增算子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 个月前 | |
补充ScatterNdSub算子InferDataType推导 Co-authored-by: guankarl<guanhongwei3@huawei.com> # message auto-generated for no-merge-commit merge: !9478 merge fix_scatter_nd_sub_inferdtype into master 补充ScatterNdSub算子InferDataType推导 Created-by: guankarl Commit-by: guankarl Merged-by: cann-robot Description: ## 描述 ScatterNdSub算子补充InferDataType推导:op_host/scatter_nd_sub_infershape.cpp 原先仅注册 InferShape,缺少 InferDataType 注册,补充输出 dtype 推导(输出 dtype = 输入 var dtype)并挂接到 IMPL_OP_INFERSHAPE 注册链。 ## 关联的issue https://gitcode.com/cann/ops-nn/issues/5465 ## 测试 - 已通过 ophost 编译验证(ascend950,build.sh --ops=scatter_nd_sub) ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent 生成声明 代码来源: - [ ] 纯人工手写 - [x] AI 辅助编写 - [ ] AI 完全生成 人工审查:已完成 测试验证:已通过 合规检查:已完成 See merge request: cann/ops-nn!9478 | 16 天前 | |
修改scatterNdUpdate 算子确定性场景varIdxGm 未初始化问题 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !9830 merge fix_scat_nd_up into master 修改scatterNdUpdate 算子确定性场景varIdxGm 未初始化问题 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 修复 ScatterNdUpdate 算子在确定性场景下 varIdxGm 未初始化的问题:由于确定性分支的 varIdxGm 在代码中没有显式初始化,非法索引行在 computer 阶段可能读到上一轮残留值导致误写,因此新增 tiling 字段 indicesAxis 并将 varIdxGm 全局内存初始化为 -1。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5564 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟通过,st用例通过,检测异常脚本运行通过,符合预期 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9830 | 12 天前 | |
feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8821 merge InferShape into master feat: 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 18个迁移算子适配unknown shape/rank InferShape并补UT及入口日志 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5250 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Unknown Shape/ Unknown Rank迁移适配 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8821 | 17 天前 | |
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 | 23 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 16 天前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 12 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 18 天前 | |
贡献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 | 1 个月前 | |
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 | 1 个月前 | |
fix(index): validate negative dense rows Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !9621 merge fix/issue-5023-validate-dense-rows into master fix(index): validate negative dense rows Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 在将 dense_shape[0] 用作内部行偏移数组长度前增加合法性校验。当行数为负数时返回 KERNEL_STATUS_PARAM_INVALID,避免负数在 std::vector 分配过程中隐式转换为超大的无符号值。 新增 AICPU Kernel 回归测试,覆盖 dense_shape[0] 为负数的异常输入场景。 ## 关联的Issue Fixes #5023 ## 测试 - bash build.sh --opkernel_aicpu_test --ops=sparse_fill_empty_rows -j8 - 34/34 测试通过。 - /home/developer/.local/bin/pre-commit run --files index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu.cpp index/sparse_fill_empty_rows/tests/ut/op_kernel_aicpu/test_sparse_fill_empty_rows.cpp - 全部检查通过。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9621 | 17 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 16 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 16 天前 | |
ops-nn仓算子添加隔离宏 Co-authored-by: ayuemoon<15802951036@163.com> # message auto-generated for no-merge-commit merge: !9655 merge proto_reg_op_modify into master ops-nn仓算子添加隔离宏 Created-by: ayuemoon Commit-by: ayuemoon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 IndexToAddr、NonZeroWithValueShape、NonZeroWithValueShapeV2、SparseFillEmptyRows、SparseSegmentSum 算子添加隔离宏,防止原型重复定义。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 无 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9655 | 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 | 29 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 16 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 16 天前 | |
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 | 25 天前 | |
修改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 | 19 天前 | |
Fix top_k_top_p_sample docs and example Co-authored-by: licheng261<licheng261@huawei.com> # message auto-generated for no-merge-commit merge: !9906 merge top_k_top_p_sample_doc_0904 into master Fix top_k_top_p_sample docs and example Created-by: licheng261 Commit-by: licheng261 Merged-by: cann-robot Description: ## 描述 修复top_k_top_p_sample文档和示例代码,保持一致 ## 关联的Issue [#5591](https://gitcode.com/cann/ops-nn/issues/5591) ## 测试 ## 文档更新 ops-nn/index/top_k_top_p_sample/docs/aclnnTopKTopPSample.md ops-nn/index/top_k_top_p_sample/examples/test_aclnn_top_k_top_p_sample.cpp ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9906 | 12 天前 | |
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 | 22 天前 | |
fix unique example Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !9775 merge master into master fix unique example Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复Unique example代码错误。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5514 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 运行 bash build.sh --run_example unique_consecutive eager 返回成功。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9775 | 16 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 18 天前 | |
算子插件迁移 Co-authored-by: welt_lester<songlizhe1@h-partners.com> Co-authored-by: x00842564<xuyanke@huawei.com> # message auto-generated for no-merge-commit merge: !8474 merge master into master 算子插件迁移 Created-by: welt_lester Commit-by: x00842564;welt_lester Merged-by: cann-robot Description: ## 描述 落实issue #4279,将adaptive_avg_pool2d、adaptive_max_pool2d、ascend_anti_quant、ascend_dequant、ascend_quant、batch_mat_mul_v3、batch_norm、celu_v2、instance_norm_v3、ascend_quant、log_softmax_v2、mat_mul_v3、unique_with_counts_and_sorting这13个算子对应的插件从common\src\framework迁出到各自算子目录新建的\framework目录下。 ## 关联的Issue [Bug-Report|缺陷反馈]: 有对应算子的插件不应该放到公共目录 [#4279](https://gitcode.com/cann/ops-nn/issues/4279) ## 测试 compile、本地验证build通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(算子插件归属迁移,落实 #4279 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8474 | 1 个月前 | |
docs:修复Unique系列 ACLNN文档中的格式与示例错误 Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !9697 merge master into master docs:修复Unique系列 ACLNN文档中的格式与示例错误 Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 修复Unique系列 ACLNN文档中的格式与示例错误。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5491 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次仅修改 Markdown 文档和文档内示例代码,未执行编译或运行测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - index/unique_consecutive/docs/aclnnUnique.md - index/unique_consecutive/docs/aclnnUnique2.md - index/unique_consecutive/docs/aclnnUniqueConsecutive.md - index/unique_with_counts_ext2/docs/aclnnUniqueDim.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9697 | 17 天前 | |
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 | 18 天前 | |
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 | 21 天前 | |
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 | 21 天前 | |
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 | 21 天前 | |
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 | 21 天前 | |
TF plugin修改1 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !7547 merge nn1 into master TF plugin修改1 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 TF plugin修改 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4196 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7547 | 1 个月前 | |
License Change Split2 Co-authored-by: huohuo_wy<wangyan389@huawei.com> # message auto-generated for no-merge-commit merge: !371 merge spilit2License3 into master License Change Split2 Created-by: huohuo_wangyan Commit-by: huohuo_wy Merged-by: cann-robot Description: ## 描述 批量整改文件copyright注释 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/177 ## 测试 COPYRIGHT注释头按新要求刷新 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!371 | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 17 天前 | ||
| 12 天前 | ||
| 18 天前 | ||
| 15 天前 | ||
| 1 个月前 | ||
| 19 天前 | ||
| 26 天前 | ||
| 19 天前 | ||
| 23 天前 | ||
| 16 天前 | ||
| 19 天前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 22 天前 | ||
| 12 天前 | ||
| 19 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 2 个月前 | ||
| 12 天前 | ||
| 26 天前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 2 个月前 | ||
| 12 天前 | ||
| 21 天前 | ||
| 18 天前 | ||
| 18 天前 | ||
| 19 天前 | ||
| 16 天前 | ||
| 14 天前 | ||
| 23 天前 | ||
| 17 天前 | ||
| 24 天前 | ||
| 17 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 22 天前 | ||
| 19 天前 | ||
| 16 天前 | ||
| 22 天前 | ||
| 2 个月前 | ||
| 22 天前 | ||
| 12 天前 | ||
| 18 天前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 21 天前 | ||
| 19 天前 | ||
| 12 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 21 天前 | ||
| 12 天前 | ||
| 17 天前 | ||
| 11 天前 | ||
| 17 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 19 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 17 天前 | ||
| 23 天前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 18 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 17 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 29 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 25 天前 | ||
| 19 天前 | ||
| 12 天前 | ||
| 22 天前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 1 个月前 | ||
| 17 天前 | ||
| 18 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 9 个月前 |