已合并
【fix】针对各轴repeat均为1的brodcast算子获取broadcast轴失败的场景进行兼容处理 #2364
【fix】针对各轴repeat均为1的brodcast算子获取broadcast轴失败的场景进行兼容处理 #2364
已合并
nisong创建于 3 天前
nisong
nisong成员
3 天前

Pull Request

描述

bugfix:针对各轴repeat均为1的broc算子获取broc失败的场景进行兼容处理
原先问题点:
前端传入的hintGraph中存在这类broadcast节点其Output的repeat在各轴上均为1;虽然其在后端语义上为scalar但当前不兼容会使得直接faill
修改点:针对该场景兼容修改,全1的broadcast做兼容,不报错而是不返回broc轴

变更类型

请选择本次引入的变更类型:

关联的Issue

如何测试

原用例运行失败;修改后用例执行成功,且broadcast后移逻辑正常生效

核对清单

其他信息

在此添加任何其他关于本次 PR 的说明。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 nisong 的贡献)
nisongnisong成员
3 天前 添加了label:enhancement
nisongnisong成员
3 天前 创建了 pull request,commit 507ae1fe
atomgit-bot
atomgit-bot
3 天前 评论:

变更摘要

本次变更主要涉及 autofuse 模块中 broadcast_backward_pass 的广播轴推导逻辑与 node.cc 中的日志文本调整。核心改动是在 GetBroAxisFromNode 中新增对输出 repeats 全为 1 的“空操作”广播节点的提前判断,将其广播轴直接置为 -1 并返回成功,从而避免后续逐维遍历产生无意义的广播轴推导;同时修正了 NodeAnchorIsEqual 中一条错误日志的多余空格。

主要改动

  • 新增全 1 repeats 的短路处理: 在 autofuse/optimize/graph_pass/broadcast_backward_pass.cpp 的 GetBroAxisFromNode 中,使用 std::all_of 判断 bro_repeats 是否全部满足 IsEqOne,若全部为 1 则将 bro_axis 设为 -1 并记录 GELOGI 日志后直接返回 SUCCESS。
  • 空操作广播节点语义调整: 上述改动将输出 repeats 全为 1 的节点视为无广播轴(bro_axis = -1),使这类节点不再进入后续按维度遍历 bro_attr_axis 的流程。
  • 错误日志文本修正: 在 autofuse/graph_metadef/graph/normal_graph/node.cc 的 NodeAnchorIsEqual 中,将 GELOGE 日志里 anchor_peer_size [%zu] is different from 的多余空格修正为单个空格,格式化参数与逻辑保持不变。
likedislike
不准确?
atomgit-bot
atomgit-bot
3 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
3 天前 添加了label:stat/needs-squash
此处折叠了46条消息 查看更多
nisongnisong成员
3 天前 修改标题为 “【fix】针对各轴repeat均为1的brodcast算子获取brocast轴失败的场景进行兼容处理”,原标题为“【fix】针对各轴repeat均为1的brodcast算子获取broc失败的场景进行兼容处理”
nisongnisong成员
3 天前 修改标题为 “【fix】针对各轴repeat均为1的brodcast算子获取broadcast轴失败的场景进行兼容处理”,原标题为“【fix】针对各轴repeat均为1的brodcast算子获取brocast轴失败的场景进行兼容处理”
yangyongqiang
yangyongqiang成员
3 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
3 天前 添加了label:approved
CANN-robotCANN-robot成员
3 天前 合入了pull request