已关闭
[Bug]: BroadcastRegApiCall 在前置 stride 全为 0 时尾轴尺寸计算错误 #239
wei_shi创建于  8月13日关闭于  8月17日
wei_shi
wei_shi成员
8月13日 创建

问题描述

BroadcastRegApiCall 在生成 BroadcastExtend 参数时,尾轴尺寸计算存在异常。

当前逻辑将用于记录前置非零 vectorized stride 轴的 pre_pos 初始化为 0。当尾轴之前的所有 vectorized stride 均为 0 时,遍历过程中无法找到前置非零 stride 轴,pre_pos 也不会被更新;但后续逻辑仍会把索引 0 对应的首轴当作有效前置轴参与计算,导致生成的目标 shape 或源 shape 尾轴尺寸错误。

该问题会影响前置轴均为广播轴的多轴广播场景,使生成的 BroadcastExtend 参数与实际 shape/stride 语义不一致,并可能进一步导致生成代码错误。

复现场景

构造三轴广播场景,使尾轴之前各轴的 vectorized stride 均为 0,尾轴尺寸为非 1 值,例如 7。检查 BroadcastRegApiCall 生成的 BroadcastExtend 参数,可以观察到尾轴尺寸错误引用了首轴信息。

修复方向

  1. 使用明确的无效值表示“尚未找到前置非零 stride 轴”,避免将索引 0 同时作为有效轴和默认状态。
  2. 当未找到前置非零 stride 轴时,直接通过当前轴信息计算尾轴尺寸,不再引用首轴。
  3. 保持已找到有效前置轴时的现有尺寸合并逻辑不变。
  4. 增加 UT 和 ST,覆盖前置轴 vectorized stride 全为 0 的三轴广播路径。

验收标准

  • 前置轴 vectorized stride 全为 0 时,目标 shape 和源 shape 的尾轴尺寸均按当前轴正确生成。
  • 现有包含前置非零 stride 轴的广播场景行为不变。
  • 新增测试能够稳定覆盖并验证该异常路径。
likedislike
wei_shiwei_shi成员
8月13日 关联了pull request:fix: BroadcastRegApiCall 尾轴尺寸修复
wei_shiwei_shi成员
8月13日 删除了关联的pull request:fix: BroadcastRegApiCall 尾轴尺寸修复
wei_shiwei_shi成员
8月13日 将 wei_shi 设为负责人
wei_shi
wei_shi成员
8月13日 评论:

问题已分析处理

likedislike
wei_shiwei_shi成员
8月13日 关联了pull request:fix: BroadcastRegApiCall 尾轴尺寸修复
wei_shiwei_shi成员
8月13日 添加了label:bug
wei_shiwei_shi成员
8月13日 issue类型由 任务 改变为 缺陷
wei_shiwei_shi成员
8月17日 issue状态由 待办的 改变为 已完成
wei_shiwei_shi成员
8月17日 关闭了 issue
CANN-robotCANN-robot成员
8月17日 添加了label:resolved