已关闭
[Bug-Report|缺陷反馈]: aclblasSgeqrfBatched 接口 info 参数实现不完整,与标准 BLAS 行为不一致 #193
xutianze创建于 6月23日关闭于 6月26日
wangzitao
6月23日 评论:
6月23日 评论:
感谢反馈,正在确认中。


6月25日 关联了pull request:fix(geqrf_batched): 完善aclblasSgeqrfBatched的info参数实现
6月26日 关闭了 issue
6月26日 添加了label:resolved
问题描述
aclblasSgeqrfBatched接口的info参数存在三个问题:Host 侧参数校验未设置 info 负值:
sgeqrf_batched_host.cpp中ValidateGeqrfBatchedParams函数在参数不合法时只返回了错误状态码,从未设置*info为对应的负值(如info = -1表示 m 不合法)。这与标准 BLAS 行为不一致——标准 BLAS 中info < 0表示第-info个参数不合法。CPU 参考实现将 info 当作数组使用:
sgeqrf_batched_golden.h中aclblasSgeqrfBatched_cpu函数在循环中对每个 batch 写入info[b] = 0,将info当作数组使用。但接口定义中info是单个int*(与标准 BLAS 一致),应为*info = 0。测试用例未验证 info 值:
sgeqrf_batched_test.cpp中分配了infoHost向量,但没有任何断言验证其值(包括正常执行时应为 0,以及参数错误时应为负值)。环境信息
blas/geqrf_batched/sgeqrf_batched/arch35/sgeqrf_batched_host.cpptest/geqrf_batched/sgeqrf_batched/sgeqrf_batched_golden.htest/geqrf_batched/sgeqrf_batched/arch35/sgeqrf_batched_test.cpp预期结果
Host 侧参数校验:当参数不合法时,应设置
*info = -i(其中 i 为参数位置),与标准 BLAS 行为一致。例如 m<0 时*info = -1,n<0 时*info = -2,lda<max(1,m) 时*info = -4等。CPU 参考实现:
aclblasSgeqrfBatched_cpu应将info视为单个int*,正常时写入*info = 0,错误时写入*info = -i。测试用例:应增加对
info值的验证:info[0] == 0info[0]为对应的负值info == nullptr时,应返回ACLBLAS_STATUS_INVALID_VALUE日志 / 截图
无运行时错误,为代码逻辑问题。
备注
建议参考 LAPACK 的
xGEQRF接口规范:INFO = 0表示成功,INFO = -i表示第 i 个参数不合法。