Open
[Bug-Report|缺陷反馈]: 长尾算子质量加固-pad_v3_grad_replication: 修正 padding 约束文档、统一负 padding 拦截并补齐 arch35 Tiling 健壮性校验 #4709
gylAdd on  2 days ago
gyl
gylCollaborators
2 days ago Create

一、问题描述 (必填)

对 PadV3GradReplication(aclnnReplicationPad3dBackward)做长尾算子质量加固时,发现并修复以下问题:

1. 文档约束与实现不一致(资料问题)

  • README.md、docs/aclnnReplicationPad3dBackward.md 原先声明“padding 各值必须小于 self 对应维度”。
  • 实际实现只在 reflect 模式校验该约束(op_api/aclnn_pad3d_backward.cpp 的 CheckShape 中 if (mode == "reflect"));replication 模式只校验 padding 长度为 6、非负,以及 gradOutput 维度关系。
  • 在 Ascend950PR 实测:self [1,1,2,2,2]、padding [2,2,1,1,1,1](pad == self 维)与 [3,3,1,1,1,1](pad > self 维)均可正常返回,输出分别为 12、16,与 PyTorch replicate 语义一致。
  • 已按实际契约修正文档:仅要求 padding 非负,且 gradOutput 对应维度 = self 对应维度 + 相邻两个 padding 值之和。

2. 负 padding 拦截范围不一致(代码/资料问题)

  • 原实现仅在 Ascend910B/Ascend910_93 拦截 FLOAT/FLOAT16/BF16 的负 padding,Ascend950/arch35 未拦截。
  • arch35 Tiling 以 uint64 无符号语义使用 padding,负值会破坏 stride/UB 预算;Kernel 又以 int32 收窄,Host/Kernel 语义不一致,存在误拒或越界风险。
  • 已统一在 ACLNN 入口对所有平台、AI Core dtype(FLOAT/FLOAT16/BF16)拦截负 padding,并在 arch35 Tiling 增加兜底校验;DOUBLE/COMPLEX 继续走 AICPU 回退。

3. arch35 Tiling 健壮性不足

  • 未校验维度为 0(stride/UB 预算按 uint64 计算,0 维会导致预算表达式回绕)。
  • 未校验负 padding。
  • GetInputDesc(0)、GetWorkspaceSizes(1) 返回值未判空。
  • TilingPrepare 中编译期固化平台参数(core_num/ub_size/sysWorkspaceSize 等)与运行期获取重复,已简化,避免编译期与运行期参数不一致。

4. 文档资料与实现不一致

  • README 的维度/dtype/约束说明与 aclnn 实际能力不一致:应为 4/5 维、FLOAT16/FLOAT32/BFLOAT16;DOUBLE/COMPLEX64/COMPLEX128 经 AICPU 回退支持。
  • 补充 4 维/5 维空 Tensor 行为说明。
  • 修正产品支持矩阵(Atlas 推理系列/Atlas 训练系列不支持)。
  • 移除 replication 场景不适用的“padding 数值大于等于 self 维度”错误码行。
  • 将负 padding 限制说明从 A2/A3 扩展到 Ascend 950PR&950DT、A2、A3。

二、环境信息 (可选)

  • 昇腾硬件型号:Ascend950PR_957c(8 卡)
  • CANN 版本:9.1.0-beta.1
  • 操作系统:Linux x86_64
  • 测试框架:TTK 3.0.0(ops-test-kit)
likedislike
gylgylCollaborators
2 days ago Added label: bug-report
gylgylCollaborators
2 days ago Modify description of issue
gylgylCollaborators
2 days ago Assign guyunlong1 as responsible person
gylgylCollaborators
2 days ago Associated pull request
MetastarxMetastarx
1 day ago Associated pull request