| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
cleancode Co-authored-by: jisongyuan<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !9185 merge master into master cleancode Created-by: ji-songyuan Commit-by: jisongyuan Merged-by: cann-robot Description: ## 描述 修改optim和loss类算子文件cleancode,为了让代码符合代码质量和规范检查规则。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue #5445 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 设计到的case都已经做了case复跑,case均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9185 | 8 天前 | |
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 | 2 天前 | |
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 | 7 天前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 19 天前 | |
fix: 修复 cosine_embedding_loss 算子在大 shape 下的问题 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9714 merge deliver/cosine-deepnorm-docs into master fix: 修复 cosine_embedding_loss 算子在大 shape 下的问题 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 修复 cosine_embedding_loss 算子在大 shape(大行数 N)下的问题: - 新增输入元素数(x1/x2/target)int64 溢出检查,超出 int64 范围直接拒绝。 - 将 UB tile 行数收敛到上限 COSINE_EMBEDDING_LOSS_MAX_UB_TILE_ROWS(1<<20),避免大行数下 UB tile 越界。 - 新增两条大 N 归约路径:CONST_REDUCTION_PATH(输入为常量时)与 FEATURE_BROADCAST_REDUCTION_PATH(x1/x2 存在独立广播轴时),通过 IsFeatureBroadcastReductionCandidate 判定。 - tiling 数据新增 x1Num/x2Num/targetNum 字段,并同步更新 tiling/kernel 单测。 ## 关联的Issue - #5479 ## 测试 - 更新 tiling 单测:test_cosine_embedding_loss_tiling.cpp - 更新 kernel 单测:test_cosine_embedding_loss.cpp ## 文档更新 无。 ## 类型标签 - [x] Bug修复 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9714 | 7 天前 | |
[BugFix] 修复cross_entropy_loss算子内存越界写问题 Co-authored-by: zhu-lei0614<zhulei113@huawei.com> # message auto-generated for no-merge-commit merge: !9849 merge master into master [BugFix] 修复cross_entropy_loss算子内存越界写问题 Created-by: zhu-lei0614 Commit-by: zhu-lei0614 Merged-by: cann-robot Description: ## 描述 cross_entropy_loss_full_load.h:162中InitBuffer初始化了32B的内存,在895行inputQueue_.AllocTensor出来的有效内存只有32B,但在896行的DataCopyPad一共写入了196B的数据,有160B的越界写入 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5257 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9849 | 1 天前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 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 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 14 天前 | |
cross_entropy_sum_exp_and_index_logit算子代码规范整改 Co-authored-by: jzj007<jiangzhijie9@huawei.com> # message auto-generated for no-merge-commit merge: !8986 merge fix_cn into master cross_entropy_sum_exp_and_index_logit算子代码规范整改 Created-by: jzj007 Commit-by: jzj007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> cross_entropy_sum_exp_and_index_logit算子代码规范整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #4958 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8986 | 15 天前 | |
kernel ut 增加防卡死超时,快速模式,覆盖率控制 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !8187 merge master into master kernel ut 增加防卡死超时,快速模式,覆盖率控制 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 提交总结:kernel ut 增加防卡死超时、快速模式、覆盖率控制 **修改背景**:Kernel UT 存在单测卡死导致整套测试挂起、运行慢(addr2line 符号化耗时)、gcov 覆盖率始终链接带来不必要开销等问题。 **修改方案**: 1. **防卡死超时**:新增 run_kernel_ut.sh,按 case 逐个执行并用 timeout 限时(默认 120s,--ut_timeout 可配),超时即标记失败并继续,避免单点卡死阻塞全流程。 2. **快速模式**:新增 --ut_mode=fast/debug。fast 模式关闭符号化(注入 fake addr2line 跳过慢解析)、改用 -g0 -O2,用于快速验证;debug 模式保留 -g 与符号化,用于开发调试。 3. **覆盖率控制**:将 ut.cmake 中 gcov 的无条件链接改为 $<$<BOOL:${ENABLE_COVERAGE}>:gcov> 条件链接,仅在开启覆盖率时引入; 4. **修复失败的kernel ut**:TensorFlow 依赖替换为md_dtypes, 修复部分block 越界,缺少SetKernelMode 设置导致核获取错误等问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4606 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 通过kernel ut 测试,bash build.sh -u --opkernel --ut_mode=fast --ut_timeout=60 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8187 | 1 个月前 | |
docs_fix Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !9894 merge master into master docs_fix Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 本 PR 对 ctc_loss、l1_loss、fused_adamw、fused_sgd 四个算子的接口文档(.md)进行勘误修复,共涉及 4 个文件,改动量 +15/-16。 主要解决以下文档与实现不一致的问题: - **参数名大小写不一致**:文档中参数名与实际接口签名不符 - **描述对象错误**:文档描述的作用对象与实际接口语义不匹配 - **约束条件过时**:文档约束与当前实现逻辑不符 - **参数命名规范**:文档参数名未遵循 camelCase 规范 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | loss/ctc_loss_v2/docs/aclnnCtcLossV2.md | 多处 | 将 targetLengths 统一改为 targetlengths,与实际 aclIntArray* 参数命名一致,消除大小写歧义 | | 2 | loss/lp_loss/docs/aclnnL1Loss.md | +2/-2 | 修正 target 参数描述:broadcast 关系对象由 gradOutput、target 更正为 self;补充 out 参数说明为"输出 tensor,存放 L1Loss 计算结果",并将"shape 只支持 0 维"规范为"out 为 0 维 tensor" | | 3 | optim/fused_adamw/docs/aclnnFusedAdamw.md | +1/-1 | 修正约束描述:原"数据格式不在支持范围"更正为"数据类型不同",与实际类型校验逻辑一致 | | 4 | optim/fused_sgd/docs/aclnnFusedSgd.md | +1/-2 | 参数名 workspace_size 更正为 workspaceSize,与 aclnnFusedSgd 接口签名一致;删除过时的 gradScale 等于 0 约束说明 | ### 改动原则 - **纯文档修复,不改变任何代码逻辑**:所有改动均为 .md 文件内的文字描述,不涉及 .cpp/.h 源文件 - **对齐实现**:修正后的描述与当前算子实现、接口签名、约束逻辑保持一致 - **聚焦最小改动**:仅修正文档与实现不一致项,不做额外的文档重构 ## 关联的Issue Issue #5554 ## 测试 - 文档改动无需编译/功能测试,通过人工 review 验证描述与代码实现一致 - 改动不影响算子行为,CI 编译与功能测试结果不受影响 ## 文档更新 本 PR 即为文档更新,涉及以下文件: - loss/ctc_loss_v2/docs/aclnnCtcLossV2.md - loss/lp_loss/docs/aclnnL1Loss.md - optim/fused_adamw/docs/aclnnFusedAdamw.md - optim/fused_sgd/docs/aclnnFusedSgd.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9894 | 5 天前 | |
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 | 6 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 | |
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 | 12 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
补齐aclnnKlDivTargetBackward的st用例 Co-authored-by: xiu_ling_wang<wangxiuling2@h-partners.com> # message auto-generated for no-merge-commit merge: !9868 merge st into master 补齐aclnnKlDivTargetBackward的st用例 Created-by: xiu_ling_wang Commit-by: xiu_ling_wang Merged-by: cann-robot Description: ## 描述 补齐aclnnKlDivTargetBackward的st用例。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5563 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9868 | 5 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
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 | 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 | 12 天前 | |
docs_fix Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !9894 merge master into master docs_fix Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 本 PR 对 ctc_loss、l1_loss、fused_adamw、fused_sgd 四个算子的接口文档(.md)进行勘误修复,共涉及 4 个文件,改动量 +15/-16。 主要解决以下文档与实现不一致的问题: - **参数名大小写不一致**:文档中参数名与实际接口签名不符 - **描述对象错误**:文档描述的作用对象与实际接口语义不匹配 - **约束条件过时**:文档约束与当前实现逻辑不符 - **参数命名规范**:文档参数名未遵循 camelCase 规范 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | loss/ctc_loss_v2/docs/aclnnCtcLossV2.md | 多处 | 将 targetLengths 统一改为 targetlengths,与实际 aclIntArray* 参数命名一致,消除大小写歧义 | | 2 | loss/lp_loss/docs/aclnnL1Loss.md | +2/-2 | 修正 target 参数描述:broadcast 关系对象由 gradOutput、target 更正为 self;补充 out 参数说明为"输出 tensor,存放 L1Loss 计算结果",并将"shape 只支持 0 维"规范为"out 为 0 维 tensor" | | 3 | optim/fused_adamw/docs/aclnnFusedAdamw.md | +1/-1 | 修正约束描述:原"数据格式不在支持范围"更正为"数据类型不同",与实际类型校验逻辑一致 | | 4 | optim/fused_sgd/docs/aclnnFusedSgd.md | +1/-2 | 参数名 workspace_size 更正为 workspaceSize,与 aclnnFusedSgd 接口签名一致;删除过时的 gradScale 等于 0 约束说明 | ### 改动原则 - **纯文档修复,不改变任何代码逻辑**:所有改动均为 .md 文件内的文字描述,不涉及 .cpp/.h 源文件 - **对齐实现**:修正后的描述与当前算子实现、接口签名、约束逻辑保持一致 - **聚焦最小改动**:仅修正文档与实现不一致项,不做额外的文档重构 ## 关联的Issue Issue #5554 ## 测试 - 文档改动无需编译/功能测试,通过人工 review 验证描述与代码实现一致 - 改动不影响算子行为,CI 编译与功能测试结果不受影响 ## 文档更新 本 PR 即为文档更新,涉及以下文件: - loss/ctc_loss_v2/docs/aclnnCtcLossV2.md - loss/lp_loss/docs/aclnnL1Loss.md - optim/fused_adamw/docs/aclnnFusedAdamw.md - optim/fused_sgd/docs/aclnnFusedSgd.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9894 | 5 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
docs_fix Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !10019 merge master into master docs_fix Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 本 PR 对 mse_loss_grad、fused_adamw 两个算子的接口文档(.md)进行勘误修复,共涉及 2 个文件,改动量 +3/-8。 主要解决以下文档与实现不一致的问题: - **代码块未闭合**:函数原型代码块缺少结束标记,导致渲染异常 - **错误码表格 rowspan 与实际行数不符**:表格合并单元格数大于实际数据行 - **过时约束说明**:表格中包含与当前实现不符的约束条件 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | loss/mse_loss_grad_v2/docs/aclnnMseLossBackward.md | +1/-0 | aclnnMseLossBackwardGetWorkspaceSize 函数原型代码块末尾补上 `` 结束标记,修复 markdown 渲染时代码块未闭合的问题 | | 2 | optim/fused_adamw/docs/aclnnFusedAdamw.md | +2/-8 | 错误码 ACLNN_ERR_PARAM_INVALID(161002) 表格的 rowspan 由 5 改为 3,与实际约束行数一致;删除两条过时约束说明("amsgrad 为 true 时 maxExpAvgSqsRef 和 paramsRef 的 shape 不一致"、"stateSteps 中每个 Tensor 的元素个数不为 1"),这两条约束已不在当前实现中校验 | ### 改动原则 - **纯文档修复,不改变任何代码逻辑**:所有改动均为 .md 文件内的文字描述,不涉及 .cpp/.h 源文件 - **对齐实现**:修正后的描述与当前算子实现、错误码逻辑、约束校验保持一致 - **聚焦最小改动**:仅修正文档与实现不一致项,不做额外的文档重构 ## 关联的Issue issue #5558 ## 测试 - 文档改动无需编译/功能测试,通过人工 review 验证描述与代码实现一致 - 改动不影响算子行为,CI 编译与功能测试结果不受影响 ## 文档更新 本 PR 即为文档更新,涉及以下文件: - loss/mse_loss_grad_v2/docs/aclnnMseLossBackward.md - optim/fused_adamw/docs/aclnnFusedAdamw.md` ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!10019 | 1 天前 | |
test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9633 merge feat/ttk-golden-third-party into master test(assets): 24 个算子 golden 适配新版 TTK spec 并补齐三方标杆能力 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这批 6 月及之前上库的算子, tests/assets/golden.py 仍是旧版 __golden__ = {"kernel": {...}} 注册,只有 CPU 真值一条腿,没有 third_party 三方标杆、也没有声明精度判据,跑不了 cross_check 三方交叉比对。仓内 hard_sigmoid / hard_swish_grad_v2 / deep_norm 已按新版 __spec__ 格式落地,本次把其余算子对齐。 范围:foreach 11 个 / lamb 7 个 / scatter 5 个 / relu6_grad 1 个,共 24 个。 ### 改动方式 按 ops-test-kit/ttk/test_spec/README.md 的规范,每个算子新增 __spec__ = {"<op_name>": "XxxKernelSpec"} 与对应 Spec 类,声明 golden / third_party / tolerance。**原 __golden__ 与 golden 函数体一律保留不动**,为纯追加,旧机制不受影响。 - **golden**:沿用原有实现。 - **third_party**:新增。foreach 系直接对标 torch._foreach_* 竞品 API;lamb 系无单一对标 API,用 torch 张量运算按同一算子定义拼接;scatter 系用 Tensor.index_reduce;Relu6Grad 原 golden 是纯 numpy 公式,本次补 torch 拼接作三方参照。 - **tolerance**:含算术的按 dtype 声明 cross_check(L1);ScatterMax / ScatterMin / ScatterList 是纯选择/拷贝语义,声明 binary_equal。 - **customize_inputs**:scatter 五算子把原 input.py 的合法索引重采样并入 Spec 字段,input.py 原文件保留,不影响旧机制。 ### 三处三方实现必须跟随算子的内部分支,不能照搬看似对应的 API - **ForeachBinaryOp** 按属性 op_code 分解为 add/sub/mul/div,且整型走独立路径(宽中间量 int64 + 窄化的 2's-complement wrap、整除向零截断、除数为 0 取 0)。三方按 op_code 分派并复刻整型语义。 - **ScatterDiv** 整型走截断除且除数为 0 时保持原值,不能升 fp32 —— 大 int32 经 float32 round-trip 会静默丢精度。整型判定与 golden 同源(_INT_DTYPES = def 注册的 int32/int8/uint8)。 - **Relu6Grad** 不用 aten.hardtanh_backward:它的判据是 (x<=0)|(x>=6) -> 0,NaN 对两个比较都为假于是透传 dy;本算子定义是 (x>0)&(x<6) 取掩码,NaN 落 else 分支得 0。两者只在 NaN 输入上分叉,直接拿它当三方会在 NaN 用例上假红。 ### 参数名与设备安全 三方类的参数名必须用 def 的注册名:TTK 的 __invoke_class 用 op_info["inputs"] 的 name 加 attributes 组 pool,再由 bind_by_name 按名绑定,不做 camelCase 或 _list 归一化,名字对不上直接抛 UnknownParamError。据此把 foreach 11 个的 x_list/x1_list/x2_list/x3_list 改为 def 的 x/x1/x2/x3。 三方实现必须设备安全:三方发到远端 XPU 服务执行,服务端先做 H2D 把 numpy 入参搬成目标设备上的 torch 张量再按名绑定。因此凡对入参调 np.asarray/np.ascontiguousarray 的写法,在 GPU 上会抛 "can't convert cuda tensor to numpy",等于三方腿跑不起来。统一改为:入参已是 torch.Tensor 就原样保留,只有非张量(本地自测)才走 numpy 兜底;dtype 判定用 tensor.dtype。 ### 通路注册 仓内先例(hard_sigmoid / hard_swish_grad_v2 / deep_norm)是「交付了的通路注册 spec、没交付的在文件尾写明」,本次补齐这一层:按 aclnn 头文件签名注册 aclnn spec,加上 kernel 共 39 条 spec;24 个文件尾部统一写明未交付通路(e2e / TensorFlow / ONNX / 融合 pass)及依据。GEIR 复用 kernel spec,无需另注册。 aclnn 通路两条腿的下发方式不同,签名必须分别对齐:golden 由 AclnnParamPlan.build_args 按**头文件形参顺序位置**下发全部形参;third_party 走远端 executor 的 bind_params **按名**绑定,pool 的 key 取自头文件张量形参名。形参名以**头文件**为准而非资料 —— 本机 CANN 内置头与自建 vendor 包生成头两处独立证据都是 def 注册名。golden 输出 dtype 须与算子输出一致,fp16/bf16 提到 fp32 算完必须还原,否则 binary_equal 走 _cross_dtype_compare 直接判「dtype 不可比」。 ## 关联的Issue 关联Issue #5493 ## 测试 - **TTK loader 实测**:39 条 spec 条目(24 kernel + 15 aclnn)全部可发现,golden / third_party / tolerance 三件齐全。 - **设备安全实测**:把 np.asarray/ascontiguousarray/array 打补丁成「收到 torch.Tensor 即抛错」(等价于 CUDA 张量的行为),再用全 torch 张量入参跑三方,24/24 通过且输出全为 torch 张量;numpy 入参这条本地自测路径同步复验,golden 与三方仍一致。 - **参数绑定实测**:用 TTK 自己的 bind_by_name 按 def 注册名组 pool,24/24 绑定成功并跑出结果。 - **旧机制回归**:用 CustomPluginManager.load_if_available 实测,旧 __golden__ 24/24 加载成功、旧 __input__ 5/5 加载成功,新旧两套注册并存不冲突。 - **真机抽检(Ascend950PR)**:kernel 通路逐算子抽检实跑。ScatterList 从 569 例全集等距抽 300 例,--compare close 实跑 300/300 PASS。 - ruff check / ruff format 全通过;仓内 scripts/oat_check.sh All checks passed。 ### 未覆盖 三方腿的实际比对需要 NPU + GPU 环境跑 TTK cross_check,本次仅做到 spec 可加载、golden 与 third_party 可调用且数值一致这一层,未做三方腿真机跑批。注意 TTK 在 third_party 输出缺失时不降级(ttk/core_modules/comparison/cross_check.py 直接返回 GOLDEN_FAILURE),故 GPU 侧不可达时,声明 cross_check 的算子需用 --compare 覆盖判据或待环境恢复后再跑。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试资产(golden)能力补齐 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9633 | 7 天前 | |
fix(loss): 修复 MSELossV2/PoissonNllLoss/MultilabelMarginLoss 跨核合并 inf 变 nan 与 partial 缓冲区越界 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9662 merge fix/kahan-nonfinite-guard into master fix(loss): 修复 MSELossV2/PoissonNllLoss/MultilabelMarginLoss 跨核合并 inf 变 nan 与 partial 缓冲区越界 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 MSELossV2 / PoissonNllLoss / MultilabelMarginLoss 在 reduction=sum/mean 的跨核合并段存在两个缺陷。 ### 缺陷一:输入含 inf 时期望 inf、实得 nan 单核不复现、多核必现,阈值就是核数 1→2。根因是跨核合并对各核 partial 用**标量** Kahan 补偿累加: y = p - comp; t = total + y; comp = (t - total) - y; total = t; p 为 ±inf 时 comp = inf - inf = NaN,total 本身还是 inf 但补偿项已被污染;下一个分片 y = p - NaN = NaN,total 随之变 NaN。单核时循环只跑一次,comp 污染后不再被使用,因此不暴露。 ### 缺陷二:单核/小核数下偶发结果错误(约 1/12) 跨核合并一次读满 VL(64) 条车道、收尾标量循环也按 stride 读满 VL/WS_CORE_STRIDE 条车道,而 DataCopyPad 只搬入 usedCoreNum 个槽 —— 多出来的车道读到的是 **UB 残留值**。残留通常为 0 所以大多数时候看不出来,一旦残留含 ±inf/NaN,inf + (-inf) = NaN 就现形;核数越少无效车道越多,单核最容易撞上。 MultilabelMarginLoss 更严重:partials 缓冲区只按 usedCoreNum*wsCoreStride 分配(4 核时仅 32 float),矢量读满 64 车道**直接越过张量边界**。 ### 修法 1. **跨核合并改为 regbase 矢量形态的 Kahan**。补偿量用自比 Compare<float, CMPMODE::EQ>(mask, c, c) 找出非 NaN 车道,Select 把 NaN 车道的补偿量清零。**只清补偿量、不动 sum**,因此 - 单侧 inf / 一侧 +inf 一侧 -inf → 和保持 inf(与 torch/numpy 一致) - 同位双 inf(inf-inf) 或输入含 nan → 仍然是 nan(真 nan 不被吞掉) 同款写法见 norm/instance_norm_grad 的跨 N 合并。不用树形规约:树形没有补偿项,合并 64 个 partial 的误差 ~log2(64)*eps,比 Kahan 的 ~2*eps 差(离线配对复刻:4M 用例 1.2 ulp vs 0.8 ulp)。收尾的车道间合并也必须带补偿——试过丢弃车道补偿量或改无补偿树形,同一批 partial 的配对比较里 3/6 例精度变差。 2. **partial 缓冲区尺寸由 host tiling 按真实核数算好下发**(新增 tiling 字段 partialUbElems = ceil(usedCoreNum*stride / VL) * VL),kernel 删掉写死的 MAX_CORE_NUM / PARTIAL_BUF_ELEMS —— 平台核数不该由 kernel 假设;MultilabelMarginLoss 的 UB 预算 fixedBytes 同步按整轮计算。 3. **搬入之后对补零区显式 Duplicate 清零**,不再依赖 UB 恰好干净。放在搬入后只清尾巴(而非搬入前清整段),省掉一次 V→MTE2 同步、清零量也从整段缩到补零区(满核时长度为 0 直接跳过);Duplicate 与其后的矢量循环同为 V 流水按序发射,不需额外同步。 配套:phase 1 每核改写**整个 32B 槽**(partial + 其余补 0)而不是单个 4B —— 跨核 GM 写本就是 32B 粒度,补零后 phase 2 能一次连续读入直接矢量累加,补零车道加 0 既不改变和也不产生补偿量。 ## 关联的Issue - 关联Issue #5484 ## 测试 - 定向复现:输入含 inf 的 reduction=sum/mean 用例,核数 1→2 为暴露阈值;修复后单核/多核结果一致为 inf。 - 精度对照:离线配对复刻 4M 用例,Kahan(0.8 ulp) 优于树形规约(1.2 ulp);收尾车道间合并去补偿的两种变体在同一批 partial 上 3/6 例精度变差,故保留补偿。 - 性能(MSELossV2 sum,--run 12,干净环境实测整核时延):4.10→3.429 us (1.20x) / 4.63→3.693 us (1.25x) / 10.23→9.393 us (1.09x)。原写法在 block 0 上串行 usedCoreNum(最多 64) 次标量迭代,实测跨核规约段占小 shape 整核时延四成。 ## 文档更新 - loss/multilabel_margin_loss/docs/aclnnMultilabelMarginLoss.md:同步约束说明(+3 -2)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9662 | 7 天前 | |
fix aclnnNLLLoss2d.md Co-authored-by: wei-peng-1991<weipeng19@huawei.com> # message auto-generated for no-merge-commit merge: !9706 merge master into master fix aclnnNLLLoss2d.md Created-by: wei-peng-1991 Commit-by: wei-peng-1991 Merged-by: cann-robot Description: ## 描述 原因:第 387 行注释为「// 创建other aclTensor」,但紧随其后的代码创建的是 target 张量(aclDataType::ACL_INT32, &target),「other」明显为复制其他二元算子模板时遗留,未与 NLLLoss2d 入参 target 对齐。 修改:将注释「// 创建other aclTensor」修改为「// 创建target aclTensor」,使其与实际创建的变量 target 及函数入参 target 保持一致。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> #5474 ## 测试 本地已验证 ## 文档更新 仅修改aclnn文档中示例代码,接口描述相关内容无修改 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9706 | 8 天前 | |
fix(nll_loss_grad): 删除多余的校验校验条件 Co-authored-by: huang-qiang<huangqiang3@huawei.com> # message auto-generated for no-merge-commit merge: !9806 merge fix/issue-5008-nll-loss-grad-divide-by-zero into master fix(nll_loss_grad): 删除多余的校验校验条件 Created-by: huang-qiang Commit-by: huang-qiang Merged-by: cann-robot Description: ## 描述 1.本 PR 删除了ASSERT 对localTotalWeight的判断,和竞品对标,无需判断totalweight是否为0. 2. issue里提出存在除零问题,npu是支持除零的,且结果和竞品一致 ## 关联的Issue Fixes #5008 ## 测试 构造totalweight用例,竞品和npu结果一致 ## 文档更新 无需文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9806 | 5 天前 | |
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 | 7 天前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 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 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 14 天前 | |
SmoothL1Loss/SigmoidCrossEntropyWithLogitsGrad: 补充 GEIR example、Tiling 异常校验 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !8278 merge master into master SmoothL1Loss/SigmoidCrossEntropyWithLogitsGrad: 补充 GEIR example、Tiling 异常校验 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 本次针对新上库算子补充 GEIR example、Tiling 异常校验,算子分别为SmoothL1Loss/SigmoidCrossEntropyWithLogitsGrad ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4583 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8278 | 1 个月前 | |
clean_code Co-authored-by: jisongyuan<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !9785 merge master into master clean_code Created-by: ji-songyuan Commit-by: jisongyuan Merged-by: cann-robot Description: ## 描述 本 PR 对 fused_sgd、fused_adamw、sigmoid_cross_entropy_with_logits_grad_v2 三个算子的 host 侧代码进行 clean code 修复,共涉及 4 个文件,改动量 +10/-9。 主要解决以下 cleancode 规则告警: - **override 缺失**:重写基类虚函数时未明确指定 override,无法在编译期校验重写正确性 - **const 正确性**:不修改对象状态的成员函数未加 const 修饰,无法被 const 对象调用 - **变量命名歧义**:lambda 捕获参数 name 与宏内同名变量存在混淆风险 - **格式与文件结尾**:初始化列表格式不规范、源文件末尾缺失换行符 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | loss/sigmoid_cross_entropy_with_logits_grad_v2/op_host/arch35/sigmoid_cross_entropy_with_logits_grad_v2_arch35_tiling.h | +1/-1 | DumpTilingInfo() 声明加 override,使编译器能在编译期检查虚函数重写签名匹配,避免无意中隐藏基类同名函数 | | 2 | optim/fused_adamw/op_host/fused_adamw_tiling.cpp | +5/-4 | 将 checkDtype/checkShape lambda 的 name 参数重命名为 nameOfOps,消除与宏内同名变量的歧义;调整 OP_LOGE_FOR_INVALID_DTYPES_WITH_REASON 调用格式,参数逐行对齐提升可读性 | | 3 | optim/fused_sgd/op_host/fused_sgd_tiling.cpp | +1/-1 | FusedSgdTiling::SetTilingData 加 const 修饰。该函数仅读取 this 成员、写入传入的 tilingData 参数,符合 const 成员函数语义 | | 4 | optim/fused_sgd/op_host/fused_sgd_tiling.h | +3/-3 | 构造函数初始化列表格式规整(context_(context){}; → context_(context) {};);SetTilingData 声明加 const 与定义对齐;文件末尾补换行符消除 No newline at end of file 警告 | ### 改动原则 - **纯代码风格/语义增强,不改变任何运行时行为**:所有改动均为编译期可验证的语义提示(override/const)或格式规整,生成的机器码与改动前等价 - **向后兼容**:函数签名增加 const/override 不影响既有调用方,非 const 对象仍可调用 const 成员函数 - **聚焦最小改动**:仅修正 cleancode 扫描告警项,不做额外的重构或逻辑调整 ## 关联的Issue Issue #5445。本 PR 为独立 cleancode 修复,不针对特定功能缺陷。 ## 测试 - 依赖 CI 流水线编译验证:当前 PR 已通过 ci-pipeline-passed 检查 - 改动均为声明/格式层面,不涉及运行时逻辑,无需额外功能测试 - override/const 在编译期生效,若基类签名变更或函数误写为非 const,编译器会直接报错 ## 文档更新 无需文档更新。本 PR 不引入新接口、不改变算子行为,对外 API 与 tiling 协议保持不变。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Clean Code 规则修复(override/const/命名/格式) ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9785 | 6 天前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 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 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 14 天前 | |
feat(): add Ascend 950 operator sigmoid_focal_loss Co-authored-by: Davon14272<liuwenda4@huawei.com> # message auto-generated for no-merge-commit merge: !9140 merge feat/sigmoid-focal-loss into master feat(): add Ascend 950 operator sigmoid_focal_loss Created-by: Davon14272 Commit-by: Davon14272 Merged-by: cann-robot Description: ## 描述 - 算子功能:SigmoidFocalLoss面向目标检测等二分类或逐类别独立二分类训练场景,将logits的Sigmoid二元交叉熵、类别平衡因子和难样本聚焦因子组合为逐元素损失;可选输入 weight在归约前进行逐元素加权。 - 计算公式:设$x=\operatorname{FP32}(pred)$、$t=\operatorname{FP32}(target)$、$p=\sigma(x)$、$\varepsilon=1.17549435\times10^{-38}$,则每个元素的损失为: $$ \operatorname{BCE}(x,t)=-t\log(\max(p,\varepsilon))-(1-t)\log(\max(1-p,\varepsilon)) $$ $$ p_t=(1-p)t+p(1-t),\quad a_t=\alpha t+(1-\alpha)(1-t) $$ $$ \ell=\operatorname{BCE}(x,t)\,a_t\max(p_t,\varepsilon)^{\gamma}\times \begin{cases} weight,&\text{提供weight},\\ 1,&\text{未提供weight}. \end{cases} $$ <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9140 | 9 天前 | |
[CANNBot] SigmoidFocalLossGrad 算子支持ascend950 AscendC Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9433 merge SigmoidFocalLossGrad into master [CANNBot] SigmoidFocalLossGrad 算子支持ascend950 AscendC Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 将 SigmoidFocalLossGrad 迁移到 ops-nn/loss/sigmoid_focal_loss_grad,补齐 Ascend 950 的 OpDef、GEIR 图推导、Tiling 与 AscendC Kernel 实现。 本算子在 canndev 和 ops-nn 中均没有 ACLNN 接口契约,因此本变更不新增 ACLNN API、ACLNN 实现、ACLNN 文档或 ACLNN 用例。构建侧使用 ACLNNTYPE aclnn_exclude 明确禁止生成 ACLNN,原 ACLNN 测试场景已转换为 Kernel 直调或 GEIR 用例。 主要变更: - 新增 Ascend 950 OpDef、图原型、InferShape/InferDataType、Tiling 和 Kernel。 - 支持 pred/dout/weight 的 FLOAT16/FLOAT 组合、可选 weight,以及 mean/sum/none reduction。 - Golden 按 LongTailInfo/Sinh/golden文件/sinh.py 的 TestSpec 结构改造,仅注册 Kernel/GEIR 共用的 raw op;Torch 小算子组合注册为 third_party,精度规范为 L0 cross_check,计算顺序严格复用用户指定 sigmoid_focal_loss_grad_golden.py。 - 新增 Kernel 与 GEIR 正向/反向测试用例、README、算子列表和共性问题排查报告。 共性准入当前为 PARTIAL:已确认 canndev/目标仓原型与 InferShape 重复、未知 Rank/9D/Cast E2E/性能证据缺失,以及 alpha/gamma NaN/Inf 的 6 个反向用例未按预期拦截。详情见 loss/sigmoid_focal_loss_grad/COMMON_ISSUE_SCAN.md,本 PR 不将功能精度通过表述为完整转测准入通过。 ## 关联的Issue 关联 Issue #5283:https://gitcode.com/cann/ops-nn/issues/5283 ## 测试 - 构建:Ascend 950 operator package 构建成功;最终包 SHA256 62a5f24f23ad2370179e4f07b5d14dd8098b8c999ecbe9d2b9f43091d97d602c。 - Golden 源一致性:指定 LongTailInfo 源文件 SHA256 c10e2a95a87e50702f73091e3f6c57d9919496975c839e6fb978907c35faf35b;TestSpec 适配器与 canonical Golden 108/108 逐 bit 一致,Torch third_party 本地计算链 108/108 逐 bit 一致,最大绝对差均为 0。 - Kernel L0 三方:启动本机 xpu-server 的 CPU Torch provider 后,TTK 真实 cross_check 36/36 精度 PASS、36/36 provider PASS、36/36 memory OOB PASS。 - Kernel 本地 NPU↔Golden 回归(显式 stat_rel_err 诊断覆盖):544/544 精度 PASS,544/544 memory OOB PASS。 - Kernel target=2 数值语义:1/1 PASS。 - GEIR 本地 NPU↔Golden:静态 Shape 3/3 PASS,未知维动态 Shape 2/2 PASS。 - GEIR 反向:14 例中 8 例有效拦截;alpha/gamma NaN/Inf 6 例未拦截,已在共性报告中记录为确认问题。 - 提交门禁:trailing whitespace、EOF、large files、merge conflict、private key、clang-format、ruff、codespell、OAT 全部通过。 ## 文档更新 - 新增 loss/sigmoid_focal_loss_grad/README.md。 - 更新 docs/zh/op_list.md。 - 新增 loss/sigmoid_focal_loss_grad/COMMON_ISSUE_SCAN.md。 - 未新增 ACLNN 接口文档或 ACLNN 描述。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9433 | 7 天前 | |
SmoothL1Loss/SigmoidCrossEntropyWithLogitsGrad: 补充 GEIR example、Tiling 异常校验 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !8278 merge master into master SmoothL1Loss/SigmoidCrossEntropyWithLogitsGrad: 补充 GEIR example、Tiling 异常校验 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 本次针对新上库算子补充 GEIR example、Tiling 异常校验,算子分别为SmoothL1Loss/SigmoidCrossEntropyWithLogitsGrad ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4583 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8278 | 1 个月前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 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 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 14 天前 | |
fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !9472 merge cherry-pick-mr-9347-1787965804708-auto into master fix: 整改 23 个 Ascend950 算子 arch35 日志规范 Created-by: wkx12138 Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 依据 cann-log-evaluation 12 条《CANN 日志规范》对 ops-nn 仓 Ascend950(arch35)算子扫描整改报告进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5343 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟已跑 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:日志整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9472 | 9 天前 | |
cleancode Co-authored-by: jisongyuan<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !9185 merge master into master cleancode Created-by: ji-songyuan Commit-by: jisongyuan Merged-by: cann-robot Description: ## 描述 修改optim和loss类算子文件cleancode,为了让代码符合代码质量和规范检查规则。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue #5445 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 设计到的case都已经做了case复跑,case均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9185 | 8 天前 | |
fix(soft_margin_loss): align definition and reduction precision Co-authored-by: leaving__<B24040621@njupt.edu.cn> # message auto-generated for no-merge-commit merge: !9407 merge fix/soft-margin-loss-precision into master fix(soft_margin_loss): align definition and reduction precision Created-by: leaving__ Commit-by: leaving__ Merged-by: cann-robot Description: ## 描述 fix(soft_margin_loss): align definition and reduction precision ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5276 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9407 | 9 天前 | |
fix ut 多线程异常 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9396 merge master into master fix ut 多线程异常 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> fix(ut): 修复多线程UT芯片配置混合导致的偶现失败 多线程UT测试中,同一TestMultiThread调用内不同用例可能携带不同 芯片配置(hardware_info/block_dim),并发执行时全局平台状态产生 竞争导致偶现失败。将相同芯片配置的用例归纳到同一分组,组间串行 执行(join同步),组内多线程stride分发,消除跨配置竞争。 涉及文件: - matmul_v3: ascend910B/950/310P 三组用例各自混合不同CORE_NUM配置 - conv3d_backprop_filter_v2: milan_binary_params 混合 CORE_NUM 24/20 - conv3d_transpose_v2_arch35: cases_params_950_case 动态选择不同compile_info - conv3d_backprop_input_v2: general_20_core_num 含1个block_dim不一致用例 - weight_quant_batch_matmul_v2_msd_group: casesParams2448 混合 aicNum 24/20 分组策略按compile_info来源不同分三类: 1. compile_info为结构体字段:解析JSON的hardware_info+block_dim作为分组键 2. compile_info按soc_version动态选择:按soc_version+short_soc_version分组 3. compile_info从caseName解析构建:解析caseName提取aicNum/aivNum作为分组键 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5304 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9396 | 12 天前 | |
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 | 2 天前 | |
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 | 2 天前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 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 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 14 天前 | |
代码同步 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !450 merge master into master 代码同步 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!450 | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 天前 | ||
| 8 天前 | ||
| 2 天前 | ||
| 7 天前 | ||
| 19 天前 | ||
| 7 天前 | ||
| 1 天前 | ||
| 14 天前 | ||
| 15 天前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 12 天前 | ||
| 9 天前 | ||
| 5 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 5 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 1 天前 | ||
| 7 天前 | ||
| 7 天前 | ||
| 8 天前 | ||
| 5 天前 | ||
| 7 天前 | ||
| 14 天前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 14 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 1 个月前 | ||
| 14 天前 | ||
| 9 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 14 天前 | ||
| 8 个月前 |