| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(max_pool3d_grad): implement NDHWC support and optimize NCDHW tiling key Co-authored-by: liuchuangdev<liuchuang51@huawei.com> Co-authored-by: fengjiawei1<fengjiawei5@huawei.com> # message auto-generated for no-merge-commit merge: !9788 merge feat/max_pool3d_grad_optimize into master feat(max_pool3d_grad): implement NDHWC support and optimize NCDHW tiling key Created-by: liuchuangdev Commit-by: fengjiawei1;liuchuangdev Merged-by: cann-robot Description: ## 描述 为 max_pool3d_grad(arch35)新增 **NDHWC 数据格式原生支持**,并重构 **NCDHW 大 kernel**、补齐公共层与测试,同时修复若干语义/健壮性问题。 ### 1. 新增 NDHWC 支持(核心) - **设备 kernel**: - max_pool3d_grad_ndhwc_small_kernel.h / max_pool3d_grad_ndhwc_big_kernel.h:NDHWC 小/大 kernel。 - max_pool3d_grad_ndhwc_impl_gather.h:前向**重算 argmax** 的 gather,按 dhwc/hwc/wc 与 lane 容量做**多级级联降级**(MultiNc/MultiDep/MultiRow/SingleRow + BigC 的 ChunkC)。 - max_pool3d_grad_ndhwc_impl_scatter.h:反向 **Scatter 四级并发策略**(前向产出 argmax → 按梯度 scatter 回输入),含 V_MTE2/MTE3_MTE2 硬事件与阶段池 alias 排空。 - **host tiling**:max_pool3d_grad_ndhwc_small_kernel_tiling.cpp、max_pool3d_grad_ndhwc_big_kernel_tiling.{h,cpp}:NDHWC 的分轴切分(N/C/D/H/W,C 方向 cDim/cAligned 分块)、大小 kernel 阈值、UB 预算与核分配。 - **公共层**:pool_grad_common/.../pool3d_grad_ndhwc_small_kernel_tiling.{h,cpp} 新增 NDHWC 公共 tiling 基类;pool3d_grad_struct_common.h 扩展 Pool3DGradNCDHWTilingData 字段并新增 Pool3DGradNDHWCTilingData。 ### 2. NCDHW 大 kernel 重构 - 前向拷贝改 MultiCopy 多维一次拷、拷贝拆分 MultiRows/SingleRow/WithD;新增 CalcRealIndex3D 三维索引分解;反向基类提取到 impl_scatter.h 供大小 kernel 共用;tiling 侧按对齐装载量与 UB 预算封顶 inputBufferSize、NoSplit 判据改对齐口径防越界、D 维搬运合并 LoopMode 单条、maxCount_ 向量化对齐。 ### 3. 语义与健壮性修复 - SIMT/golden 语义对齐 torch(-inf 空窗丢 grad、NaN 处理、重叠覆盖不累加、bf16 位模式转换); - Mte3Drain 事件方向改 MTE3_MTE2,修复阶段池跨 tile 的 MTE3 读被 MTE2 写复写; - 修正 NDHWC 前向 gather 级联降级条件为内层维度口径、BigC 路径 argmax 坐标与批偏移; - 补回 NCDHW MaxPool3DGradNCDHWTilingHelper::IsMeetUBSize 定义,修复运行期 undefined symbol(vtable 缺失)。 ### 4. UB 与流水优化(本次联调) - NDHWC 小 kernel:pad 计算缓冲 inputCalcBuff_ 由独立分配改为**复用 forwardBufPool_**,把 UB 让给更大 tile(别名由现有 Mte3Drain→ForwardCopyIn→DeQue 链覆盖,未新增同步); - 删除 Forward() pad 路径一处被后续排空覆盖的**冗余 V_MTE2** 排空; - MAX_INT32 魔法数改用标准库 INT32_MAX 并删除重复定义,向仓库主流写法对齐。 ### 5. 测试 - 新增 NDHWC tiling 单测:test_max_pool3d_grad_ndhwc_tiling.cpp、test_max_pool3d_grad_ndhwc_big_tiling.cpp; - 新增 ST 用例集 tests/st/arch35/ttk_kernel_max_pool3d_grad_st.csv(覆盖 NDHWC/NCDHW、fp16/bf16/fp32、各 padding、边界与特殊值,维度/总量控制在 uint32 内、大值分布到 N/C/D/H/W)。 - 白盒用例、门槛用例、冒烟测试通过 ### 方法说明 NDHWC 与 NCDHW 走各自模板实例化,公共 tiling 逻辑下沉到 pool_grad_common;对外 aclnn/算子接口与语义不变,data_format 新增 NDHWC 分支。 ## 关联的Issue [#6242](https://gitcode.com/cann/ops-nn/issues/6242) ## 测试 - 编译门禁:bash build.sh --soc=ascend950 --ops=max_pool3d_grad 通过(host tiling + device kernel 均编译)。 - 链接检查:nm 确认 libophost_nn.so 无未定义 MaxPool3DGradNCDHWTilingHelper vtable 符号。 - 单测:test_max_pool3d_grad_ndhwc_tiling.cpp / ..._big_tiling.cpp(tiling 结果、核分配/尾块、UB 预算)。 - 系统测试:ttk_kernel_max_pool3d_grad_st.csv,与 numpy/torch golden 对拍(含 -inf/NaN/tie/±inf、pad、tile 边界)。 - 代码规范:pre-commit(clang-format / trailing-whitespace / OAT)通过。 - 待补充:真机/仿真跑特殊值(NaN、NaN 后更大值、多 tie、全 ±inf)验证 NDHWC 与 SIMT 路径 argmax 一致(Reg::Max 的 NaN 语义需实测确认)。 ## 文档更新 - 新增 pooling/max_pool3d_grad/docs/PR_ISSUE_max_pool3d_grad.md(本文件)。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9788 | 19 天前 | |
fix(pooling): 消除 VF scope 内结构体参数访问,修复 Ascend950 VF stack 波动 Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !11396 merge fix/pooling-vf-scope-param-struct into master fix(pooling): 消除 VF scope 内结构体参数访问,修复 Ascend950 VF stack 波动 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 - 回退“收编 Ascend950/arch35 Kernel 重复实现”在 pooling 侧引入的结构体参数访问,恢复局部变量推导,消除 -Wcce-compat 告警与 VF stack 上涨; - MaxPoolGradWithArgmaxV3 NCHW int64 索引路径:索引装载细化 + 主循环拆分 VF scope,修复VF stack 爆栈问题(6944B/6176B > 6144B)导致的编译失败。 ## 关联的Issue [#6326](https://gitcode.com/cann/ops-nn/issues/6326) ## 测试 本地复跑不同的数据类型用例组合均通过,-d模式下无爆栈问题,精度均通过,David冒烟无异常 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11396 | 17 天前 | |
refactor(pooling):池化算子重复代码收编 Co-authored-by: ZhouChuping<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !9305 merge 池化重构 into master refactor(pooling):池化算子重复代码收编 Created-by: qq_52056150 Commit-by: ZhouChuping Merged-by: cann-robot Description: ## 描述 降低池化类算子的代码重复率,抽取重复代码封装为函数,抽取基类。 1.抽取完全重复的函数到Pool_utils目录里 2.修改各处调用点,保证功能和重构前完全一致 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5370 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 本地验证通过,受影响算子门槛用例全部验证通过,无功能影响,线上David冒烟和OBP冒烟均通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 不涉及 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:降低代码重复率,重构池化类算子的代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9305 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 19 天前 | ||
| 17 天前 | ||
| 1 个月前 |