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


11 days ago Assign mutex_lock as responsible person
11 days ago Change title to "[Requirement|需求建议]: 整仓迁移 op_common 废弃日志宏至新宏", originally titled "[Requirement|需求建议]: ".
11 days ago Change title to "[Requirement|需求建议]: 整仓迁移 op_common 废弃日志宏至新宏", originally titled "[Requirement|需求建议]: ".
周云飞
11 days ago Comments:
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,则需要先明确最低依赖版本,再选择直接迁移或过渡兼容方案。


5 days ago Close issue
5 days ago Added label: resolved
Backgroud(背景信息)
third_party/opbase中op_common/log/log.h已将部分校验日志宏标记为废弃,并在文档中给出替代接口。ops-transformer仓内 Host / OPAPI / experimental 等路径仍大量使用旧宏,若不提前完成迁移,后续接口日落删除后将导致整仓编译失败,并与 opbase 错误码规范不一致。本次需统一替换以下废弃宏(参数签名与替代宏一致,仅切换宏名及对应错误码/日志文案):
OP_LOGE_WITH_INVALID_ATTROP_LOGE_FOR_INVALID_VALUEOP_LOGE_WITH_INVALID_ATTR_SIZEOP_LOGE_FOR_INVALID_LISTSIZEOP_LOGE_WITH_INVALID_INPUT_FORMATOP_LOGE_FOR_INVALID_FORMATOP_LOGE_WITH_INVALID_INPUT_DTYPEOP_LOGE_FOR_INVALID_DTYPE涉及范围:
mc2/、moe/、ffn/、experimental/等调用log/log.h(即op_common/log/log.h)的业务源码。Benefit / Necessity (价值/作用)
Design(设计方案)
总体思路:按文档推荐做一对一宏名替换,不改校验分支与业务逻辑。
映射示例:
// 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);不引入行为逻辑变更。