Closed
[Requirement|需求建议]: 整仓迁移 op_common 废弃日志宏至新宏 #7092
chenyifanAdd on  11 days agoClosed at  5 days ago
chenyifan
chenyifan
11 days ago Create

Backgroud(背景信息)

third_party/opbase 中 op_common/log/log.h 已将部分校验日志宏标记为废弃,并在文档中给出替代接口。ops-transformer 仓内 Host / OPAPI / experimental 等路径仍大量使用旧宏,若不提前完成迁移,后续接口日落删除后将导致整仓编译失败,并与 opbase 错误码规范不一致。

本次需统一替换以下废弃宏(参数签名与替代宏一致,仅切换宏名及对应错误码/日志文案):

废弃宏 替代宏
OP_LOGE_WITH_INVALID_ATTR OP_LOGE_FOR_INVALID_VALUE
OP_LOGE_WITH_INVALID_ATTR_SIZE OP_LOGE_FOR_INVALID_LISTSIZE
OP_LOGE_WITH_INVALID_INPUT_FORMAT OP_LOGE_FOR_INVALID_FORMAT
OP_LOGE_WITH_INVALID_INPUT_DTYPE OP_LOGE_FOR_INVALID_DTYPE

涉及范围:mc2/、moe/、ffn/、experimental/ 等调用 log/log.h(即 op_common/log/log.h)的业务源码。

Benefit / Necessity (价值/作用)

  1. 兼容性:提前脱离废弃 API,降低 opbase 版本升级后的编译与合入风险。
  2. 规范统一:新宏使用统一的 Parameter 语义与新错误码(如 EZ0024 / EZ0025 / EZ0017 / EZ0019),便于问题定位与跨仓对齐。
  3. 可维护性:清理技术债,避免新旧宏混用;全仓同一套日志上报路径。
  4. 应用场景:所有依赖 opbase 日志宏做属性/参数/格式/dtype 校验失败上报的算子 Host、tiling、aclnn 实现。

Design(设计方案)

总体思路:按文档推荐做一对一宏名替换,不改校验分支与业务逻辑。

1. 对照 opbase 文档确认废弃宏 → 替代宏映射及参数列表(均为 4 参,可直接替换)
2. 以 oldapilist / 全仓检索定位调用点
3. 精确替换(注意词边界,避免 ATTR 误伤 ATTR_SIZE)
4. 静态核对:
   - 业务源码中旧宏残留为 0
   - 新宏在 log.h 中均有定义
   - 参数个数未变
5. 同步 commit 说明;如有依赖旧文案/旧错误码的 UT,按需适配

映射示例:

// before
OP_LOGE_WITH_INVALID_ATTR(opName, "scale_alg", std::to_string(v), "0 or 1");
OP_LOGE_WITH_INVALID_ATTR_SIZE(opName, "active_expert_range", std::to_string(len), "2");
OP_LOGE_WITH_INVALID_INPUT_FORMAT(opName, "x1", actualFmt, "ND");
OP_LOGE_WITH_INVALID_INPUT_DTYPE(opName, "bias", actualDt, "FLOAT16/BF16");

// after
OP_LOGE_FOR_INVALID_VALUE(opName, "scale_alg", std::to_string(v), "0 or 1");
OP_LOGE_FOR_INVALID_LISTSIZE(opName, "active_expert_range", std::to_string(len), "2");
OP_LOGE_FOR_INVALID_FORMAT(opName, "x1", actualFmt, "ND");
OP_LOGE_FOR_INVALID_DTYPE(opName, "bias", actualDt, "FLOAT16/BF16");

说明:错误码与日志文案随新宏变化属预期(例如 ATTR→VALUE:EZ0002→EZ0024);不引入行为逻辑变更。

likedislike
chenyifan
chenyifan
11 days ago Comments:

/assign @mutex_lock

likedislike
CANN-robotCANN-robotCollaborators
11 days ago Assign mutex_lock as responsible person
chenyifanchenyifan
11 days ago Change title to "[Requirement|需求建议]: 整仓迁移 op_common 废弃日志宏至新宏", originally titled "[Requirement|需求建议]: ".
周云飞
周云飞Collaborators
11 days ago Comments:

感谢提出这项迁移建议。按您描述的废弃计划,提前迁移有助于降低 opbase 后续删除旧宏时的编译风险,也能减少新旧日志规范并存带来的维护成本。这属于兼容性维护需求,目前不能据此判断现有版本已经存在编译故障。

迁移方向

可以以您列出的四组宏映射为候选方案,在确认目标 opbase 版本中的宏定义、参数顺序和参数含义一致后,对业务调用点做精确替换。范围应覆盖 Host、tiling、OPAPI 和 experimental 等实际使用这些宏的位置,不宜仅限于列举的几个目录;同时应避免将 OP_LOGE_WITH_INVALID_ATTR_SIZE 误匹配为 OP_LOGE_WITH_INVALID_ATTR。

迁移应保留原有校验条件、参数求值方式和失败返回值。错误码与日志文案的变化需要单独核对:日志中的 EZ 错误码不等同于公开 API 返回码,不能因为更换日志宏而连带修改接口返回值。对于依赖旧错误码或文案的单元测试、日志解析规则,也需要评估适配成本。

验证边界

目前缺少目标 opbase 的 log.h 定义及对应废弃说明,尚不能确认四组宏都可以仅改名替换,也无法确认整仓调用点数量和删除时间。一个可行的验收方式是:确认业务源码中这四类旧宏无残留,在目标依赖版本下编译通过,并验证相关校验失败场景的日志变化符合预期、接口返回值保持不变。若仍需兼容尚未提供新宏的旧版 opbase,则需要先明确最低依赖版本,再选择直接迁移或过渡兼容方案。

likedislike
CANN-robotCANN-robotCollaborators
5 days ago Close issue
CANN-robotCANN-robotCollaborators
5 days ago Added label: resolved
周云飞
周云飞Collaborators
5 days ago Comments:

关闭总结

PR #15263 已合入,对废弃日志宏进行了迁移。例如,将属性值校验中的 OP_LOGE_WITH_INVALID_ATTR 替换为 OP_LOGE_FOR_INVALID_VALUE,将属性列表长度校验中的 OP_LOGE_WITH_INVALID_ATTR_SIZE 替换为 OP_LOGE_FOR_INVALID_LISTSIZE,调用参数和相关校验逻辑保持不变。

新宏可能带来错误码及日志文案变化。

关联 PR:PR #15263

likedislike