| 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 | 3 个月前 |
| foreach/lamb/scatter类算子资料及原型整改,以及示例补齐 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6065 merge master into master foreach/lamb/scatter类算子资料及原型整改,以及示例补齐 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 foreach/Lamb/scatter类长尾算子资料规范、license规范和原型说明注释规范等补充 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 ut/st 全部OBP和David冒烟已通过 ## 文档更新 所有算子README.md和op_list.md以及aclnn_op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6065 | 4 个月前 |
| foreach/lamb/scatter类部分算子补齐A5输入校验和资料说明 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !7419 merge master into master foreach/lamb/scatter类部分算子补齐A5输入校验和资料说明 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 foreach/lamb/scatter类部分算子资料描述不清晰,补齐A5输入校验和资料说明 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4075 ## 测试 不涉及 ## 文档更新 foreach/lamb/scatter类部分算子README文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7419 | 3 个月前 |
| refactor(optim): CodeCheck代码规范整改 Co-authored-by: wangpengbo26<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !10441 merge codecheck915 into master refactor(optim): CodeCheck代码规范整改 Created-by: wangpengbo26 Commit-by: wangpengbo26 Merged-by: cann-robot Description: ## 描述 对 optim 算子族 arch35 平台 tiling 代码进行 C++ 规范整改,将 reinterpret_cast 替换为 static_cast,消除 codecheck 告警。 ### 改动原因 7 个 LAMB 算子 arch35 tiling 文件中使用 reinterpret_cast 进行类型转换,触发 codecheck 告警。这些转换均为已知类型间的下行转换,可安全使用 static_cast 替代。 ### 改动方法 每个文件 2 处修改(共 14 处),统一模式: 1. reinterpret_cast<uint8_t*>(emptyRawTiling->GetData()) → static_cast<uint8_t*>(...) 2. reinterpret_cast<const XxxCompileInfo*>(context->GetCompileInfo()) → static_cast<const XxxCompileInfo*>(...) 涉及 7 个算子: - lamb_apply_optimizer_assign - lamb_apply_weight_assign - lamb_next_m_v - lamb_next_m_v_with_decay - lamb_next_right - lamb_update_with_lr - lamb_update_with_lr_v2 涉及文件(7 个,均 +2 -2): - optim/lamb_apply_optimizer_assign/op_host/arch35/lamb_apply_optimizer_assign_tiling_arch35.cpp - optim/lamb_apply_weight_assign/op_host/arch35/lamb_apply_weight_assign_tiling_arch35.cpp - optim/lamb_next_m_v/op_host/arch35/lamb_next_m_v_tiling_arch35.cpp - optim/lamb_next_m_v_with_decay/op_host/arch35/lamb_next_m_v_with_decay_tiling_arch35.cpp - optim/lamb_next_right/op_host/arch35/lamb_next_right_tiling_arch35.cpp - optim/lamb_update_with_lr/op_host/arch35/lamb_update_with_lr_tiling_arch35.cpp - optim/lamb_update_with_lr_v2/op_host/arch35/lamb_update_with_lr_v2_tiling_arch35.cpp ## 关联的Issue -https://gitcode.com/cann/ops-nn/issues/5864 ## 测试 pass。 ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:codecheck 规范整改 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10441 | 1 个月前 |
| 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 | 3 个月前 |
| 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 | 1 个月前 |
| foreach/lamb/scatter类算子资料及原型整改,以及示例补齐 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !6065 merge master into master foreach/lamb/scatter类算子资料及原型整改,以及示例补齐 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 foreach/Lamb/scatter类长尾算子资料规范、license规范和原型说明注释规范等补充 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 ut/st 全部OBP和David冒烟已通过 ## 文档更新 所有算子README.md和op_list.md以及aclnn_op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6065 | 4 个月前 |
| docs(lamb/scatter): 补齐 16 个算子 README 产品支持表的 A2/A3 标记 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9223 merge fix/readme-a2a3-support into master docs(lamb/scatter): 补齐 16 个算子 README 产品支持表的 A2/A3 标记 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 这 16 个算子在 A2(ascend910b)与 A3(ascend910_93)上均有可用实现,但各自 README 的「产品支持情况」表把这两行标成了 ×,与事实不符——从资料上看不出这些算子在 A2/A3 可用。本 PR 将这两行订正为 √。 判定依据(两条同时成立才改,逐个算子核对): 1. canndev ops/built-in/tbe/op_info_cfg/ai_core/{ascend910b,ascend910_93}/aic-*-ops-info.ini 中存在该 OpType 的注册段; 2. canndev ops/built-in/tbe/impl/(或 impl/dynamic/)下存在对应的实现文件。 涉及算子: - optim:lamb_apply_optimizer_assign、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、lamb_next_right、lamb_update_with_lr、lamb_update_with_lr_v2 - index:scatter、scatter_add、scatter_div、scatter_elements、scatter_max、scatter_min、scatter_mul、scatter_nd、quant_update_scatter 未改动项:仅改「Atlas A3 训练系列产品/Atlas A3 推理系列产品」与「Atlas A2 训练系列产品/Atlas A2 推理系列产品」两行的取值;「Atlas 200I/500 A2 推理产品」(名称中同样含 A2)及其余产品行、README 正文均未改动。 一致性说明:同目录下 scatter_nd_sub、scatter_non_aliasing_add、scatter_max_with_argmax 等算子同样是本仓 def 只注册 ascend950、A2/A3 实现在 canndev,其 README 本就标为 √;本次改动与既有写法保持一致。 ## 关联的Issue - 关联Issue #5164 (https://gitcode.com/cann/ops-nn/issues/5164) ## 测试 本 PR 仅涉及 README 文档,无代码改动,不涉及编译与用例执行。核对方式: 1. 脚本逐算子比对 canndev 的 ops-info 注册段与 impl 实现文件,确认 16 个算子在 ascend910b/ascend910_93 均命中;改后复跑同一脚本,同类算子中已无遗漏; 2. 核对 git diff,被修改的行全部为 <term>Atlas A2/A3 …</term> 两行,未触及其他产品行与正文。 ## 文档更新 更新了上述 16 个算子目录下的 README.md(每个文件 2 行,共 32 行)。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9223 | 1 个月前 |