| Files | Last commit | Last update |
|---|---|---|
删除源码链接 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !12106 merge master into master 删除源码链接 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 删除源码链接 ## 关联的Issue [#6769](https://gitcode.com/cann/ops-nn/issues/6769) ## 测试 仅涉及文档修改,已经测试md文档语法 ## 文档更新 activation和quant目录下的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12106 | 24 days ago | |
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 | 4 months ago | |
算子插件迁移 Co-authored-by: welt_lester<songlizhe1@h-partners.com> Co-authored-by: x00842564<xuyanke@huawei.com> # message auto-generated for no-merge-commit merge: !8474 merge master into master 算子插件迁移 Created-by: welt_lester Commit-by: x00842564;welt_lester Merged-by: cann-robot Description: ## 描述 落实issue #4279,将adaptive_avg_pool2d、adaptive_max_pool2d、ascend_anti_quant、ascend_dequant、ascend_quant、batch_mat_mul_v3、batch_norm、celu_v2、instance_norm_v3、ascend_quant、log_softmax_v2、mat_mul_v3、unique_with_counts_and_sorting这13个算子对应的插件从common\src\framework迁出到各自算子目录新建的\framework目录下。 ## 关联的Issue [Bug-Report|缺陷反馈]: 有对应算子的插件不应该放到公共目录 [#4279](https://gitcode.com/cann/ops-nn/issues/4279) ## 测试 compile、本地验证build通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(算子插件归属迁移,落实 #4279 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8474 | 2 months ago | |
fix(activation): reject private formats and handle FastGeluV2 empty tensors Co-authored-by: leaving__<B24040621@njupt.edu.cn> # message auto-generated for no-merge-commit merge: !9156 merge fix/transfer-test-exception-format-intercept into master fix(activation): reject private formats and handle FastGeluV2 empty tensors Created-by: leaving__ Commit-by: leaving__ Merged-by: cann-robot Description: ## 描述 - 为 Celu、FastGelu、HardShrink 和 SoftShrink 增加私有 Tensor 格式校验。 - 为 FastGeluV2 空 Tensor 场景设置 tiling key。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5112 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9156 | 2 months ago | |
修正 CeluV2 Proto 注释遗漏 BF16 输入类型 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12208 merge fix/2026-10-16-celu-v2-proto-bf16-doc into master 修正 CeluV2 Proto 注释遗漏 BF16 输入类型 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # 修正 CeluV2 Proto 注释遗漏 BF16 输入类型 CeluV2 的 x 输入在 Proto 注释中只列出 float16、float32,但 REG_OP 和 OpDef 均注册了 DT_BF16。这使公开接口说明与已注册类型不一致,并可能让调用方误判 BF16 不受支持。 预期是注释列出已注册支持的类型。此修复在 x 的类型说明中补充 bfloat16,不改变算子注册或执行行为。 静态核对 Proto、OpDef、tiling 和 README 后确认均已声明 BF16,修正后的注释与注册类型一致。 ## 验证 - 静态核对确认 Proto 注释、注册定义和 OpDef 均包含 BF16;修复后输入类型说明与注册集合一致。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6840 See merge request: cann/ops-nn!12208 | 24 days ago | |
legacy下线:整改NN算子图模式注册与日志规范 Co-authored-by: zhouxuan78<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !8388 merge master into master legacy下线:整改NN算子图模式注册与日志规范 Created-by: zhouxuan78 Commit-by: zhouxuan78 Merged-by: cann-robot Description: ## 描述 本 PR 用于 ops-nn 仓 Legacy 下线整改,补齐部分算子的直调/图模式注册、InferShape / InferDataType 拆分、日志规范整改及必要的编译/预提交问题修复。 1. 补齐多个算子的 op_graph 侧 InferDataType / graph infer 注册文件,并同步补充对应 CMakeLists.txt: - 如 FastGeluV2、HardShrinkGrad、HardSigmoidGrad、HardSwish、HardSwishGrad、Selu、SeluGrad、Shrink、SoftplusGrad、SoftplusV2、SoftplusV2Grad、Softsign、SoftsignGrad、SmoothL1Loss、SoftMarginLoss、LpNormUpdateV2、ApplyFtrlV2、ApplyMomentum、ApplyRMSProp 等。 2. 调整部分算子的 op_host infer 文件: - 将 InferDataType 逻辑从 infershape 文件中拆分/迁移到 op_graph 侧; - 保留 InferShape 逻辑,避免 shape/type 混在同一处注册; - 收敛 IndexCheck infershape 日志,仅保留入口日志。 3. 补充 SoftMarginLoss 图模式原型: - 新增 loss/soft_margin_loss/op_graph/soft_margin_loss_proto.h; - 新增 OPS_PROTO_DEF_SOFTMARGINLOSS 去重宏,避免重复注册; - 补充 SoftMarginLoss 的 op_graph/CMakeLists.txt 和 graph infer 注册。 4. 日志整改: - 为 Arch35 tiling 入口补充统一入口日志; - 对本 PR 修改范围内新增/调整的外部输入错误日志,按规范使用 OP_LOGE_FOR_INVALID_* 系列上报接口; - 收敛部分过多的 tiling / infershape 日志打印,避免循环或冗余打印。 5. 回退/收敛不属于本次整改范围的 Softshrink 重命名相关改动: - Softshrink -> SoftShrink 的命名调整不放在本 PR 中,后续单独 PR 处理。 6. 修复 pre-commit 格式问题: - 按仓库 .clang-format 修复格式; - 不修改 .pre-commit-config.yaml。 影响范围 主要影响 activation、index、loss、norm、optim、quant、vfusion 等目录下 Legacy 下线相关算子的 op_graph 注册、InferDataType 拆分、tiling 入口日志和错误日志规范。 ## 变更内容 ## 关联的Issue ## 测试 ## 文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:Legacy包下线整改 See merge request: cann/ops-nn!8388 | 2 months ago | |
celuV2算子精度修改 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !7130 merge celu_v2_precision_fix into master celuV2算子精度修改 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 数值稳定的 CeluV2 负分支 expm1 实现(Kahan 恒等式 + |u| 双重 guard),修复 v1 在小 alpha 尾部 e 溢出导致 NaN/-0 污染正分支的精度问题。附带:Compute 拆分为可读子阶段;tiling UB 逻辑缓冲数以具名常量表达(消除魔鬼数字)。逻辑已真调 NPU 验收。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3900 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7130 | 4 months ago | |
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 | 4 months ago | |
[CANNBOT]celu_v2 和 fast_gelu_v2 算子适配Ascend950 Ascendc实现 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !5149 merge 0520 into master [CANNBOT]celu_v2 和 fast_gelu_v2 算子适配Ascend950 Ascendc实现 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> CeluV2 $$ CELU(x) = \max(0, x) + \min(0, \alpha \cdot (\exp(x / \alpha) - 1)) $$ - x: 输入张量 - alpha: 激活系数,默认1.0,不能为0 - 当 x ≥ 0 时输出 x;当 x < 0 时输出 α·(exp(x/α) - 1),趋近于 -α --- FastGeluV2 $$ FastGeluV2(x) = x \cdot \left( sgn(x) \cdot \left[ -0.1444 \cdot \left( \text{clip}(|0.7071 \cdot x|, \max=1.769) - 1.769 \right)^2 + 0.5 \right] + 0.5 \right) $$ 其中: $$ sgn(x) = \frac{x + 10^{-12}}{|x + 10^{-12}|} $$ - x: 输入张量 - 通过分段多项式逼近标准 GeLU,避免 exp/erf 调用 - clip 将 |0.7071·x| 限制在 [0, 1.769] 范围内,超出后输出趋于线性 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2561 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> CeluV2 共 165 条测试用例,汇总如下: 按数据类型 ┌──────────┬───────┐ │ 数据类型 │ 数量 │ ├──────────┼───────┤ │ fp32 │ 86 条 │ ├──────────┼───────┤ │ fp16 │ 79 条 │ └──────────┴───────┘ 按测试类别 ┌───────────┬───────┬─────────────────────────────────────────────────────────────────────────────┐ │ 类别 │ 数量 │ 说明 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ alpha变参 │ 67 条 │ alpha=0.1/0.5/2.0/10/100/1000/-0.5/-1/-2/-0.001/1e-6 等,覆盖正负、极大极小 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 边界对齐 │ 28 条 │ shape=15/16/31/32/33/63/64/65/127/128/129/255/256/257,测试 block 对齐边界 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 基础shape │ 25 条 │ 1D~8D 标准 shape,alpha=1.0 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 非对齐 │ 16 条 │ shape=3/5/13/17/37/97/500/1000,非2的幂次 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 大shape │ 7 条 │ 500K/1M/100x100x100 等大张量 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 标量shape │ 6 条 │ shape=1/2/7 的极小张量 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 奇异shape │ 6 条 │ 1x1/1x1x1/1x1x1x1 等全1维度 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 特殊值 │ 5 条 │ 零值输入、极大值输入、极小值输入 │ ├───────────┼───────┼─────────────────────────────────────────────────────────────────────────────┤ │ 压力测试 │ 5 条 │ 2M/5M/512x1024 等超大张量 │ └───────────┴───────┴─────────────────────────────────────────────────────────────────────────────┘ FastGeluV2 测试覆盖总结 ┌────────────┬─────────────────────────────────────────────────┐ │ 维度 │ 覆盖情况 │ ├────────────┼─────────────────────────────────────────────────┤ │ 总用例数 │ 248(TTK Kernel 直调) │ ├────────────┼─────────────────────────────────────────────────┤ │ 数据类型 │ float32, float16, bfloat16 │ ├────────────┼─────────────────────────────────────────────────┤ │ Shape 维度 │ 空张量 [0] ~ 5D,含 53 种 unique shape │ ├────────────┼─────────────────────────────────────────────────┤ │ 元素数量 │ 0 ~ 50,000,000(五千万) │ └────────────┴─────────────────────────────────────────────────┘ 数据值域: ┌─────────────────────────────────────────┬────────────────────────────────────┐ │ 区间 │ 说明 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-0.01, 0.01] / [-0.001, 0.001] │ 极小值,近零区域 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-0.1, 0.1] │ 小值区域 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-1.0, 1.0] │ clip 阈值内(0.7071*x < 1.769) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-3.0, 3.0] / [-5.0, 5.0] │ 标准范围(主测试区间) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-10.0, 0.0] / [0.0, 10.0] │ 单侧值域(全负/全正) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [0.5, 5.0] / [1.0, 100.0] │ 正值偏移/大正值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ [-50.0, 50.0] / [-100.0, 100.0] │ 宽范围(clip 饱和区) │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ (3.4e+37, 3.4e+38) / (-3.4e+38, -3.4e+37) │ fp32 极大/极小值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ (6.0e+4, 6.55e+4) / (-6.55e+4, -6.0e+4) │ fp16 极大/极小值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ (3.3e+37, 3.39e+38) / (-3.39e+38, -3.3e+37) │ bf16 极大/极小值 │ ├─────────────────────────────────────────┼────────────────────────────────────┤ │ denormal: 1e-40~1e-38(fp32), │ 次正规数 │ │ 5.96e-8~6.1e-5(fp16), 9.2e-41~1.17e-38(bf16) │ │ └─────────────────────────────────────────┴────────────────────────────────────┘ 测试场景: - 空张量 [0] → 空输出(fp32/fp16/bf16 各 1 条) - 单元素 [1] / [1,1] → 最小有效输入 - 对齐 shape(8 的倍数)→ 无 padding 路径 - 非对齐 shape(4,7,13,15,31,127,255,1023)→ tail 处理路径 - 多维 2D~5D → 高维张量展平处理 - 大规模 5000×10000 / 50000000 → 多核并行 + 内存压力 - 极大值(接近 dtype max)→ 溢出/饱和行为 - 极小值(接近 dtype min)→ 溢出/饱和行为 - 次正规数(denormal)→ 精度下限行为 - 11 种数据分布 × 3 种 dtype 交叉覆盖 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5149 | 5 months ago | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 1 month ago |
CeluV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
- 算子功能:激活函数Celu(Continuously Differentiable Exponential Linear Units)。
- 计算公式:
CELU(x)=max(0,x)+min(0,α∗(exp(x/α)−1))CELU(x) = \max(0,x) + \min(0, \alpha \ast (\exp(x/\alpha) - 1)) CELU(x)=max(0,x)+min(0,α∗(exp(x/α)−1))
其中:
-
x: 输入张量
-
alpha: CELU公式中的激活系数,默认值为1.0
参数说明
| 参数名 | 输入/输出 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 公式中的'x',表示CELU激活函数的输入张量。支持空Tensor,支持非连续Tensor,维度支持0-8。 | FLOAT16、FLOAT32、DT_BF16 | ND |
| alpha | 属性 | CELU公式中的激活系数,默认值为1.0,不能为0。 | FLOAT | - |
| y | 输出 | 表示x经CELU计算得到的输出张量,shape和dtype与输入x一致。支持非连续Tensor。 | FLOAT16、FLOAT32、DT_BF16 | ND |
约束说明
无。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_celu.cpp | 通过aclnnCelu&aclnnInplaceCelu接口方式调用CeluV2算子。 |