对以下算子的调用示例(examples/test_aclnn_.cpp)与接口文档(docs/aclnn.md)进行检查,发现宿主数据类型与 Tensor dataType 不匹配、shape 与参数表不一致、设备地址复用、日志标签残留等问题,部分问题会导致内存越界/泄漏或数值错误。
inputHostData
int16_t
ACL_INT32
PrintOutResult
resultData
int8_t
aclnnDequantBiasGetWorkspaceSize
outputDtype
true
1
int32_t
ACL_FLOAT
gradOutputHostData
int
0x00000001
inputShape = {8,1}
{16}
{numSeqs, 1+specNum}
CHECK_RET
return ret
示例与文档代码应与参数表一致:宿主数据类型与 Tensor dataType 匹配、shape 符合参数表约束、每个 Tensor 使用独立设备地址、日志标签与实际算子对应。
问题描述
对以下算子的调用示例(examples/test_aclnn_.cpp)与接口文档(docs/aclnn.md)进行检查,发现宿主数据类型与 Tensor dataType 不匹配、shape 与参数表不一致、设备地址复用、日志标签残留等问题,部分问题会导致内存越界/泄漏或数值错误。
问题清单
aclnnDequantBias(quant/dequant_bias)
inputHostData声明为int16_t但 Tensor 创建为ACL_INT32,H2D 拷贝大小仅为一半,device 侧 INT32 越界读取PrintOutResult中resultData为int8_t,接收 FLOAT16 输出仅拷贝一半数据aclnnDequantBiasGetWorkspaceSize第 5 个参数outputDtype传入true,应为1(weightScale 为 FLOAT 时表示输出 FLOAT16)int32_t但 Tensor 创建为ACL_FLOAT,位模式按 float 解析为错误值aclnnGeluBackward(activation/gelu_grad)
gradOutputHostData为int且 gradOutput 创建为ACL_INT32,参数表仅支持 FLOAT/FLOAT16/BFLOAT16,触发 161002aclnnGeluBackwardV2(activation/gelu_grad_v2)
gradOutputHostData为int但创建为ACL_FLOAT,0x00000001按 float 解析为 1.4e-45 而非 1.0aclnnAdvanceStep(optim/advance_step)
inputShape = {8,1}为 2 维,参数表要求 shape 长度与 numSeqs 一致(1 维)aclnnAdvanceStepV2(optim/advance_step)
{16}(1 维),参数表要求 2 维{numSeqs, 1+specNum};sampledTokenIds、inputPositions、seqLens、slotMapping、specToken 的 shape 同样不符合参数表约束其他
CHECK_RET中return ret后多余分号期望行为
示例与文档代码应与参数表一致:宿主数据类型与 Tensor dataType 匹配、shape 符合参数表约束、每个 Tensor 使用独立设备地址、日志标签与实际算子对应。