conversion/concat_v2/op_host/concat_v2_infershape.cpp 中 InferShape4ConcatV2 在推导 concat 维大小时,基底(首个已知秩输入)的识别使用了实例指针相等比较:
conversion/concat_v2/op_host/concat_v2_infershape.cpp
InferShape4ConcatV2
baseShape
if (shapeI == baseShape) continue;
但运行时多个 shape 相同的输入实例可能返回同一个 ge::Shape 对象(输入 desc 同源共享)。此时,后续同形输入会被指针比较误判为"基底"而跳过求和,导致输出 concat(axis)维的尺寸漏加,推导结果偏小。
ge::Shape
• 昇腾硬件型号:不涉及(GEIR 图编译 infershape 路径) • CANN版本:不涉及 • 操作系统:不涉及 • 其他相关软件版本:gert::InferShapeContext / op_host inferShape
{16,4,8}
baseIdx = i
if (i == baseIdx) continue;
{16,4,16}
💡 备注(选填)
核对发现 #4685 已由 MR !7301 修复并合入 master,主线提交 454733904ae6a350a64deb33df720eebcc52da99 明确写明修复同形输入导致 ConcatV2 axis 维漏加,并包含回归 UT。我们的 !7333 与该主线改动重复、无独立剩余贡献,已关闭以避免重复合入。请维护者据主线核对后关闭本 Issue。
454733904ae6a350a64deb33df720eebcc52da99
一、问题描述 (必填)
conversion/concat_v2/op_host/concat_v2_infershape.cpp中InferShape4ConcatV2在推导 concat 维大小时,基底(首个已知秩输入)的识别使用了实例指针相等比较:baseShape(指针)记录首个已知秩输入;if (shapeI == baseShape) continue;跳过基底自身。但运行时多个 shape 相同的输入实例可能返回同一个
ge::Shape对象(输入 desc 同源共享)。此时,后续同形输入会被指针比较误判为"基底"而跳过求和,导致输出 concat(axis)维的尺寸漏加,推导结果偏小。二、环境信息 (可选)
• 昇腾硬件型号:不涉及(GEIR 图编译 infershape 路径)
• CANN版本:不涉及
• 操作系统:不涉及
• 其他相关软件版本:gert::InferShapeContext / op_host inferShape
三、重现步骤 (可选)
{16,4,8}、{16,4,8}),axis 沿第 3 维(axis=2)拼接。四、预期结果 (可选)
baseIdx = i),求和循环按if (i == baseIdx) continue;跳过基底,不做实例指针比较。{16,4,16})。💡 备注(选填)