| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 6 天前 | |
test(foreach): 补齐整型 UT 覆盖 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !10170 merge master into master test(foreach): 补齐整型 UT 覆盖 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增整型路径缺少对应 UT 覆盖。本 PR 为 foreach 系列算子(foreach_exp、foreach_expm1、foreach_sub_list、foreach_add_scalar 等)补充整型(int16/int8/uint8)单元测试覆盖:扩展公共 tiling 的 UB 划分以支持整型输入所需的中间缓冲,测试数据生成改为全量程随机以触发溢出回绕路径,并针对 ForeachExp/ForeachExpm1 的"整进浮出"(输出 float32)语义调整 kernel 测试输出与 golden 生成,同时新增 host 侧 infer_datatype 整型转浮点用例及 foreach_sub_list 的整型 kernel 用例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5618](https://gitcode.com/cann/ops-nn/issues/5618) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试用例补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10170 | 4 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
ForeachAddList性能优化 Co-authored-by: u010470851<shangguanqinnan@huawei.com> # message auto-generated for no-merge-commit merge: !10022 merge add_foreachaddlist_regbase into master ForeachAddList性能优化 Created-by: u010470851 Commit-by: u010470851 Merged-by: cann-robot Description: ## 描述 ForeachAddList新增SIMD模板实现 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联的Issue https://gitcode.com/cann/ops-nn/issues/5736 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 测试case性能相较SIMT模板有1~2倍性能提升 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10022 | 4 天前 | |
fix(foreach,lamb,scatter_list): ForeachAddc*List 补 Div 0ULP 精度档 + LambApplyOptimizerAssign 支持面订正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10142 merge fix/tp-fused-and-scatterlist-doc into master fix(foreach,lamb,scatter_list): ForeachAddc*List 补 Div 0ULP 精度档 + LambApplyOptimizerAssign 支持面订正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 本 PR 包含三组修复,均由 TTK 三方精度比对(cross_check)跑批暴露的红灯定位而来。 ### 1. ForeachAddcmulList / ForeachAddcdivList:补 Div 0 ULP 精度档(内核) foreach/foreach_utils/op_kernel/arch35/foreach_addc_list_regbase.h 中的 Div 此前未指定 DivConfig,落到缺省 DivAlgo::INTRINSIC——该档在 dav-3510 上仅保真到 1 ULP。 - 实测 fp32 用例 **23689/524288(4.52%)** 元素与正确舍入结果相差 1 ULP - 在 x1 与 scalars*(x2/x3) 几乎相消的点上,该偏差被放大成上千 ULP 的相对误差,cross_check 的 mare 判据因此报红(实测 mare 29.87 > L1 阈值 5.0) - 显式改用 DivAlgo::PRECISION_0ULP_FTZ_TRUE 后,输出与正确舍入结果**逐位相同(0/524288)** 仓内 20/22 处显式 Div 配置均选 0ULP 档,本文件此前漏配;兄弟算子 foreach_div_list_inplace 已修过同一问题。addcmul 走 Mul 分支不受影响;ComputeIntPath 的整数 Div 未改。 ### 2. LambApplyOptimizerAssign:支持面订正(资料 + host 校验 + UT) 原 README 声明 grad 与 input3 均可小于 inputv/inputm 并向上广播,但底层 Ops::Base 广播模板的 DoDimensionCollapse **不支持对 In0(即 grad)做广播**: - grad 为标量时 EnsureNotScalar 只抬到 {1}、不左补 1 对齐输出 rank → The 1 input's dim num is not same with output's dim num - grad 与输出同 rank 但某维为 1 → The 1 input's dim index is not same with out, and not 1 - 实测支持面矩阵:grad 在任意单维广播均被拒;input3 支持 () / (1,) / (1,1,1) / (4,) / (1,3,4) / (2,1,4),仅 rank 大于输出时不支持 改动: - README 订正为「grad/inputv/inputm 三者 shape 必须完全相同,仅 input3 按右对齐 broadcast 规则向 inputv 对齐」 - infershape 与 tiling 的 CheckInplaceShapeConstraint 同步改为严格等形,使非法组合在 host 阶段被清晰拒绝,而不是放行后到 tiling 阶段抛 E90003 - infershape 三处 shape 校验统一改用结构化日志宏 OP_LOGE_FOR_INVALID_SHAPE(S)_WITH_REASON,与 tiling 侧口径一致 - UT 同步更新:原 moment_shape_decides_output_shape 断言的是旧广播语义,已改为等形;新增 grad_smaller_than_moment_is_rejected 与 input3_broadcast_into_moment_is_accepted ### 3. 三方腿与资料订正(golden / docs) - foreach_add_list_inplace / foreach_sub_list_inplace 的三方腿改用两步拼接(_foreach_mul + _foreach_add),不再用 alpha= 的融合形式。融合形式是一次 FMA 舍入,与 CPU golden 的两步舍入序列不同,两者恒差 1 ULP:实测 107/107 例 |NPU−真值| + |三方−真值| 精确等于 1.0000 ULP,mare 恒为 1.000。分离后三个种子(0/1/7)各 20/20 全通过。 - foreach_addcmul_list / foreach_addcdiv_list 的 golden 补 e2e 三方腿适配类 _TpE2e(TTK 按 torch 重载形参名 self/tensor1/tensor2/scalars 下发,与 def 注册名 x1/x2/x3/scalars 不同,直接复用 kernel 腿竞品类会抛 UnknownParamError);并**标注这两个算子实际不具备 e2e 通路支持**——aten::_foreach_addc{mul,div}.Tensor 在追踪期即抛 Expected scalars to be on CPU,torch.compile 建不了图,torchair converter 走不到,需手工给已安装的 torch_npu 补 meta 注册才能跑通,该补丁不在本仓、重装即失效,故不作为已交付通路。 - ScatterList 资料补 maskOptional 取值范围,并修正 mask 维度列笔误(0-8 → 1 维);aclnnScatterMin 补索引取值范围;op_api_list 补 ForeachAddcmul/AddcdivList 的确定性说明。 ## 关联的Issue 关联 Issue #5750 —— https://gitcode.com/cann/ops-nn/issues/5750 ## 测试 - **LambApplyOptimizerAssign op_host UT**:bash build.sh -u --ops=lamb_apply_optimizer_assign --soc=ascend950 → **14/14 PASSED**(含 2 条新增用例) - **Div 精度档位(JIT 在线编译,源码级 A/B)**:同用例同区间下,改前 23689/524288(4.518%)元素偏离正确舍入,改后 **0/524288** - **部署二进制验证(重新出包 + 部署,确认被测 == 当前源码)**:ForeachAddcdivList 在 kernel / aclnn / GE 图三条通路上 mare = mere = rmse = 1(即与 golden 逐位相同) - **LambApplyOptimizerAssign 支持面矩阵(静态 GE 通路)**:grad 等形 + input3 降 rank 用例 PASS;grad 标量 / grad 含 1 维用例在 host 阶段被拒,报错文案为 Parameter grad of op1 has incorrect shape [1]. Reason: grad does not support broadcast and must have exactly the same shape as inputv/inputm - **pre-commit**:clang-format / ruff-check / ruff-format / codespell / trailing-whitespace / end-of-file-fixer 本地全部通过 - ⚠️ **待补**:foreach_addcdiv_list(1437 例)与 lamb_apply_optimizer_assign 泛化集回归正在跑批中,结果将补充到本 PR 评论 ## 文档更新 - optim/lamb_apply_optimizer_assign/README.md:输入/输出 shape 描述与《约束说明》改写 - index/scatter_list/README.md、index/scatter_list/docs/aclnnScatterList.md:mask 取值范围与维度笔误订正 - docs/zh/op_api_list.md:补 ForeachAddcmul/AddcdivList 确定性说明 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10142 | 4 天前 | |
test(foreach): 补齐整型 UT 覆盖 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !10170 merge master into master test(foreach): 补齐整型 UT 覆盖 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增整型路径缺少对应 UT 覆盖。本 PR 为 foreach 系列算子(foreach_exp、foreach_expm1、foreach_sub_list、foreach_add_scalar 等)补充整型(int16/int8/uint8)单元测试覆盖:扩展公共 tiling 的 UB 划分以支持整型输入所需的中间缓冲,测试数据生成改为全量程随机以触发溢出回绕路径,并针对 ForeachExp/ForeachExpm1 的"整进浮出"(输出 float32)语义调整 kernel 测试输出与 golden 生成,同时新增 host 侧 infer_datatype 整型转浮点用例及 foreach_sub_list 的整型 kernel 用例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5618](https://gitcode.com/cann/ops-nn/issues/5618) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试用例补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10170 | 4 天前 | |
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 | 18 天前 | |
fix(assets): scatter 四算子补 e2e(TF 前端)通路适配,foreach addc 两算子三方腿对齐内核 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10290 merge fix/scatter-tf-e2e-adapt into master fix(assets): scatter 四算子补 e2e(TF 前端)通路适配,foreach addc 两算子三方腿对齐内核 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [ ] 否 [x] 是 __1. AI Agent 平台: Claude Code __2. AI 模型: Claude Opus 5 __3. Prompt上下文 : 定位并修复 scatter 四算子 golden 的 e2e(TF 前端)通路缺口与三方腿适配 ### PR功能描述 / 为什么需要这个合入**: 1. Scatter 四算子(Mul/Div/Max/Min)的 golden 未注册 e2e 通路,该通路取不到 golden 且失败静默; 2. 未声明 e2e 判据,回落默认绝对容差,输出接近 dtype 上限时 1 ULP 即超限; 3. 三方腿按框架 API 形参名下发,与 def 注册名不匹配,起不来; 4. ScatterDiv 三方腿缺少与内核一致的加宽/窄回,窄类型下中间量溢出; 5. ScatterDiv 重复索引逐条相除,耗时与索引数成正比,大规模输入超出调度超时。 对应修改: 1. ~3. 四算子补 __golden__ 的 e2e 档与载体适配入口、__spec__ 条目、判据声明、三方腿形参适配类,计算逻辑未改; 4. 补 _tp_widen / _tp_narrow,与内核同算法; 5. 改分层向量化,串行依赖只在同一行内部,循环次数由索引数降为单行最大重复次数,语义逐位一致。 ForeachAddcmul/AddcdivList:三方腿与 CPU golden 对齐内核的融合乘加(单次舍入)。 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes #5815 ### 希望检视人员了解: 依赖 ops-test-kit 的 e2e 修复(cann/ops-test-kit#245)才能完整复现验证结果。 ## 测试 CANN 9.2.0 + Ascend950PR 真机 + Ascend TF Adapter + 远端 GPU 三方腿: ScatterMul 4/4、ScatterMax 5/5、ScatterMin 5/5、ScatterDiv 4/4、Foreach kernel 6/6 与 aclnn 6/6,全部 PASS。浮点走 cross_check 且三方腿 status=PASS,整型走 binary_equal;NPU 侧经 msprof 确认执行的是本算子。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10290 | 3 天前 | |
fix(foreach_addcdiv_scalar): 修复空tensor启动失败及未开启高精度编译选项导致部分用例fail Co-authored-by: wkkk0528<wangkai578@huawei.com> # message auto-generated for no-merge-commit merge: !10139 merge fix_foreach_addcdiv_scalar into master fix(foreach_addcdiv_scalar): 修复空tensor启动失败及未开启高精度编译选项导致部分用例fail Created-by: wkkk0528 Commit-by: wkkk0528 Merged-by: cann-robot Description: ## 描述 修复 foreach_addcdiv_scalar 算子三方测试暴露的两个缺陷: 1.修复空tensor处理缺失; 2.开启高精度编译选项; ## 关联的issue https://gitcode.com/cann/ops-nn/issues/5792 ## 测试 已通过算子冒烟测试,st用例测试 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10139 | 17 小时前 | |
修复ForeachAbs,ForeachAddcdivScalarList性能问题 Co-authored-by: u010470851<shangguanqinnan@huawei.com> # message auto-generated for no-merge-commit merge: !9780 merge add_noftzmode into master 修复ForeachAbs,ForeachAddcdivScalarList性能问题 Created-by: u010470851 Commit-by: u010470851 Merged-by: cann-robot Description: ## 描述 修复ForeachAbs,ForeachAddcdivScalarList性能问题,修复ForeachPowList,ForeachTan精度问题,开启高精度计算 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联的Issue https://gitcode.com/cann/ops-nn/issues/5790 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已测试ForeachAbs,ForeachAddcdivScalarList,ForeachPowList,ForeachTan的算子用例,性能精度达标 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9780 | 3 天前 | |
fix(assets): scatter 四算子补 e2e(TF 前端)通路适配,foreach addc 两算子三方腿对齐内核 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10290 merge fix/scatter-tf-e2e-adapt into master fix(assets): scatter 四算子补 e2e(TF 前端)通路适配,foreach addc 两算子三方腿对齐内核 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [ ] 否 [x] 是 __1. AI Agent 平台: Claude Code __2. AI 模型: Claude Opus 5 __3. Prompt上下文 : 定位并修复 scatter 四算子 golden 的 e2e(TF 前端)通路缺口与三方腿适配 ### PR功能描述 / 为什么需要这个合入**: 1. Scatter 四算子(Mul/Div/Max/Min)的 golden 未注册 e2e 通路,该通路取不到 golden 且失败静默; 2. 未声明 e2e 判据,回落默认绝对容差,输出接近 dtype 上限时 1 ULP 即超限; 3. 三方腿按框架 API 形参名下发,与 def 注册名不匹配,起不来; 4. ScatterDiv 三方腿缺少与内核一致的加宽/窄回,窄类型下中间量溢出; 5. ScatterDiv 重复索引逐条相除,耗时与索引数成正比,大规模输入超出调度超时。 对应修改: 1. ~3. 四算子补 __golden__ 的 e2e 档与载体适配入口、__spec__ 条目、判据声明、三方腿形参适配类,计算逻辑未改; 4. 补 _tp_widen / _tp_narrow,与内核同算法; 5. 改分层向量化,串行依赖只在同一行内部,循环次数由索引数降为单行最大重复次数,语义逐位一致。 ForeachAddcmul/AddcdivList:三方腿与 CPU golden 对齐内核的融合乘加(单次舍入)。 ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes #5815 ### 希望检视人员了解: 依赖 ops-test-kit 的 e2e 修复(cann/ops-test-kit#245)才能完整复现验证结果。 ## 测试 CANN 9.2.0 + Ascend950PR 真机 + Ascend TF Adapter + 远端 GPU 三方腿: ScatterMul 4/4、ScatterMax 5/5、ScatterMin 5/5、ScatterDiv 4/4、Foreach kernel 6/6 与 aclnn 6/6,全部 PASS。浮点走 cross_check 且三方腿 status=PASS,整型走 binary_equal;NPU 侧经 msprof 确认执行的是本算子。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10290 | 3 天前 | |
fix foreach示例代码格式问题 Co-authored-by: tramp-ll<linglong4@huawei.com> # message auto-generated for no-merge-commit merge: !9878 merge master into master fix foreach示例代码格式问题 Created-by: tramp-ll Commit-by: tramp-ll Merged-by: cann-robot Description: ## 描述 fix foreach示例代码格式个规范问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5570 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 更新部分foreach算子系列的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9878 | 10 天前 | |
fix(foreach): 修复11个SIMT算子arch35 tiling中dtype未拦截问题 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8750 merge foreach into master fix(foreach): 修复11个SIMT算子arch35 tiling中dtype未拦截问题 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 修复11个Foreach算子arch35 tiling中dtype未拦截问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5030 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8750 | 21 天前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
修复ForeachAbs,ForeachAddcdivScalarList性能问题 Co-authored-by: u010470851<shangguanqinnan@huawei.com> # message auto-generated for no-merge-commit merge: !9780 merge add_noftzmode into master 修复ForeachAbs,ForeachAddcdivScalarList性能问题 Created-by: u010470851 Commit-by: u010470851 Merged-by: cann-robot Description: ## 描述 修复ForeachAbs,ForeachAddcdivScalarList性能问题,修复ForeachPowList,ForeachTan精度问题,开启高精度计算 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联的Issue https://gitcode.com/cann/ops-nn/issues/5790 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已测试ForeachAbs,ForeachAddcdivScalarList,ForeachPowList,ForeachTan的算子用例,性能精度达标 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9780 | 3 天前 | |
fix(scatter,foreach): 修复 ScatterMax/Min/Mul/Div 排序竞态与 Div 精度档,并整改 12 个算子 golden Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10059 merge fix/golden-third-party-precision-batch2 into master fix(scatter,foreach): 修复 ScatterMax/Min/Mul/Div 排序竞态与 Div 精度档,并整改 12 个算子 golden Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 ScatterMax/Min/Mul/Div 排序阶段的多核同步缺口与 foreach_div_list_inplace 的除法精度档, 并整改 12 个 foreach/scatter/lamb 算子 tests/assets/golden.py 的四类缺陷、补齐 2 处资料。 ### 一、内核缺陷 **1) scatter_reduce_common 并行归并排序缺少 MTE3->V / MTE3->S 同步(竞态)** SortLocalRuns() 循环尾只发 MTE3->MTE2(保护下一轮的输入搬入),未约束下一轮的 V 管道(Sort/Adds)与 S 管道(补哨兵)—— 而它们写的正是同一对 UB shiftSorted / originUb,本轮把它们搬出到 GM 的 DataCopyPad(MTE3) 尚未读完就被覆写, 导致落盘的排序键与原位置索引被污染,少数 var 行折进别行的 update。 旁证:同文件 SortMergeTree() 循环尾发的是 MTE3->S(它只用 S 写 UB,够用), 反衬出 SortLocalRuns() 漏了两条。 修复: cpp + const event_t m3v = pipe_.FetchEventID(HardEvent::MTE3_V); + const event_t m3s2 = pipe_.FetchEventID(HardEvent::MTE3_S); ... SetFlag<MTE3_MTE2>(m3m2); WaitFlag<MTE3_MTE2>(m3m2); + SetFlag<MTE3_V>(m3v); WaitFlag<MTE3_V>(m3v); + SetFlag<MTE3_S>(m3s2); WaitFlag<MTE3_S>(m3s2); **A/B 同种子对照**(var 6288948 行 / M 5375 万 / 合法索引 / 8 个固定种子,其余完全相同): | | 修复前 | 修复后 | |---|---:|---:| | PASS | 2 | **8** | | FAIL | 6 | **0** | 原触发用例连跑 3 遍 3/3 全绿(修复前每次必红)。ScatterMin 同规模复跑 3/3 全绿。 影响面:该内核为 ScatterMax/Min/Mul/Div 共享(Process() 中 MAX/MIN/MUL 走完全相同的路径, DIV 共用排序阶段),四个算子一并修复;位于 op_kernel/arch35/ 专属目录,不影响 A2。 **2) foreach_div_list_inplace 未开启 Div 的 0 ULP 精度档** Div(...) 未传 DivConfig,落到 DEFAULT_DIV_CONFIG = {DivAlgo::INTRINSIC}; 在 dav-3510 上该档是 1 ULP 保真舍入(实测 3126 万个 fp32 元素中 **8.29% 偏 1 ULP**), 而竞品 fp32 除法为 0 ULP 正确舍入。显式选 PRECISION_0ULP_FTZ_TRUE: | | 偏 0 ULP | 偏 1 ULP | 最大偏差 | |---|---:|---:|---:| | 修改前 | 91.71% | 8.29% | 1 ULP | | 修改后 | **100.0000%** | **0%** | **0 ULP** | 全泛化集 34/34 通过,性能 +4.2%(--run 12 同条件实测 209.8us -> 218.7us)。 未取仓内他处常见的 FTZ_FALSE:两档精度实测完全相同,但 FTZ_FALSE 的非规格数完整处理 同条件实测 218.7us -> 2028.1us(**9.3x**),而本算子输入域内不产生 fp32 非规格数。 ### 二、golden 整改(12 个算子) **3) Promote 撤销** —— _to_fp32 无条件把 Promote 后的 float64 砍回 fp32,等于撤销 TTK 的 Promote 能力:fp32 档的 mare 恒等于地板值 0.0019531(= 1ULP / 2^-14),无论内核对错都过, **该档等于从未被验证**。加 float64 护栏(CPU 侧不 cast,来什么算什么)。 **4) 三方腿入参绑定失效** —— _TpKernelFaithful 包装遮蔽了真实签名,TTK 按 __call__ 签名 绑定入参导致 TypeError,三方腿整条不可用。透传 __signature__ 修复。 **5) TensorList 载体还原** —— bf16 以 void 视图传入,torch 不认,按位 view 回 bf16(同宽无损)。 **6) 标量重载** —— torch 的 foreach 标量重载只接受 Number,Python 标量是 weak-typed 不会抬高 dtype,改为返回 Python 数值。 **7) scatter_list 的 uint16/uint32 崩溃** —— 走 torch index_put 会抛异常,改用等宽有符号 位视图(uint16->int16、uint32->int32)规避。 **8) scatter_div 工作 dtype** —— 由硬编码 fp32 改为跟随输入(仅保留 bf16->fp32 的载体桥接)。 **9) scatter_max/min/mul/div 的 tf 三方腿按内核算法转写** —— 内核对 fp16 是 LoadWiden 到 fp32 计算、NarrowStore 窄回,原实现只在窄类型上算,与被测内核不是同一个算法。 ### 三、资料 **10)** aclnnScatterMin.md 补齐索引取值范围约束(索引值的取值范围为[0, varRef.shape[0]))—— 该条 Max/Mul/Div 三个算子的资料原本就有,仅 Min 的约束列为空,属资料内部不一致。 **11)** aclnnScatterList.md 补充 maskOptional 取值范围(措辞与既有的 indice 取值条款对齐), 并修正参数表 mask 维度列笔误(原写 0-8,实际实现仅支持 1 维,tiling 对 maskDims != 1 直接返回 GRAPH_FAILED)。 ## 验证 | 项 | 结果 | |---|---| | ScatterMax 排序竞态 A/B(同 8 种子) | 修复前 2/8 通过 → 修复后 **8/8 通过** | | ScatterMin 同规模复跑 | **3/3 通过** | | foreach_div 全泛化集 | **34/34 通过**,3126 万元素 100% 偏 0 ULP | | 12 个算子 kernel + geir 双通路 | **1646 例,除已修复项外全部通过** | | ScatterMax/Min aclnn 通路 | **2/2、2/2 通过**(GetWorkspaceSize 与 OnXpuProfiling 均命中) | | CI 门禁 | ruff check / ruff format 全部通过 | 关联 Issue #5682 See merge request: cann/ops-nn!10059 | 6 天前 | |
fix: 为foreach手写aclnn算子补充tensor list空元素检查 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !9494 merge fix/foreach-null-entry into master fix: 为foreach手写aclnn算子补充tensor list空元素检查 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 在CheckParams中CheckNotNull之后、CheckDtypeValid之前,遍历各个tensor list检查元素是否为nullptr,命中则返回ACLNN_ERR_PARAM_INVALID。 共涉及17个foreach算子,20个文件: - aclnn_exclude(10算子/13文件) - aclnn V2 hand-write(7算子/7文件) ## 关联的Issue - Refs #5329 ## 测试 - UT op_api: 62/62 PASSED - UT op_kernel: 72/72 PASSED - UT op_host tiling: 全部通过 - Example eager: 16/17通过(foreach_mul_list为基线已有问题) - ST (ATK): foreach_lerp_scalar 201/201通过,其余16算子各3/3通过 - Pre-commit: 全部通过 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9494 | 16 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
fix: 为foreach手写aclnn算子补充tensor list空元素检查 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !9494 merge fix/foreach-null-entry into master fix: 为foreach手写aclnn算子补充tensor list空元素检查 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 在CheckParams中CheckNotNull之后、CheckDtypeValid之前,遍历各个tensor list检查元素是否为nullptr,命中则返回ACLNN_ERR_PARAM_INVALID。 共涉及17个foreach算子,20个文件: - aclnn_exclude(10算子/13文件) - aclnn V2 hand-write(7算子/7文件) ## 关联的Issue - Refs #5329 ## 测试 - UT op_api: 62/62 PASSED - UT op_kernel: 72/72 PASSED - UT op_host tiling: 全部通过 - Example eager: 16/17通过(foreach_mul_list为基线已有问题) - ST (ATK): foreach_lerp_scalar 201/201通过,其余16算子各3/3通过 - Pre-commit: 全部通过 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9494 | 16 天前 | |
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 6 天前 | |
fix: 为foreach手写aclnn算子补充tensor list空元素检查 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !9494 merge fix/foreach-null-entry into master fix: 为foreach手写aclnn算子补充tensor list空元素检查 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 在CheckParams中CheckNotNull之后、CheckDtypeValid之前,遍历各个tensor list检查元素是否为nullptr,命中则返回ACLNN_ERR_PARAM_INVALID。 共涉及17个foreach算子,20个文件: - aclnn_exclude(10算子/13文件) - aclnn V2 hand-write(7算子/7文件) ## 关联的Issue - Refs #5329 ## 测试 - UT op_api: 62/62 PASSED - UT op_kernel: 72/72 PASSED - UT op_host tiling: 全部通过 - Example eager: 16/17通过(foreach_mul_list为基线已有问题) - ST (ATK): foreach_lerp_scalar 201/201通过,其余16算子各3/3通过 - Pre-commit: 全部通过 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9494 | 16 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 18 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
test(foreach): 补齐整型 UT 覆盖 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !10170 merge master into master test(foreach): 补齐整型 UT 覆盖 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增整型路径缺少对应 UT 覆盖。本 PR 为 foreach 系列算子(foreach_exp、foreach_expm1、foreach_sub_list、foreach_add_scalar 等)补充整型(int16/int8/uint8)单元测试覆盖:扩展公共 tiling 的 UB 划分以支持整型输入所需的中间缓冲,测试数据生成改为全量程随机以触发溢出回绕路径,并针对 ForeachExp/ForeachExpm1 的"整进浮出"(输出 float32)语义调整 kernel 测试输出与 golden 生成,同时新增 host 侧 infer_datatype 整型转浮点用例及 foreach_sub_list 的整型 kernel 用例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5618](https://gitcode.com/cann/ops-nn/issues/5618) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试用例补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10170 | 4 天前 | |
test(foreach): 补齐整型 UT 覆盖 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !10170 merge master into master test(foreach): 补齐整型 UT 覆盖 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增整型路径缺少对应 UT 覆盖。本 PR 为 foreach 系列算子(foreach_exp、foreach_expm1、foreach_sub_list、foreach_add_scalar 等)补充整型(int16/int8/uint8)单元测试覆盖:扩展公共 tiling 的 UB 划分以支持整型输入所需的中间缓冲,测试数据生成改为全量程随机以触发溢出回绕路径,并针对 ForeachExp/ForeachExpm1 的"整进浮出"(输出 float32)语义调整 kernel 测试输出与 golden 生成,同时新增 host 侧 infer_datatype 整型转浮点用例及 foreach_sub_list 的整型 kernel 用例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5618](https://gitcode.com/cann/ops-nn/issues/5618) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试用例补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10170 | 4 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
fix foreach示例代码格式问题 Co-authored-by: tramp-ll<linglong4@huawei.com> # message auto-generated for no-merge-commit merge: !9878 merge master into master fix foreach示例代码格式问题 Created-by: tramp-ll Commit-by: tramp-ll Merged-by: cann-robot Description: ## 描述 fix foreach示例代码格式个规范问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5570 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 更新部分foreach算子系列的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9878 | 10 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 6 天前 | |
foreach log fix Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !7763 merge 20260722 into master foreach log fix Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 本次 PR 对 ops-nn/foreach 目录进行日志质量整改与 License 合规修复。 **背景**:CANN 日志质量测评(2026-08-25)发现 foreach 目录存在 **580 项**日志质量问题(严重 30 / 一般 5 / 提示 545)。本次 PR 先整改生产代码与示例代码;**tests 目录内的测试相关改动本次暂不涉及**。 **改动内容**: 1. **生产代码日志整改(54 处,仅日志文案不影响功能)** - 20 处 arch35 tiling tensorNum 越限报错补打实际值 - 2 处判空条件修复:platformInfoPtr == nullptr → compileInfoPtr == nullptr(原条件重复判 platformInfoPtr,compileInfoPtr 未判空即解引用,存在空指针隐患) - 7 处语法错误(%s 改 %u、.Currently 补空格、ConcatString 漏空格、shape dim 补主语) - 2 处拼写改名(Tenor → Tensor) - 22 处中文顿号改英文逗号 2. **示例代码(test_geir)清理(3 个文件)** - 15 处 printf 删除(含 3 处「Run graph failed 却用 INFO」级别错配) - 补标准 CANN-2.0 License 头(年份 2026) > **说明**:tests 目录内的测试相关改动本次暂不涉及,测试文件保持与上游一致。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5181 ## 测试 - 生产代码 54 处问题逐条映射核对:全部解决 - pre-commit 门禁全过:trailing-whitespace / end-of-file-fixer / clang-format / ruff / codespell / OAT(52 文件合规检查) 功能全量回归冒烟PASS ## 文档更新 无(不涉及文档修改) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:License 合规修复与示例打印清理 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7763 | 18 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
foreach log fix Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !7763 merge 20260722 into master foreach log fix Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 本次 PR 对 ops-nn/foreach 目录进行日志质量整改与 License 合规修复。 **背景**:CANN 日志质量测评(2026-08-25)发现 foreach 目录存在 **580 项**日志质量问题(严重 30 / 一般 5 / 提示 545)。本次 PR 先整改生产代码与示例代码;**tests 目录内的测试相关改动本次暂不涉及**。 **改动内容**: 1. **生产代码日志整改(54 处,仅日志文案不影响功能)** - 20 处 arch35 tiling tensorNum 越限报错补打实际值 - 2 处判空条件修复:platformInfoPtr == nullptr → compileInfoPtr == nullptr(原条件重复判 platformInfoPtr,compileInfoPtr 未判空即解引用,存在空指针隐患) - 7 处语法错误(%s 改 %u、.Currently 补空格、ConcatString 漏空格、shape dim 补主语) - 2 处拼写改名(Tenor → Tensor) - 22 处中文顿号改英文逗号 2. **示例代码(test_geir)清理(3 个文件)** - 15 处 printf 删除(含 3 处「Run graph failed 却用 INFO」级别错配) - 补标准 CANN-2.0 License 头(年份 2026) > **说明**:tests 目录内的测试相关改动本次暂不涉及,测试文件保持与上游一致。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5181 ## 测试 - 生产代码 54 处问题逐条映射核对:全部解决 - pre-commit 门禁全过:trailing-whitespace / end-of-file-fixer / clang-format / ruff / codespell / OAT(52 文件合规检查) 功能全量回归冒烟PASS ## 文档更新 无(不涉及文档修改) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:License 合规修复与示例打印清理 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7763 | 18 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
fix foreach示例代码格式问题 Co-authored-by: tramp-ll<linglong4@huawei.com> # message auto-generated for no-merge-commit merge: !9878 merge master into master fix foreach示例代码格式问题 Created-by: tramp-ll Commit-by: tramp-ll Merged-by: cann-robot Description: ## 描述 fix foreach示例代码格式个规范问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5570 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 更新部分foreach算子系列的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9878 | 10 天前 | |
fix: 为foreach手写aclnn算子补充tensor list空元素检查 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !9494 merge fix/foreach-null-entry into master fix: 为foreach手写aclnn算子补充tensor list空元素检查 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 在CheckParams中CheckNotNull之后、CheckDtypeValid之前,遍历各个tensor list检查元素是否为nullptr,命中则返回ACLNN_ERR_PARAM_INVALID。 共涉及17个foreach算子,20个文件: - aclnn_exclude(10算子/13文件) - aclnn V2 hand-write(7算子/7文件) ## 关联的Issue - Refs #5329 ## 测试 - UT op_api: 62/62 PASSED - UT op_kernel: 72/72 PASSED - UT op_host tiling: 全部通过 - Example eager: 16/17通过(foreach_mul_list为基线已有问题) - ST (ATK): foreach_lerp_scalar 201/201通过,其余16算子各3/3通过 - Pre-commit: 全部通过 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9494 | 16 天前 | |
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 6 天前 | |
refactor: activation/foreach 接口 const 正确性与宏分号规范清理 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !9692 merge cleanup/const-correctness-foreach-activation into master refactor: activation/foreach 接口 const 正确性与宏分号规范清理 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 变更说明 本 PR 对 activation/foreach 共 15 个文件做 const 正确性与宏规范清理,全部为纯签名/风格调整,**不改变任何运行时行为**(对应 #5467): ### 1. activation 7 算子:Check 系列函数输出 tensor 形参补 const 这些函数对输出 tensor 仅做只读检查(维度/shape/dtype),补 const 强化只读语义: - aclnn_logsoftmax_backward.cpp / aclnn_softmax_backward.cpp / aclnn_softmax.cpp 的 CheckShape - aclnn_selu_backward.cpp / aclnn_silu_backward.cpp 的 CheckDtypeValid/CheckShape(Valid) - aclnn_swish_backward.cpp 的 CheckShapeValid - aclnn_sigmoid.cpp 的 CheckInplaceDtypeValid ### 2. foreach 7 处执行接口:定义去除 top-level const 与声明对齐 头文件声明为 aclrtStream stream(无 const),.cpp 定义原为 const aclrtStream stream,统一为与声明一致: - foreach_addcdiv_scalar(含 V2)/ foreach_addcmul_scalar_v2 / foreach_maximum_scalar_v2 / foreach_minimum_scalar_v2 / foreach_mul_scalar_v2 / foreach_pow_scalar_v2 ### 3. FOREACH_OPDEF 宏去末尾分号 宏展开以 OP_ADD(...) 结尾却内带分号,历史调用方式为 FOREACH_OPDEF(...);(调用点自带分号),宏内分号导致展开后双分号。按多语句宏惯例由调用方提供分号。当前该宏无现存调用者(各 def 文件均已手写 class OpDef),修正零风险。 ### 附带 pre-commit end-of-file-fixer 自动补齐 aclnn_softmax.cpp 文件末尾换行(+1 行)。 ## 验证 - 13 个涉及算子(sigmoid/softmax_v2/softmax_grad/log_softmax_grad/silu_grad/swish_grad/selu_grad + foreach_addcdiv/addcmul/maximum/minimum/mul/pow_scalar)--pkg 完整编译通过(ascend910b,含 ophost+opapi+打包) - top-level const 与函数形参 const 均不参与 ABI 签名,无行为影响 Closes #5467 See merge request: cann/ops-nn!9692 | 12 天前 | |
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 6 天前 | |
fix(foreach_mul_scalar_list): 修复 int64 标量输入时 foreach_mul_scalar_list 精度问题 Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !9755 merge fix-int64 into master fix(foreach_mul_scalar_list): 修复 int64 标量输入时 foreach_mul_scalar_list 精度问题 Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复ForeachMulScalarList输入scalar类型为int64时错误转换导致的精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5509 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 修复后issue中必现失败用例精度通过,且全量自验用例精度通过。 冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260902_175402885 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9755 | 11 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
【日志质量】修复ForeachNonFiniteCheckAndUnscale算子日志语法错误(2条) Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9592 merge fix/foreach-nonfinite-log-issues into master 【日志质量】修复ForeachNonFiniteCheckAndUnscale算子日志语法错误(2条) Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 修改内容 修复 ForeachNonFiniteCheckAndUnscale 算子日志语法错误: - foreach_non_finite_check_and_unscale_tiling.cpp:2 处 "return failed" 动词形式错误改为 "returned failed" ## 自测 仅修改日志文案,不涉及功能逻辑变更 关联issue: #5398 See merge request: cann/ops-nn!9592 | 13 天前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 18 天前 | |
修复ForeachAbs,ForeachAddcdivScalarList性能问题 Co-authored-by: u010470851<shangguanqinnan@huawei.com> # message auto-generated for no-merge-commit merge: !9780 merge add_noftzmode into master 修复ForeachAbs,ForeachAddcdivScalarList性能问题 Created-by: u010470851 Commit-by: u010470851 Merged-by: cann-robot Description: ## 描述 修复ForeachAbs,ForeachAddcdivScalarList性能问题,修复ForeachPowList,ForeachTan精度问题,开启高精度计算 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联的Issue https://gitcode.com/cann/ops-nn/issues/5790 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已测试ForeachAbs,ForeachAddcdivScalarList,ForeachPowList,ForeachTan的算子用例,性能精度达标 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9780 | 3 天前 | |
refactor(foreach_pow): 清理arch35 pow算子SIMT浮点特判,直接调用powf Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !10177 merge master into master refactor(foreach_pow): 清理arch35 pow算子SIMT浮点特判,直接调用powf Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 清理arch35 pow算子SIMT浮点特判,直接调用powf <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5834 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10177 | 17 小时前 | |
refactor(foreach_pow): 清理arch35 pow算子SIMT浮点特判,直接调用powf Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !10177 merge master into master refactor(foreach_pow): 清理arch35 pow算子SIMT浮点特判,直接调用powf Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 清理arch35 pow算子SIMT浮点特判,直接调用powf <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5834 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10177 | 17 小时前 | |
refactor(foreach_pow): 清理arch35 pow算子SIMT浮点特判,直接调用powf Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !10177 merge master into master refactor(foreach_pow): 清理arch35 pow算子SIMT浮点特判,直接调用powf Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 清理arch35 pow算子SIMT浮点特判,直接调用powf <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5834 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10177 | 17 小时前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
modified md files(for readability improvement) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !9817 merge master into master modified md files(for readability improvement) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 modified md files(for readability improvement) ## 关联的Issue na ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9817 | 6 天前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
fix: 为foreach手写aclnn算子补充tensor list空元素检查 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !9494 merge fix/foreach-null-entry into master fix: 为foreach手写aclnn算子补充tensor list空元素检查 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 在CheckParams中CheckNotNull之后、CheckDtypeValid之前,遍历各个tensor list检查元素是否为nullptr,命中则返回ACLNN_ERR_PARAM_INVALID。 共涉及17个foreach算子,20个文件: - aclnn_exclude(10算子/13文件) - aclnn V2 hand-write(7算子/7文件) ## 关联的Issue - Refs #5329 ## 测试 - UT op_api: 62/62 PASSED - UT op_kernel: 72/72 PASSED - UT op_host tiling: 全部通过 - Example eager: 16/17通过(foreach_mul_list为基线已有问题) - ST (ATK): foreach_lerp_scalar 201/201通过,其余16算子各3/3通过 - Pre-commit: 全部通过 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9494 | 16 天前 | |
test(foreach): 补齐整型 UT 覆盖 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !10170 merge master into master test(foreach): 补齐整型 UT 覆盖 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增整型路径缺少对应 UT 覆盖。本 PR 为 foreach 系列算子(foreach_exp、foreach_expm1、foreach_sub_list、foreach_add_scalar 等)补充整型(int16/int8/uint8)单元测试覆盖:扩展公共 tiling 的 UB 划分以支持整型输入所需的中间缓冲,测试数据生成改为全量程随机以触发溢出回绕路径,并针对 ForeachExp/ForeachExpm1 的"整进浮出"(输出 float32)语义调整 kernel 测试输出与 golden 生成,同时新增 host 侧 infer_datatype 整型转浮点用例及 foreach_sub_list 的整型 kernel 用例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5618](https://gitcode.com/cann/ops-nn/issues/5618) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试用例补充 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10170 | 4 天前 | |
fix(foreach,lamb,scatter_list): ForeachAddc*List 补 Div 0ULP 精度档 + LambApplyOptimizerAssign 支持面订正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10142 merge fix/tp-fused-and-scatterlist-doc into master fix(foreach,lamb,scatter_list): ForeachAddc*List 补 Div 0ULP 精度档 + LambApplyOptimizerAssign 支持面订正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 本 PR 包含三组修复,均由 TTK 三方精度比对(cross_check)跑批暴露的红灯定位而来。 ### 1. ForeachAddcmulList / ForeachAddcdivList:补 Div 0 ULP 精度档(内核) foreach/foreach_utils/op_kernel/arch35/foreach_addc_list_regbase.h 中的 Div 此前未指定 DivConfig,落到缺省 DivAlgo::INTRINSIC——该档在 dav-3510 上仅保真到 1 ULP。 - 实测 fp32 用例 **23689/524288(4.52%)** 元素与正确舍入结果相差 1 ULP - 在 x1 与 scalars*(x2/x3) 几乎相消的点上,该偏差被放大成上千 ULP 的相对误差,cross_check 的 mare 判据因此报红(实测 mare 29.87 > L1 阈值 5.0) - 显式改用 DivAlgo::PRECISION_0ULP_FTZ_TRUE 后,输出与正确舍入结果**逐位相同(0/524288)** 仓内 20/22 处显式 Div 配置均选 0ULP 档,本文件此前漏配;兄弟算子 foreach_div_list_inplace 已修过同一问题。addcmul 走 Mul 分支不受影响;ComputeIntPath 的整数 Div 未改。 ### 2. LambApplyOptimizerAssign:支持面订正(资料 + host 校验 + UT) 原 README 声明 grad 与 input3 均可小于 inputv/inputm 并向上广播,但底层 Ops::Base 广播模板的 DoDimensionCollapse **不支持对 In0(即 grad)做广播**: - grad 为标量时 EnsureNotScalar 只抬到 {1}、不左补 1 对齐输出 rank → The 1 input's dim num is not same with output's dim num - grad 与输出同 rank 但某维为 1 → The 1 input's dim index is not same with out, and not 1 - 实测支持面矩阵:grad 在任意单维广播均被拒;input3 支持 () / (1,) / (1,1,1) / (4,) / (1,3,4) / (2,1,4),仅 rank 大于输出时不支持 改动: - README 订正为「grad/inputv/inputm 三者 shape 必须完全相同,仅 input3 按右对齐 broadcast 规则向 inputv 对齐」 - infershape 与 tiling 的 CheckInplaceShapeConstraint 同步改为严格等形,使非法组合在 host 阶段被清晰拒绝,而不是放行后到 tiling 阶段抛 E90003 - infershape 三处 shape 校验统一改用结构化日志宏 OP_LOGE_FOR_INVALID_SHAPE(S)_WITH_REASON,与 tiling 侧口径一致 - UT 同步更新:原 moment_shape_decides_output_shape 断言的是旧广播语义,已改为等形;新增 grad_smaller_than_moment_is_rejected 与 input3_broadcast_into_moment_is_accepted ### 3. 三方腿与资料订正(golden / docs) - foreach_add_list_inplace / foreach_sub_list_inplace 的三方腿改用两步拼接(_foreach_mul + _foreach_add),不再用 alpha= 的融合形式。融合形式是一次 FMA 舍入,与 CPU golden 的两步舍入序列不同,两者恒差 1 ULP:实测 107/107 例 |NPU−真值| + |三方−真值| 精确等于 1.0000 ULP,mare 恒为 1.000。分离后三个种子(0/1/7)各 20/20 全通过。 - foreach_addcmul_list / foreach_addcdiv_list 的 golden 补 e2e 三方腿适配类 _TpE2e(TTK 按 torch 重载形参名 self/tensor1/tensor2/scalars 下发,与 def 注册名 x1/x2/x3/scalars 不同,直接复用 kernel 腿竞品类会抛 UnknownParamError);并**标注这两个算子实际不具备 e2e 通路支持**——aten::_foreach_addc{mul,div}.Tensor 在追踪期即抛 Expected scalars to be on CPU,torch.compile 建不了图,torchair converter 走不到,需手工给已安装的 torch_npu 补 meta 注册才能跑通,该补丁不在本仓、重装即失效,故不作为已交付通路。 - ScatterList 资料补 maskOptional 取值范围,并修正 mask 维度列笔误(0-8 → 1 维);aclnnScatterMin 补索引取值范围;op_api_list 补 ForeachAddcmul/AddcdivList 的确定性说明。 ## 关联的Issue 关联 Issue #5750 —— https://gitcode.com/cann/ops-nn/issues/5750 ## 测试 - **LambApplyOptimizerAssign op_host UT**:bash build.sh -u --ops=lamb_apply_optimizer_assign --soc=ascend950 → **14/14 PASSED**(含 2 条新增用例) - **Div 精度档位(JIT 在线编译,源码级 A/B)**:同用例同区间下,改前 23689/524288(4.518%)元素偏离正确舍入,改后 **0/524288** - **部署二进制验证(重新出包 + 部署,确认被测 == 当前源码)**:ForeachAddcdivList 在 kernel / aclnn / GE 图三条通路上 mare = mere = rmse = 1(即与 golden 逐位相同) - **LambApplyOptimizerAssign 支持面矩阵(静态 GE 通路)**:grad 等形 + input3 降 rank 用例 PASS;grad 标量 / grad 含 1 维用例在 host 阶段被拒,报错文案为 Parameter grad of op1 has incorrect shape [1]. Reason: grad does not support broadcast and must have exactly the same shape as inputv/inputm - **pre-commit**:clang-format / ruff-check / ruff-format / codespell / trailing-whitespace / end-of-file-fixer 本地全部通过 - ⚠️ **待补**:foreach_addcdiv_list(1437 例)与 lamb_apply_optimizer_assign 泛化集回归正在跑批中,结果将补充到本 PR 评论 ## 文档更新 - optim/lamb_apply_optimizer_assign/README.md:输入/输出 shape 描述与《约束说明》改写 - index/scatter_list/README.md、index/scatter_list/docs/aclnnScatterList.md:mask 取值范围与维度笔误订正 - docs/zh/op_api_list.md:补 ForeachAddcmul/AddcdivList 确定性说明 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10142 | 4 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10093 merge fix/foreach-aclnn-tp-binding into master fix(foreach): 修复八个 inplace 算子 aclnn 通路三方腿按名绑定失败 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复 foreach 八个 inplace 算子在 **aclnn 通路**上三方腿按名绑定失败的问题。 该缺陷导致这八个算子 aclnn 通路的 cross_check 判据**从未生效**——三方腿一次都没起来, 结果恒为 GOLDEN_FAILURE,即该通路的精度实际上从未被验证。 ### 根因 TTK 的 aclnn 通路对 third_party 是**按名绑定**,入参池的 key 取自 **aclnn 头文件形参名**: core_modules/npu/op_api/profiling.py::_aclnn_xpu_input_names -> OpApiInfoKeeper().info_of(api_name).tensors # 解析 aclnn 头文件 remote/server/executor.py::_invoke -> _bind -> remote/server/execution_container.py::bind_params # 按名取, 取不到即抛 而 golden 的 AclnnSpec.third_party 直接复用了 kernel 通路的竞品类 _TpKernelFaithful, 其签名是 **def 注册名** x / x1。inplace 算子的 aclnn 头文件则把首个被原地改写的形参 写作**带 Ref 后缀**的名字(实测 CANN 9.2.0 内置头): | aclnn 接口 | 头文件形参(pool key) | golden 三方腿签名 | |---|---|---| | aclnnForeachACosInplace | ['xRef'] | ['x'] | | aclnnForeachLogInplace | ['xRef'] | ['x'] | | aclnnForeachMulScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachSubScalarInplace | ['xRef', 'scalar'] | ['x', 'scalar'] | | aclnnForeachMulListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachDivListInplace | ['x1Ref', 'x2'] | ['x1', 'x2'] | | aclnnForeachAddListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | | aclnnForeachSubListInplace | ['x1Ref', 'x2', 'alpha'] | ['x1', 'x2', 'alpha'] | 八个算子无一匹配,服务端抛 UnknownParamError 并以 400 返回。 ### 为何一直没被发现 客户端把这个 400 吞成了连通性告警,日志读起来像是三方端点挂了: [WARNING] profiling.py:2067: cross_check configured but no third_party output (no XPU / endpoint down); cross_check outputs will GOLDEN_FAILURE 实际端点正常、请求也发出去了,是被服务端以 400 拒绝: [ERROR] executor.py:1019: request failed: bad params (api=ForeachMulScalarInplaceAclnnSpec): parameter 'x' of _TpKernelFaithful.__call__ is not a known input or attribute name xpu_server.py:555: _handle_run client-err: status=400 172.17.0.1 - "POST /v1/run HTTP/1.1" 400 - 同类对照:scatter_max/min/mul/div 的 golden 为 aclnn 通路另写了适配类 (def __call__(self, varRef, indices, updates),形参名取自头文件),故不受影响、一直 PASS。 ### 修改内容 1. **按头文件形参名另立 _TpAclnn 适配类**,内部转调同一个竞品类 _TpKernelFaithful, **不改变任何竞品语义**,只做形参名适配: python class _TpAclnn: def __call__(self, xRef, scalar, **kwargs): return _TpKernelFaithful()(xRef, scalar) class ForeachMulScalarInplaceAclnnSpec: third_party = {"torch": _TpAclnn} # 原为 _TpKernelFaithful 2. **订正两处已失效的注释**——其中一条正是当初未做适配的原因: -【预留】TTK 的 aclnn 通路当前不取用 third_party(仅 kernel/GEIR 取用), 写在此处不生效 - 也无副作用; 待该通路支持三方后自动接上。 + aclnn 通路同样取用 third_party(按名绑定), 见下方 _TpAclnn。 - third_party 走按名绑定(pool 的 key 取自头文件形参名), 复用 kernel 通路的竞品类 - ——其形参名即 def 注册名, 与头文件一致。 + third_party 走按名绑定(pool 的 key 取自头文件形参名), 因该名与 def 注册名不同, + 另由 _TpAclnn 适配后转调同一个竞品类。 涉及算子(8 个):foreach_a_cos_inplace / foreach_log_inplace / foreach_add_list_inplace / foreach_sub_list_inplace / foreach_mul_list_inplace / foreach_div_list_inplace / foreach_mul_scalar_inplace / foreach_sub_scalar_inplace 仅改 tests/assets/golden.py,**不涉及任何算子实现代码**。 ## 验证 | 项 | 修复前 | 修复后 | |---|---|---| | 三方腿按名绑定 | 8/8 失败(服务端 400 UnknownParamError) | 8/8 成功 | | aclnn 用例判定 | 8/8 GOLDEN_FAILURE / FAIL | **8/8 PASS** | | GPU 侧 UnknownParamError 新增 | 每算子必产生一条 | **零新增** | | CI 门禁 | — | ruff check / ruff format 均通过 | 八个算子逐一复测,cross_check 判据首次真实生效。 关联 Issue #5691 See merge request: cann/ops-nn!10093 | 6 天前 | |
解决foreach类算子-c vec_error问题 Co-authored-by: 张煜炜<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !9898 merge pr_9742 into master 解决foreach类算子-c vec_error问题 Created-by: surezz Commit-by: 张煜炜 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach类部分算子 -c=true 存在的vec_error问题 问题根因:const模式在编译期计算了tiling结果,在运行期是tiling指针为无效地址,在process中解引用是访问内存越界,导致VEC_ERROR 修改方法:process中传入GET_TILING_DATA_WITH_STRUCT生成的tilingData,同时将VF中的数组遍历放到process中处理,仅向VF传入tensor标量和tensor GM指针 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5685 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 对修改的27个算子进行黄区门槛用例三方批跑,-d、-b无功能回退,-c功能修复正常,david冒烟、二级冒烟均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9898 | 5 天前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
fix(foreach,lamb,scatter_list): ForeachAddc*List 补 Div 0ULP 精度档 + LambApplyOptimizerAssign 支持面订正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10142 merge fix/tp-fused-and-scatterlist-doc into master fix(foreach,lamb,scatter_list): ForeachAddc*List 补 Div 0ULP 精度档 + LambApplyOptimizerAssign 支持面订正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 本 PR 包含三组修复,均由 TTK 三方精度比对(cross_check)跑批暴露的红灯定位而来。 ### 1. ForeachAddcmulList / ForeachAddcdivList:补 Div 0 ULP 精度档(内核) foreach/foreach_utils/op_kernel/arch35/foreach_addc_list_regbase.h 中的 Div 此前未指定 DivConfig,落到缺省 DivAlgo::INTRINSIC——该档在 dav-3510 上仅保真到 1 ULP。 - 实测 fp32 用例 **23689/524288(4.52%)** 元素与正确舍入结果相差 1 ULP - 在 x1 与 scalars*(x2/x3) 几乎相消的点上,该偏差被放大成上千 ULP 的相对误差,cross_check 的 mare 判据因此报红(实测 mare 29.87 > L1 阈值 5.0) - 显式改用 DivAlgo::PRECISION_0ULP_FTZ_TRUE 后,输出与正确舍入结果**逐位相同(0/524288)** 仓内 20/22 处显式 Div 配置均选 0ULP 档,本文件此前漏配;兄弟算子 foreach_div_list_inplace 已修过同一问题。addcmul 走 Mul 分支不受影响;ComputeIntPath 的整数 Div 未改。 ### 2. LambApplyOptimizerAssign:支持面订正(资料 + host 校验 + UT) 原 README 声明 grad 与 input3 均可小于 inputv/inputm 并向上广播,但底层 Ops::Base 广播模板的 DoDimensionCollapse **不支持对 In0(即 grad)做广播**: - grad 为标量时 EnsureNotScalar 只抬到 {1}、不左补 1 对齐输出 rank → The 1 input's dim num is not same with output's dim num - grad 与输出同 rank 但某维为 1 → The 1 input's dim index is not same with out, and not 1 - 实测支持面矩阵:grad 在任意单维广播均被拒;input3 支持 () / (1,) / (1,1,1) / (4,) / (1,3,4) / (2,1,4),仅 rank 大于输出时不支持 改动: - README 订正为「grad/inputv/inputm 三者 shape 必须完全相同,仅 input3 按右对齐 broadcast 规则向 inputv 对齐」 - infershape 与 tiling 的 CheckInplaceShapeConstraint 同步改为严格等形,使非法组合在 host 阶段被清晰拒绝,而不是放行后到 tiling 阶段抛 E90003 - infershape 三处 shape 校验统一改用结构化日志宏 OP_LOGE_FOR_INVALID_SHAPE(S)_WITH_REASON,与 tiling 侧口径一致 - UT 同步更新:原 moment_shape_decides_output_shape 断言的是旧广播语义,已改为等形;新增 grad_smaller_than_moment_is_rejected 与 input3_broadcast_into_moment_is_accepted ### 3. 三方腿与资料订正(golden / docs) - foreach_add_list_inplace / foreach_sub_list_inplace 的三方腿改用两步拼接(_foreach_mul + _foreach_add),不再用 alpha= 的融合形式。融合形式是一次 FMA 舍入,与 CPU golden 的两步舍入序列不同,两者恒差 1 ULP:实测 107/107 例 |NPU−真值| + |三方−真值| 精确等于 1.0000 ULP,mare 恒为 1.000。分离后三个种子(0/1/7)各 20/20 全通过。 - foreach_addcmul_list / foreach_addcdiv_list 的 golden 补 e2e 三方腿适配类 _TpE2e(TTK 按 torch 重载形参名 self/tensor1/tensor2/scalars 下发,与 def 注册名 x1/x2/x3/scalars 不同,直接复用 kernel 腿竞品类会抛 UnknownParamError);并**标注这两个算子实际不具备 e2e 通路支持**——aten::_foreach_addc{mul,div}.Tensor 在追踪期即抛 Expected scalars to be on CPU,torch.compile 建不了图,torchair converter 走不到,需手工给已安装的 torch_npu 补 meta 注册才能跑通,该补丁不在本仓、重装即失效,故不作为已交付通路。 - ScatterList 资料补 maskOptional 取值范围,并修正 mask 维度列笔误(0-8 → 1 维);aclnnScatterMin 补索引取值范围;op_api_list 补 ForeachAddcmul/AddcdivList 的确定性说明。 ## 关联的Issue 关联 Issue #5750 —— https://gitcode.com/cann/ops-nn/issues/5750 ## 测试 - **LambApplyOptimizerAssign op_host UT**:bash build.sh -u --ops=lamb_apply_optimizer_assign --soc=ascend950 → **14/14 PASSED**(含 2 条新增用例) - **Div 精度档位(JIT 在线编译,源码级 A/B)**:同用例同区间下,改前 23689/524288(4.518%)元素偏离正确舍入,改后 **0/524288** - **部署二进制验证(重新出包 + 部署,确认被测 == 当前源码)**:ForeachAddcdivList 在 kernel / aclnn / GE 图三条通路上 mare = mere = rmse = 1(即与 golden 逐位相同) - **LambApplyOptimizerAssign 支持面矩阵(静态 GE 通路)**:grad 等形 + input3 降 rank 用例 PASS;grad 标量 / grad 含 1 维用例在 host 阶段被拒,报错文案为 Parameter grad of op1 has incorrect shape [1]. Reason: grad does not support broadcast and must have exactly the same shape as inputv/inputm - **pre-commit**:clang-format / ruff-check / ruff-format / codespell / trailing-whitespace / end-of-file-fixer 本地全部通过 - ⚠️ **待补**:foreach_addcdiv_list(1437 例)与 lamb_apply_optimizer_assign 泛化集回归正在跑批中,结果将补充到本 PR 评论 ## 文档更新 - optim/lamb_apply_optimizer_assign/README.md:输入/输出 shape 描述与《约束说明》改写 - index/scatter_list/README.md、index/scatter_list/docs/aclnnScatterList.md:mask 取值范围与维度笔误订正 - docs/zh/op_api_list.md:补 ForeachAddcmul/AddcdivList 确定性说明 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10142 | 4 天前 | |
fix(arch35): scatter 类补 AutoContiguous;LambApplyOptimizerAssign infershape 与 tiling 对齐;foreach inplace 与 ScatterList 资料订正 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8767 merge fix/scatter-noncontig-and-lamb-infershape into master fix(arch35): scatter 类补 AutoContiguous;LambApplyOptimizerAssign infershape 与 tiling 对齐;foreach inplace 与 ScatterList 资料订正 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 长尾算子问题优化:scatter 类补 AutoContiguous;LambApplyOptimizerAssign infershape 与 tiling 对齐;foreach inplace 与 ScatterList 资料订正 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4865 ## 测试 不涉及 ## 文档更新 README ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8767 | 27 天前 | |
License Change Split2 Co-authored-by: huohuo_wy<wangyan389@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge spilitLicense3 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!372 | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 天前 | ||
| 4 天前 | ||
| 5 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 18 天前 | ||
| 3 天前 | ||
| 17 小时前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 10 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 16 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 16 天前 | ||
| 6 天前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 5 天前 | ||
| 10 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 18 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 18 天前 | ||
| 5 天前 | ||
| 10 天前 | ||
| 16 天前 | ||
| 6 天前 | ||
| 12 天前 | ||
| 6 天前 | ||
| 11 天前 | ||
| 5 天前 | ||
| 13 天前 | ||
| 18 天前 | ||
| 3 天前 | ||
| 17 小时前 | ||
| 17 小时前 | ||
| 17 小时前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 天前 | ||
| 27 天前 | ||
| 8 个月前 |