| Files | Last commit | Last update |
|---|---|---|
fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Co-authored-by: Hana77<wangtianqi27@huawei.com> # message auto-generated for no-merge-commit merge: !6802 merge mm into master fix: [maximum_grad/minimum_grad] golden 三方标杆与 e2e 通路统一为 tf.function 纯反向口径 Created-by: Hana77 Commit-by: Hana77 Merged-by: cann-robot Description: ## 描述 修正 maximum_grad / minimum_grad 测试资产(tests/assets/golden.py 三方标杆与 *_e2e.py e2e 通路)中浮点反向的实现与计时口径。 ### 改动原因 - 旧实现浮点路径每次调用裸起 tf.GradientTape,前向(maximum/minimum 与 Mul)随反向一同进入执行与计时窗口,GPU 三方标杆采集的 device_us 并非纯反向耗时,与 NPU 侧 e2e 通路口径不对称。 - 旧 e2e 实现为规避 npu_device 动态图 GE 会话模型缓存按算子节点名复用导致的常量串台问题,每次调用都以唯一 name_scope 强制 graph_id 错开,代价是每次调用重新编译,同签名用例无法共享已编译图。 ### 改动方法 - **golden.py(三方标杆)**:浮点路径改为 tf.function 包裹的 tape 反向,只返回梯度,前向为死代码被剪除,计时窗口纯反向;int32 无梯度定义,抽出手拼分支(GreaterEqual/LessEqual + SelectV2×2 + Sum,与 golden 同口径)。 - **\*_e2e.py(e2e 通路)**:浮点路径改为 tf.function 包裹的 tape 反向且只返回梯度,NPU 执行纯反向链(融合后 te_maximumgrad/te_minimumgrad + te_reducesum),与 GPU 侧标杆口径对称;tf.function 按 (shape,dtype) 签名缓存 concrete function,同签名共享编译图(输入为 placeholder,无常量串台),跨签名 trace 时以 _TRACE_SEQ 唯一化 name_scope 错开 graph_id;int32 保留手拼路径。 - numpy golden(kernel/geir 通路 oracle)与精度判据(binary_equal、三比值)不变;融合规则的 gradient_tape scope 检查按名字分段匹配,前缀不影响。 ## 关联的Issue - #4204 ## 测试 - 变更仅涉及 tests/assets 测试资产,不改动算子实现(op_host/op_kernel/op_graph)。 - 验证方式:复用进程批跑 maximum_grad / minimum_grad 的 e2e 用例,确认浮点 golden 三比值 cross_check 通过、int32 binary_equal 通过、device_us 采集正常且同签名用例不重复触发编译。 ## 文档更新 - 无(不涉及 README / docs 变更)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6802 | 15 days ago | |
test: 同步 Math BRC 零 workspace 的 Host UT 期望值 Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !6242 merge fix/ascend950-vector-workspace into master test: 同步 Math BRC 零 workspace 的 Host UT 期望值 Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 修改内容 仅同步公共 BroadcastBaseTiling(BRC)workspace 清零所影响的 Host UT:把成功 BRC 用例的 workspace 期望由 16777216(16 MiB)改为 0。 共修改 38 个已有 UT 文件,228 行增加、228 行删除,全部为上述 workspace 字面值替换。无生产代码、kernel、CMake、公共 UT 框架、依赖版本或失败用例修改;分支保持一次提交。 ## Major 意见核对与处理 opbase #1007 在 BroadcastBaseTiling::DoTiling 公共成功出口写入 DEFAULT_TILING_WORKSPACE_SIZE=0,默认 kernel type 同样受影响,并非可排除条件。结合本地 opbase 与当前 ops-math 源码,逐项处理如下: | 算子 | 本 PR 处理 | 保留原期望的依据 | | --- | --- | --- | | AddV2 | 生产文件及 UT 均保持主线原样 | BRC 返回后 SetWorkspace 显式按 CompileInfo/平台信息重新申请 workspace,最终结果仍为 16 MiB;不能仅改 UT 为 0。 | | LeftShift | 8 个成功用例改为 0 | 另 1 个失败用例的占位期望不参与 workspace 检查,保持原样。 | | RightShift | 10 个成功用例改为 0 | 另 2 个失败用例同上,保持原样。 | | MaximumGrad | 7 个成功 BRC 用例改为 0 | 另 4 个空张量用例走 HandleEmptyTensor 独立分支,仍显式申请系统 workspace,保留 16 MiB。 | | MinimumGrad | 7 个成功 BRC 用例改为 0 | 同上,另 4 个空张量独立分支保留 16 MiB。 | | MaskedFill | 7 个成功 BRC 用例改为 0 | 无遗漏。 | | TruncateDiv | 6 个成功 BRC 用例改为 0 | 原有两个 0 是失败用例,不是非 BRC 成功路径;保持原样。 | 全仓扫描发现的另外三组遗漏也已补齐:FusedMulAdd(10 处)、FusedMulAddAdd(10 处)、MulNoNan(11 处)。上述新增补齐共 9 个文件、76 处。其余原有 UT 中仅属于失败用例的 8 处占位值修改也已撤回,避免无关修改。 ## 本地验证(2026-11-05) 最终提交: ae55efaba。 环境:aarch64、GNU 9.4.0、CANN 9.2.0(用户目录安装)、目标 ascend950。使用仓库默认固定 opbase 8e8cf1b60b28bc1f8aaa1652fe054ac7e35d5852,未叠加本地 opbase 补丁。 - 最终 UT-only 版本已重新编译、最终链接并运行 math_op_host_ut:**548/548 测试通过,78 个测试套件,构建退出码 0**。范围包括全部 38 个变更算子,以及保持原样的 AddV2,共 39 个算子;保留 16 MiB 的 AddV2/梯度空张量用例也实际通过。 - 逐字节检查全部 38 个变更文件,仅存在 {16777216} → {0} 的替换;失败用例无差异,AddV2 无差异。 - 按原有 CRLF 换行格式执行差异空白检查,通过。 - 扫描仓库 50 个直接 BRC Host 消费算子,核对剩余 16 MiB 用例及上述独立分支。 最终复测日志:/tmp/pr6242-ut-only-final.log。日志含复用构建目录产生的 gcov profile 时间戳提示;测试和构建均成功,本次不提供覆盖率结论。Host UT 不替代设备 kernel 精度、性能或越界验证;本轮未执行设备测试。 ## 关联 PR - [opbase #1007](https://gitcode.com/cann/opbase/pull/1007):已合入的公共 BRC workspace 清理。 - [ops-math #6711](https://gitcode.com/cann/ops-math/pull/6711):已合入独立实现路径清理及其 4 个 UT 文件。已同步包含该修改的主线,上述 10 个文件不在本 PR 差异中。 See merge request: cann/ops-math!6242 | 9 days ago |