Pull Request已成功合入, 合并人@CANN-robot
(感谢 jiangjiawei 的贡献)变更摘要
此 PR 移除了 RealDiv 算子中对芯片型号的运行时判断逻辑(IsInt32PrecisionSupported()),统一了所有芯片平台下 INT32 类型输入的处理行为:无论芯片是否为 Ascend910B/910C,当 self 为 INT32 或 BOOL 类型时,输出统一采用 DT_FLOAT 类型分配张量。这意味着之前仅在 910B/910C 上启用的 INT32→FLOAT 路径现已扩展到所有平台(包括 A5/Ascend950)。
主要改动
- 移除
IsInt32PrecisionSupported()函数:删除了判断当前芯片是否为 Ascend910B/910C 的辅助函数及其注释,不再按芯片型号区分行为。 - 简化三参数
RealDiv的输出类型分配条件:原条件要求self和other均为DT_INT32且芯片支持时输出DT_FLOAT,现简化为只要self为DT_INT32即输出DT_FLOAT。 - 简化带
mode参数的重载中isOutDtypeFloat判定:同样移除了对other类型和芯片型号的依赖,仅检查self是否为DT_BOOL或DT_INT32。 - 统一标量/非标量重载中的张量分配逻辑:将
isInt32Precision变量替换为直接判断self->GetDataType() != op::DataType::DT_INT32,使得 INT32 输入在所有芯片上均走DT_FLOAT输出分支。


代码审查
审查总结
我已完成对 math/real_div/op_api/realdiv.cpp(本 PR 唯一变更文件)的逐行审查。
发现的问题
| 优先级 | 数量 | 说明 |
|---|---|---|
| P1 | 1 | AICPU 路径上 INT32 RealDiv 输出 DT_FLOAT 与 kernel 写入的 INT32 数据类型不匹配,导致静默数据损坏 |
各文件审查结果
- math/real_div/op_api/realdiv.cpp:发现 1 个 P1 问题(见上述),其余变更逻辑正确、一致。
整体风险判断
中等风险。此 PR 的核心意图(为 A5/Ascend950 平台扩展 INT32 RealDiv 支持)方向正确,A5 走 AiCore 路径不受影响。但变更同时影响了落入 IsAiCoreSupport 默认分支的基础芯片:这些芯片上 INT32 RealDiv 走 AICPU 路径,op_api 分配 DT_FLOAT 输出而 AICPU kernel 写入 INT32 整数除法结果,造成静默数据损坏。建议在合入前确认基础芯片上是否存在 INT32 RealDiv 调用场景,若存在则需修复此类型不匹配问题。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 0 |
⛔ 需要修改


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
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| math/real_div | ✅ 周奇龙, 唐燕峰 (2/2) | ✅ 周奇龙, 唐燕峰 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
jiangjiawei, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/lgtm
/approve


描述
修复real_div支持逻辑
关联的Issue
https://gitcode.com/cann/ops-math/issues/2192
测试
文档更新
不涉及
类型标签