已关闭
ImprovePrecision 保留后端不支持的浮点 Cast 中间路径 #247
zqmin创建于 22 天前关闭于 19 天前
22 天前 关联了pull request:fix: 保留后端不支持的浮点 Cast 路径(#247)
22 天前 添加了label:Passesbug
wangmingming
21 天前 评论:
21 天前 评论:
待分析处理


21 天前 将 zqmin 设为负责人
19 天前 修改了issue 的描述
19 天前 修改了issue 的描述
19 天前 修改了issue 的描述
19 天前 关闭了 issue
19 天前 添加了label:resolved
ImprovePrecision 当前会逐个删除浮点类型之间的 Cast,存在以下问题:
DelNode修改图连接后,后续 Cast 的实际输入 dtype 会改变,可能发生级联错误。BF16 -> FP32 -> FP16,直接折叠为BF16 -> FP16可能超出后端支持的 Cast 类型范围。修复方案
将 Cast 处理从逐节点改为两阶段链级处理:
CanCollapseCast校验每条边是否被后端支持,identity 成本 0,真实转换成本 1),统一删除不需要的 Cast。IsFloatToUltraLowNeedInsertCast和ShouldChangeDataType精度后处理。附加修复(代码检视发现):
MarkRetainedCastNodes回溯循环增加越界保护ProcessCastChains对孤立节点容错CollectLinearCastChain去除冗余线性检查ProcessCastNodePrecision前置声明,按调用顺序重排函数定义验证场景
BF16 -> FP32 -> FP32 -> FP16:删除中间 identity,保留BF16 -> FP32和FP32 -> FP16FP32 -> FP32(首尾相同):整链删除INT32 -> Cast -> Cast(非浮点源):fallback 逐节点处理,identity 仍删除FP16 -> Cast(FP16) -> Abs(分支):不走链级优化,单节点处理UT 4/4 通过,ST 25/25 通过,PR pipeline 通过。