| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !10878 merge nn_wo into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用对比1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6135 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!10878 | 21 天前 | |
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 | 14 天前 | |
本 PR 为 6 个算子新增 ascend350 平台的适配支持(EmbeddingBag、EmbeddingDenseGrad、EmbeddingDenseGradV2、AvgPool3D、AvgPool3DGrad、MaxPoolWithArgmax),和 1 个 算子 fusion pass 通路(max_pool_fusion_pass.cpp)的 ascend350 适配。 Co-authored-by: duxinlei<duxinlei@h-partners.com> Co-authored-by: u010470851<shangguanqinnan@huawei.com> # message auto-generated for no-merge-commit merge: !10135 merge ascend3500909 into master ascend350 算子适配350平台 Created-by: duxinlei Commit-by: duxinlei;u010470851 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 给 6 个算子新增 ascend350 平台的适配支持(EmbeddingBag、EmbeddingDenseGrad、EmbeddingDenseGradV2、AvgPool3D、AvgPool3DGrad、MaxPoolWithArgmax),给 1 个 算子 fusion pass 通路(max_pool_fusion_pass.cpp)新增 ascend350 适配。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5820](https://gitcode.com/cann/ops-nn/issues/5820) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟 david通路测试 dvlite通路测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10135 | 1 个月前 |