Pull Request has been successfully merged by CANN-robot.
(Thank you for raoliang_sac's contribution.)变更摘要
本 PR 将 L2Normalize 与 INTrainingReduceV2 两个算子的图推导迁移从原 PR 中拆出,核心是把图编译期的推导职责从旧式 V1 注册改为 Runtime 2.0 接口:L2Normalize 删除 COMMON_INFER_FUNC_REG,改由 VERIFY_FUNC_REG 承载声明阶段校验,并在 InferShape 中补充格式与空 context 校验;INTrainingReduceV2 删除 op_graph 中自带的 V1 shape 实现与注册,仅保留 Runtime 2.0 的 shape/dtype 推导。配套清理了 tiling/kernel 中对已不存在的 DESIGN/spec 引用,并新增/调整 Graph UT、Host UT 及 GEIR 示例的数值校验。
主要改动
L2Normalize推导入口由 V1 改为 Verify:l2_normalize_graph_infer.cpp删除L2NormalizeGraphInferFunc与COMMON_INFER_FUNC_REG注册,改为实现VerifyL2Normalize并注册VERIFY_FUNC_REG,在推导覆盖输出描述前校验原始声明的 shape、dtype、rank 与 ND 格式。L2NormalizeInferShape 增加格式与空 context 校验:l2_normalize_infershape.cpp新增IsSupportedFormat判断,要求输入/输出为FORMAT_ND或FORMAT_RESERVED,并对context及输入输出 tensor desc 做空检查;InferDataTypeForL2Normalize增加空 context 返回GRAPH_FAILED。INTrainingReduceV2删除旧式 V1 shape 实现:in_training_reduce_v2_graph_infer.cpp移除INTrainingReduceV2LegacyV1InferShape及对应COMMON_INFER_FUNC_REG,仅保留 Runtime 2.0 推导逻辑。- 补充与调整 UT 覆盖新推导行为:新增
test_l2_normalize_graph_infer_pass.cpp验证 dtype 透传、输出描述覆盖及 Verify 对冲突 shape/dtype/非 ND 格式/标量或超 8 维的拒绝;test_in_training_reduce_v2_graph_infer_pass.cpp新增注册入口的格式/rank、动态维、非法输入与重复推导覆盖用例;Host UT 增加重复输出 shape、未知/部分 shape 及非 ND 格式用例。 - GE 示例与注释清理:
test_geir_l2_normalize.cpp新增CheckOutput,校验唯一输出的 shape、dtype、缓冲区大小与全部数值(全 1 输入期望 0.25,拒绝非有限值及误差超 1e-6);tiling/kernel 与 UT 注释中删除DESIGN/spec引用并改为描述实际实现。
🧩 本次 Review 已使用自定义 Skill:




Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| norm | ✅ 陈展熹, 钱泽洪 (2/2) | ✅ 陈展熹, 钱泽洪 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
raoliang_sac, thanks for your pull request. All authors of the commits have signed the CLA. 👍


compile


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


您好,pr合入已准备就绪,请尽快联系committer进行检视,谢谢!
@fanqirui @u010470851 @wang-xing001 @wangrui_ @yangyang016 @kevin_huang1234 @qianzehong @liujie12345678


/approve


描述
从 https://gitcode.com/cann/ops-nn/pull/12376 独立拆出L2Normalize与INTrainingReduceV2的全部18个变更文件;原PR保留SGD、Relu6Grad、NormalizeBBox。本PR直接基于主仓master,不需要先合入#12376。
L2Normalize
add_op_subdirectory()自动带入生产Host配置的问题:在文件开头判断是否作为顶层工程配置,嵌套加载时直接返回;独立示例继续检查并链接GE库。解决源码集成Host配置意外查找已安装libgraph.so的报错,不修改公共扫描宏。INTrainingReduceV2
L2Normalize的canndev旧注册隔离依赖 https://gitcode.com/cann/canndev/pull/82602;INTrainingReduceV2的canndev隔离已在主线,本PR删除其原生V1。需要在包含配套修改的CANN中验证,不要求等待官方发布包。
关联的Issue
https://gitcode.com/cann/ops-nn/issues/6956
测试
fcf476d309601677497a93823edbeff8c8e5dbfb。按路径分割后,两个分支重组的Git tree和完整binary diff与原提交一致,没有丢失或增加改动。579aede0519a1c70364ec49c5c78591f6fb7eff4,拆分时各自patch不变。随后仅对L2示例CMake增加5行入口隔离保护;当前单提交为c58fe381c3e87fff5cddf938fae27171f41f61c0。pre-commit/OAT及diff检查通过。add_op_subdirectory()宏构造配置探针:旧CMake在未提供安装CANN的目录下复现GRAPH_LIBRARY/libgraph.so首错;修复后同条件配置通过,未产生示例目标。该探针隔离了源码收集函数,不作为完整Host编译结果。72537d736a7d3d9a06f231c17cd613404f7cd9ed:加载真实本地CANN时,新增检查仍拦住旧代码、允许修复代码;56项Python回归及完整工具shell回归通过。独立构建缺GE库仍正确失败,保护不会让独立示例空跑。0415d02e的INTrainingReduceV2 6条、L2Normalize 7条GEIR用例,各执行静态/动态路径;L2的2条空Tensor只计执行/shape。L2原始声明shape不一致和标量输入均由真实GE校验拒绝。该历史结果不能代替当前完整迁移的配套CANN集成验证。文档更新
仅带走这两个算子的相关源码/测试注释,无README新增章节或冗余编译命令。
类型标签
AI/Agent生成声明