| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 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 | 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 | 1 个月前 | |
[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 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 |