| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 新增 Relu6Grad 算子(Ascend 950 / arch35) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !5384 merge master into master feat: 新增 Relu6Grad 算子(Ascend 950 / arch35) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 新增 ReLU6 反向梯度算子 Relu6Grad,仅在 Ascend 950PR / Ascend 950DT(arch35)AI Core 上实现。该算子计算 ReLU6 的反向梯度:对前向输入 x 落在严格开区间 (0, 6) 的位置透传上游梯度 dy,落在区间外(含端点 x = 0 与 x = 6,以及 NaN / ±Inf)的位置输出 0;与 TensorFlow Relu6Grad 及 PyTorch hardtanh_backward(min=0, max=6) 在边界处取 0 的约定对齐。 ### 改动原因 当前 ops-nn 中尚无面向 Ascend 950 系列的 Relu6Grad 实现,需补齐 ReLU6 激活函数在新架构下的反向训练能力。 ### 改动方法 - **算子原型**(op_graph/relu6_grad_proto.h):REG_OP(Relu6Grad),二输入 gradients / features,一输出 backprops;DataType 支持 FLOAT16 / FLOAT / BFLOAT16,Format ND。 - **算子定义**(op_host/relu6_grad_def.cpp):通过 OpDef::AICore().AddConfig("ascend950", ...) 仅注册 ascend950 AICore 配置;启用 DynamicCompileStaticFlag / DynamicRankSupportFlag / DynamicShapeSupportFlag / PrecisionReduceFlag;ExtendCfgInfo("opFile.value", "relu6_grad_apt") 指定 kernel 入口文件。 - **InferShape**(op_host/relu6_grad_infershape.cpp):直接复用 Ops::Base::InferShape4Broadcast,输出 shape 为两输入的广播形状。 - **Tiling**(op_host/arch35/relu6_grad_tiling_arch35.{h,cpp}):按 dtype 分支调用 Ops::Base::BroadcastBaseTiling<OpDag>。 - **DAG**(op_kernel/arch35/relu6_grad_dag.h): - fp32 通路原生计算 mask = And(Compare(GT, x, 0), Compare(LT, x, 6)) → Select(mask, dy, 0),由硬件 vsel 实现,无分支; - fp16 / bf16 通路先 Cast(->fp32) 做 cmp/and/sel,末端 Cast(->T, CAST_MODE_RINT) 回退到原 dtype,与 DSL relu6_grad.py 在 fp16 vcmpsel 不可用时 fallback 到 fp32 的行为一致。 - **Kernel 入口**(op_kernel/relu6_grad_apt.cpp):KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY) + BroadcastSch<schMode, OpDag>。 ## 关联的Issue - 关联Issue #2953(https://gitcode.com/cann/ops-nn/issues/2953) ## 测试 - 新增 InferShape UT:tests/ut/op_host/test_relu6_grad_infershape.cpp,覆盖 fp32 / fp16 / bf16、动态 shape、广播形状推导。 - 新增 Tiling UT:tests/ut/op_host/arch35/test_relu6_grad_tiling.cpp,覆盖 ascend950 三种 dtype。 - 新增图模式示例:examples/test_geir_relu6_grad.cpp,覆盖 fp32 / fp16 / bf16 基础用例 + 边界 x = 0 / x = 6、x = NaN / ±Inf、广播等关键特殊值用例。 - 新增 golden 数据生成脚本:tests/assets/golden.py。 ## 文档更新 - 新增算子说明文档:activation/relu6_grad/README.md,含功能说明、计算公式、参数说明、约束、实现方案、调用样例索引。 ## 类型标签 - [x] 新特性 See merge request: cann/ops-nn!5384 | 1 个月前 | |
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 | 18 天前 | |
feat: 新增 Relu6Grad 算子(Ascend 950 / arch35) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !5384 merge master into master feat: 新增 Relu6Grad 算子(Ascend 950 / arch35) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 新增 ReLU6 反向梯度算子 Relu6Grad,仅在 Ascend 950PR / Ascend 950DT(arch35)AI Core 上实现。该算子计算 ReLU6 的反向梯度:对前向输入 x 落在严格开区间 (0, 6) 的位置透传上游梯度 dy,落在区间外(含端点 x = 0 与 x = 6,以及 NaN / ±Inf)的位置输出 0;与 TensorFlow Relu6Grad 及 PyTorch hardtanh_backward(min=0, max=6) 在边界处取 0 的约定对齐。 ### 改动原因 当前 ops-nn 中尚无面向 Ascend 950 系列的 Relu6Grad 实现,需补齐 ReLU6 激活函数在新架构下的反向训练能力。 ### 改动方法 - **算子原型**(op_graph/relu6_grad_proto.h):REG_OP(Relu6Grad),二输入 gradients / features,一输出 backprops;DataType 支持 FLOAT16 / FLOAT / BFLOAT16,Format ND。 - **算子定义**(op_host/relu6_grad_def.cpp):通过 OpDef::AICore().AddConfig("ascend950", ...) 仅注册 ascend950 AICore 配置;启用 DynamicCompileStaticFlag / DynamicRankSupportFlag / DynamicShapeSupportFlag / PrecisionReduceFlag;ExtendCfgInfo("opFile.value", "relu6_grad_apt") 指定 kernel 入口文件。 - **InferShape**(op_host/relu6_grad_infershape.cpp):直接复用 Ops::Base::InferShape4Broadcast,输出 shape 为两输入的广播形状。 - **Tiling**(op_host/arch35/relu6_grad_tiling_arch35.{h,cpp}):按 dtype 分支调用 Ops::Base::BroadcastBaseTiling<OpDag>。 - **DAG**(op_kernel/arch35/relu6_grad_dag.h): - fp32 通路原生计算 mask = And(Compare(GT, x, 0), Compare(LT, x, 6)) → Select(mask, dy, 0),由硬件 vsel 实现,无分支; - fp16 / bf16 通路先 Cast(->fp32) 做 cmp/and/sel,末端 Cast(->T, CAST_MODE_RINT) 回退到原 dtype,与 DSL relu6_grad.py 在 fp16 vcmpsel 不可用时 fallback 到 fp32 的行为一致。 - **Kernel 入口**(op_kernel/relu6_grad_apt.cpp):KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY) + BroadcastSch<schMode, OpDag>。 ## 关联的Issue - 关联Issue #2953(https://gitcode.com/cann/ops-nn/issues/2953) ## 测试 - 新增 InferShape UT:tests/ut/op_host/test_relu6_grad_infershape.cpp,覆盖 fp32 / fp16 / bf16、动态 shape、广播形状推导。 - 新增 Tiling UT:tests/ut/op_host/arch35/test_relu6_grad_tiling.cpp,覆盖 ascend950 三种 dtype。 - 新增图模式示例:examples/test_geir_relu6_grad.cpp,覆盖 fp32 / fp16 / bf16 基础用例 + 边界 x = 0 / x = 6、x = NaN / ±Inf、广播等关键特殊值用例。 - 新增 golden 数据生成脚本:tests/assets/golden.py。 ## 文档更新 - 新增算子说明文档:activation/relu6_grad/README.md,含功能说明、计算公式、参数说明、约束、实现方案、调用样例索引。 ## 类型标签 - [x] 新特性 See merge request: cann/ops-nn!5384 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 18 天前 | ||
| 1 个月前 |