sparse/spmm/arch22/spmm_host.cpp 将矩阵 rows/cols 直接 static_cast<uint32_t> 得到 M/K/N,未校验上限。超大 shape 可能静默截断,导致内核维度错误。同仓 arch35 ValidateSpmmInputs 显式校验 rows<=INT32_MAX,arch22 缺失。
sparse/spmm/arch22/spmm_host.cpp
rows
cols
static_cast<uint32_t>
ValidateSpmmInputs
rows<=INT32_MAX
涉及文件:
sparse/spmm/arch22/spmm_host.cpp:186,202-204
uint32_t M = static_cast<uint32_t>(matAInner->rows); uint32_t K = static_cast<uint32_t>(matA->cols); uint32_t N = static_cast<uint32_t>(matB->cols);
参照 arch35 补 rows<=INT32_MAX(及对应 cols)上限校验。
您好,感谢反馈,问题确认中。
已修复
一、问题描述(必填)
sparse/spmm/arch22/spmm_host.cpp将矩阵rows/cols直接static_cast<uint32_t>得到 M/K/N,未校验上限。超大 shape 可能静默截断,导致内核维度错误。同仓 arch35ValidateSpmmInputs显式校验rows<=INT32_MAX,arch22 缺失。涉及文件:
sparse/spmm/arch22/spmm_host.cpp:186,202-204二、问题详情
C-31 | spmm M/K/N 未校验上限(spmm_host.cpp:186,202-204)
uint32_t M = static_cast<uint32_t>(matAInner->rows); uint32_t K = static_cast<uint32_t>(matA->cols); uint32_t N = static_cast<uint32_t>(matB->cols);rows<=INT32_MAX,arch22 缺失。三、影响
四、建议修复
参照 arch35 补
rows<=INT32_MAX(及对应 cols)上限校验。