Pull Request已成功合入, 合并人@CANN-robot
(感谢 小王! 的贡献)变更摘要
本 PR 是 ascend950(arch35)pooling 系列算子的重构:将 host tiling 与 kernel 中重复的公共逻辑抽取为共享基础类与工具函数,并大规模重命名结构体以避免跨算子符号冲突。kernel 侧新增 Pool3DGradNcdhwKernelBase(收编 3D 池化梯度 NCDHW kernel 的 46 项公共 tiling 字段与 ParseTilingData 解析)、MaxPoolGradNchwCommonFields(NCHW scatter/backward 基类共用字段)、Pool2DSmallKernelIoBase(二维池化 small kernel 共用 pipe/队列/buffer 与 InitIo 逻辑)以及 PoolUtils::Compute::AccumulateSumFp32、PoolUtils::DataMove::CustomCopy、PoolUtils::DataMove::BigKernel::CopyInMultiRowsNhwc 等工具接口;host 侧将 avg_pool_grad 与 avg_pool_v2_grad 的公共计算(CalcAvgPoolGradSamePad、CalcAvgPoolGradShapeInfo、AvgPoolV2GradCommon)下沉到 avg_pool_v2_grad_tiling_common.h,并在 adaptive_pool3d_tiling.h 中抽取 AdaptivePool3dComputeInfo。整体上通过删除各算子内的重复实现、改调共享接口,降低了跨算子维护成本。
主要改动
- 新增 kernel 公共基类收编公共字段与解析逻辑:新增
pool_3d_grad_kernel_base.h(Pool3DGradNcdhwKernelBase)、max_pool_grad_nchw_fields_common.h(MaxPoolGradNchwCommonFields)、pool_2d_small_kernel_base.h(Pool2DSmallKernelIoBase),max_pool3d_grad、max_pool3d_grad_with_argmax、max_pool_gradNCHW、avg_pool/max_pool_v3small kernel 等派生类改为继承这些基类,删除各自重复声明的成员字段与ParseTilingData/Init实现。 - 抽取 kernel 级共享工具函数:新增
pool_sum_compute.h(AccumulateSumFp32,供avg_pool与pool_3d_commonbig kernel 的非 fp32 部分和累加复用)、pool_ub_strided_copy.h(CustomCopy,替换avg_pool/max_pool_v3pad kernel 内重复的 UB 跨步拷贝实现)、pool_2d_row_data_move.h新增CopyInMultiRowsNhwc(替换avg_pool/max_pool_v3NHWC big kernel 各自的CopyInMultiRows/CopyInMultiRowsContiguous),max_pool_with_argmax_v3big kernel 改为复用pool_big_kernel_utils.h的CalcRealIndex、ReduceMaxWithIndex等辅助函数。 - host tiling 侧公共逻辑下沉:在
avg_pool_v2_grad_tiling_common.h中集中定义AvgPoolV2GradCommon、CalcAvgPoolGradSamePad、CalcAvgPoolGradShapeInfo,删除avg_pool_grad_tiling_base与avg_pool_v2_grad_tiling_base中各自重复的 pad 计算与 shape 解析实现;在adaptive_pool3d_tiling.h中新增AdaptivePool3dComputeInfo,adaptive_avg_pool3d_para_tiling/adaptive_max_pool3d_para_tiling改以继承方式复用,并统一将avgComptuteInfo_更名为avgComputeInfo_。 - 跨算子结构体类型重命名避免符号冲突:将多文件内通用的
BaseInput、InputInfo、ComputeInfo、InputSIMTInfo等改为带算子前缀的唯一类型名,如AdaptivePool2dBaseInput、AdaptivePool3dBaseInput、AdaptiveMaxPool2dInputInfo、MaxPoolWithArgmaxInputInfo、MaxPoolV3InputInfo、MaxPool3DGradWithArgmaxDhwInputInfo、MaxPoolWithArgmaxV3InputSIMTInfo等,并同步更新对应类成员与函数参数类型。 - 同步更新单测引用:
max_pool_grad的 UT(test_max_pool_grad_tiling.cpp)删除本地重复定义的MaxPoolGradWithArgmaxCompileInfo,改为直接包含max_pool_grad_tiling.h头文件。


Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| pooling | ✅ 钱泽洪, 刘闯 (2/2) | ✅ 钱泽洪, 刘闯 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
qq_52056150, thanks for your pull request. All authors of the commits have signed the CLA. 👍


compile


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


您好,pr合入已准备就绪,请尽快联系committer进行检视,谢谢!


/approve


/approve


描述
关联的Issue
https://gitcode.com/cann/ops-nn/issues/5370
测试
受影响的算子复跑门槛用例均无引入功能问题,性能无劣化,线上David冒烟和OBP冒烟均已通过
文档更新
不涉及
类型标签
AI/Agent生成声明