已关闭
[examples] 多算子示例代码宿主数据类型/shape 与接口定义不一致及日志标签残留 #5816
luoyufan7创建于  25 天前关闭于  25 天前
luoyufan7
25 天前 创建

问题描述

对以下算子的调用示例(examples/test_aclnn_.cpp)与接口文档(docs/aclnn.md)进行检查,发现宿主数据类型与 Tensor dataType 不匹配、shape 与参数表不一致、设备地址复用、日志标签残留等问题,部分问题会导致内存越界/泄漏或数值错误。

问题清单

aclnnDequantBias(quant/dequant_bias)

  1. inputHostData 声明为 int16_t 但 Tensor 创建为 ACL_INT32,H2D 拷贝大小仅为一半,device 侧 INT32 越界读取
  2. PrintOutResult 中 resultData 为 int8_t,接收 FLOAT16 输出仅拷贝一半数据
  3. aclnnDequantBiasGetWorkspaceSize 第 5 个参数 outputDtype 传入 true,应为 1(weightScale 为 FLOAT 时表示输出 FLOAT16)
  4. weight/activation/bias 宿主数据为 int32_t 但 Tensor 创建为 ACL_FLOAT,位模式按 float 解析为错误值

aclnnGeluBackward(activation/gelu_grad)

  1. gradOutputHostData 为 int 且 gradOutput 创建为 ACL_INT32,参数表仅支持 FLOAT/FLOAT16/BFLOAT16,触发 161002

aclnnGeluBackwardV2(activation/gelu_grad_v2)

  1. gradOutputHostData 为 int 但创建为 ACL_FLOAT,0x00000001 按 float 解析为 1.4e-45 而非 1.0

aclnnAdvanceStep(optim/advance_step)

  1. inputShape = {8,1} 为 2 维,参数表要求 shape 长度与 numSeqs 一致(1 维)
  2. blockTables 参数描述"用于记录不同blockIdx下block的大小"与公式语义不符,应为 block 的物理块编号
  3. 日志标签 "mean result" 为模板复制残留

aclnnAdvanceStepV2(optim/advance_step)

  1. inputTokens shape 为 {16}(1 维),参数表要求 2 维 {numSeqs, 1+specNum};sampledTokenIds、inputPositions、seqLens、slotMapping、specToken 的 shape 同样不符合参数表约束
  2. input7/input8 创建时复用 input5/input6 的 DeviceAddr,指针被二次 malloc 覆盖,首次分配泄漏
  3. 头文件包含残留注释"//不确定头文件名字";日志标签 "mean result" 为模板残留

其他

  1. aclnnGeluMul、aclnnSoftmaxCrossEntropyWithLogits 示例日志标签 "mean result" 为模板残留
  2. aclnnSoftplusBackward(含 experimental 副本)CHECK_RET 中 return ret 后多余分号

期望行为

示例与文档代码应与参数表一致:宿主数据类型与 Tensor dataType 匹配、shape 符合参数表约束、每个 Tensor 使用独立设备地址、日志标签与实际算子对应。

likedislike
Lluoyufan7
25 天前 关联了pull request:fix(examples): fix dtype/shape mismatches and log labels in aclnn examples
yuning_chenyuning_chen成员
25 天前 将 luoyufan7 设为负责人
Lluoyufan7
25 天前 关联了pull request:fix(examples): fix dtype/shape mismatches and log labels in aclnn examples
CANN-robotCANN-robot成员
25 天前 关闭了 issue
CANN-robotCANN-robot成员
24 天前 添加了label:resolved