SplitD的CheckSplitParams在校验输入维度能否被num_split整除时,未先将负数split_dim转换为非负索引,直接调用GetDim(split_dim)。负数转换为size_t后会得到非法索引,使校验结果依赖无效维度哨兵值,可能错误拒绝合法输入。
CheckSplitParams
num_split
split_dim
GetDim(split_dim)
size_t
conversion/split_d/op_host/split_d_infershape.cpp
{12, 9}
split_dim=-1
num_split=3
先将split_dim=-1归一化为最后一维索引,再使用维度值9进行整除校验,推导3个shape为{12, 3}的输出。
{12, 3}
💡 备注(选填)
由PR #6253修复,并已通过SplitD op-host UT验证。
/assign
一、问题描述 (必填)
SplitD的
CheckSplitParams在校验输入维度能否被num_split整除时,未先将负数split_dim转换为非负索引,直接调用GetDim(split_dim)。负数转换为size_t后会得到非法索引,使校验结果依赖无效维度哨兵值,可能错误拒绝合法输入。二、环境信息 (可选)
conversion/split_d/op_host/split_d_infershape.cpp三、重现步骤 (可选)
{12, 9}。split_dim=-1、num_split=3。四、预期结果 (可选)
先将
split_dim=-1归一化为最后一维索引,再使用维度值9进行整除校验,推导3个shape为{12, 3}的输出。💡 备注(选填)
由PR #6253修复,并已通过SplitD op-host UT验证。