已关闭
[Requirement|需求建议]: avg_pool3_d_grad 算子 arch35(Ascend 950)AscendC 实现 #5136
liuchuangdev创建于  8月25日关闭于  9月3日
liuchuangdev成员
8月25日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

avg_pool3_d_grad(AvgPool3DGrad,3D 平均池化反向)此前仅有 910B 上的 TBE 通路实现,arch35(Ascend 950)平台无对应实现,无法在 torch 图模式 / aclnn 接口下使用。

Origin(信息来源)

vector

Benefit / Necessity (价值/作用)

Design(设计方案)

改动内容

1. Tiling(op_host/arch35/)

  • 新增 AvgPool3DGradTilingBase 公共基类:入参(dtype/shape/format)、属性(kernel/stride/pad/ceil_mode/count_include_pad/divisor_override)解析与校验,orig_input_shape 与 grads/output 多布局(NCDHW/NDHWC、4D/5D、N*C 合并)对齐,ceil_mode 输出尺寸推导。
  • 三个方案的 tiling:
    • AvgPool3DGradNCDHWTiling:channel-first 布局的 UB 切分(对齐轴 / 非对齐轴动态调整);
    • AvgPool3DGradNDHWCTiling:channel-last 布局的 UB 切分;
    • AvgPool3DGradSimtTiling:全重叠小 shape 场景的 SIMT 兜底方案。
  • 评审修正:
    • 操作 inputData 的自由函数收纳为基类私有成员;
    • 移除 SIMT 路径无效的 SetScheduleMode(1)(kernel 无跨核同步);
    • GetTilingData 后补 OP_CHECK_NULL_WITH_CONTEXT 判空(4 处)。

2. Kernel(op_kernel/arch35/)

  • NCDHW / NDHWC / SIMT 三套 AscendC 实现;支持 fp16/bf16/fp32,int32/int64 索引;pad、ceil_mode、count_include_pad、divisor_override 与 torch 语义对齐。
  • avg_pool3d 反向语义:对每个输出窗口按 divisor 平均回填梯度,divisor 遵循 torch 规则(include_pad 计入 pad 区、exclusive 只数输入内位置、越界上沿不计入)。

3. golden(tests/assets/golden.py)

  • 3D 反向新增 numpy 参考实现;
  • torch avg_pool3d_backward 在任一空间维 input < kernel 时抛 input image smaller than kernel size(padding 不计入)。实现预检:命中即改走 numpy,避免测试中断;2D golden 保持不变。

4. infershape

  • 补 IsUnknownRank -> SetUnknownRank 分支,对齐 max_pool_grad / avg_pool_v2_grad 等同族算子。

5. torch_extension

  • 注册 torch.ops.cann_ops_nn.avg_pool3d_backward(schema/meta)+ graph_convert_avg_pool3_d_grad.py,支撑 torch.compile 图模式执行。

涉及文件(主要)

  • pooling/avg_pool3_d_grad/op_host/arch35/avg_pool3_d_grad_tiling_base.{h,cpp}
  • pooling/avg_pool3_d_grad/op_host/arch35/avg_pool3_d_grad_{ncdhw,ndhwc,simt}_tiling.{h,cpp}
  • pooling/avg_pool3_d_grad/op_kernel/arch35/avg_pool3_d_grad_{base,ncdhw_kernel,ndhwc_kernel,simt,tiling_data,tiling_key}.h
  • pooling/avg_pool3_d_grad/op_host/avg_pool3_d_grad_infershape.cpp
  • pooling/avg_pool3_d_grad/tests/assets/golden.py
  • pooling/avg_pool3_d_grad/torch_extension/
  • docs/zh/menu_torch_api.md、docs/zh/torch_api_list.md
likedislike
Lliuchuangdev成员
8月25日 添加了label:requirement
yuning_chenyuning_chen成员
8月25日 将 liuchuangdev 设为负责人
Lliuchuangdev成员
9月3日 issue状态由 进行中 改变为 已完成
Lliuchuangdev成员
9月3日 关闭了 issue