| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
feat(group_norm): add Ascend 950 implementation Co-authored-by: wangxun21<wangxun21@huawei.com> # message auto-generated for no-merge-commit merge: !8449 merge feat/group-norm-ascend950 into master feat(group_norm): add Ascend 950 implementation Created-by: wangxun21 Commit-by: wangxun21 Merged-by: cann-robot Description: ## 描述 新增 GroupNorm 算子的 Ascend 950 实现,包括算子定义、Host Tiling、AscendC Kernel、二进制配置及测试。 本轮修正 variance 输出数据流:在 FP32 寄存器得到最终总体方差时直接保存到已有 varianceOutTensor,再由同一数值计算 rstd。删除输出阶段 1 / rstd^2 - eps 的反算,避免 variance << eps 时的精度损失;不增加 UB、tiling 字段或 workspace,归一化与批量 GM 写回方式不变。 Empty Tensor 维持当前策略:N = 0、C > 0 时 Host 设置 blockDim = 0、workspace 0,不下发 Kernel;C = 0 或 N > 0 且空间维为 0 时由 Host 返回失败。key 50000 和独立 Empty Kernel 已删除。 ## 关联的Issue 关联Issue #4374 ## 测试 - A/B 严格 variance 精度:从 6/14 提升到 13/14;唯一未通过项为原有的大均值病态输入,修改前后误差基本一致 - A/B 性能:相邻基线几何平均变化 +1.38%,处于预设 2% 噪声阈值内 - ophost UT:17/17 PASS - opkernel simulator UT:4/4 PASS - 安装包主 TTK:8/8 正常张量 PASS;FP16/FP32及key 1100/1110/1120/1130全部覆盖 - 两条 N = 0 用例均匹配 release binary,并得到 blockDim = 0、workspace (0,) 和 key 1100;TTK Kernel模式因不接受零核显示 INVALID_TILING,GEIR复验为2/2 PASS - 定向 Kernel 真机:8/8 PASS,三路输出均为100%,内存检查全部通过 - 现行泛化 release binary:480/480 BINARY_MATCH - 用户 full 泛化集:792/792执行、精度和内存检查PASS,2376个输出精度值均为100% - GEIR完整链路:10/10 PASS - git diff --check通过,最终diff仅包含5个norm/group_norm/op_kernel/arch35/头文件 ## 文档更新 - 更新 norm/group_norm/README.md,补充 Ascend 950 产品支持、参数、约束和调用说明 - 开发设计、A/B和全面验证归档统一保存在 /home/wx00445270/ops/changwei-op-dev/groupNormFinalArchive/,不提交到代码仓 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8449 | 22 天前 | |
feat(group_norm): add Ascend 950 implementation Co-authored-by: wangxun21<wangxun21@huawei.com> # message auto-generated for no-merge-commit merge: !8449 merge feat/group-norm-ascend950 into master feat(group_norm): add Ascend 950 implementation Created-by: wangxun21 Commit-by: wangxun21 Merged-by: cann-robot Description: ## 描述 新增 GroupNorm 算子的 Ascend 950 实现,包括算子定义、Host Tiling、AscendC Kernel、二进制配置及测试。 本轮修正 variance 输出数据流:在 FP32 寄存器得到最终总体方差时直接保存到已有 varianceOutTensor,再由同一数值计算 rstd。删除输出阶段 1 / rstd^2 - eps 的反算,避免 variance << eps 时的精度损失;不增加 UB、tiling 字段或 workspace,归一化与批量 GM 写回方式不变。 Empty Tensor 维持当前策略:N = 0、C > 0 时 Host 设置 blockDim = 0、workspace 0,不下发 Kernel;C = 0 或 N > 0 且空间维为 0 时由 Host 返回失败。key 50000 和独立 Empty Kernel 已删除。 ## 关联的Issue 关联Issue #4374 ## 测试 - A/B 严格 variance 精度:从 6/14 提升到 13/14;唯一未通过项为原有的大均值病态输入,修改前后误差基本一致 - A/B 性能:相邻基线几何平均变化 +1.38%,处于预设 2% 噪声阈值内 - ophost UT:17/17 PASS - opkernel simulator UT:4/4 PASS - 安装包主 TTK:8/8 正常张量 PASS;FP16/FP32及key 1100/1110/1120/1130全部覆盖 - 两条 N = 0 用例均匹配 release binary,并得到 blockDim = 0、workspace (0,) 和 key 1100;TTK Kernel模式因不接受零核显示 INVALID_TILING,GEIR复验为2/2 PASS - 定向 Kernel 真机:8/8 PASS,三路输出均为100%,内存检查全部通过 - 现行泛化 release binary:480/480 BINARY_MATCH - 用户 full 泛化集:792/792执行、精度和内存检查PASS,2376个输出精度值均为100% - GEIR完整链路:10/10 PASS - git diff --check通过,最终diff仅包含5个norm/group_norm/op_kernel/arch35/头文件 ## 文档更新 - 更新 norm/group_norm/README.md,补充 Ascend 950 产品支持、参数、约束和调用说明 - 开发设计、A/B和全面验证归档统一保存在 /home/wx00445270/ops/changwei-op-dev/groupNormFinalArchive/,不提交到代码仓 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8449 | 22 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 10 天前 | |
fix(norm): split oversized headers at declaration boundaries Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9861 merge fix/codecheck-large-headers-v2 into master fix(norm): split oversized headers at declaration boundaries Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 背景 修复 CleanCode 的 C/C++ 超大头文件告警。 ## 修改内容 - 拆分 5 个超过 500 LOC 的 Norm 内核头文件,保留原文件路径、接口、类及函数实现逻辑。 - 新增同目录 *_partN.h,由原头文件在合适的声明边界处 include。 - 所有 part 文件均不关闭父头文件的 #endif。 - 所有拆分边界位于完整函数/声明之间,不从函数体中间物理切分。 - 新增文件已补齐仓库许可证头。 See merge request: cann/ops-nn!9861 | 6 天前 | |
feat(group_norm): add Ascend 950 implementation Co-authored-by: wangxun21<wangxun21@huawei.com> # message auto-generated for no-merge-commit merge: !8449 merge feat/group-norm-ascend950 into master feat(group_norm): add Ascend 950 implementation Created-by: wangxun21 Commit-by: wangxun21 Merged-by: cann-robot Description: ## 描述 新增 GroupNorm 算子的 Ascend 950 实现,包括算子定义、Host Tiling、AscendC Kernel、二进制配置及测试。 本轮修正 variance 输出数据流:在 FP32 寄存器得到最终总体方差时直接保存到已有 varianceOutTensor,再由同一数值计算 rstd。删除输出阶段 1 / rstd^2 - eps 的反算,避免 variance << eps 时的精度损失;不增加 UB、tiling 字段或 workspace,归一化与批量 GM 写回方式不变。 Empty Tensor 维持当前策略:N = 0、C > 0 时 Host 设置 blockDim = 0、workspace 0,不下发 Kernel;C = 0 或 N > 0 且空间维为 0 时由 Host 返回失败。key 50000 和独立 Empty Kernel 已删除。 ## 关联的Issue 关联Issue #4374 ## 测试 - A/B 严格 variance 精度:从 6/14 提升到 13/14;唯一未通过项为原有的大均值病态输入,修改前后误差基本一致 - A/B 性能:相邻基线几何平均变化 +1.38%,处于预设 2% 噪声阈值内 - ophost UT:17/17 PASS - opkernel simulator UT:4/4 PASS - 安装包主 TTK:8/8 正常张量 PASS;FP16/FP32及key 1100/1110/1120/1130全部覆盖 - 两条 N = 0 用例均匹配 release binary,并得到 blockDim = 0、workspace (0,) 和 key 1100;TTK Kernel模式因不接受零核显示 INVALID_TILING,GEIR复验为2/2 PASS - 定向 Kernel 真机:8/8 PASS,三路输出均为100%,内存检查全部通过 - 现行泛化 release binary:480/480 BINARY_MATCH - 用户 full 泛化集:792/792执行、精度和内存检查PASS,2376个输出精度值均为100% - GEIR完整链路:10/10 PASS - git diff --check通过,最终diff仅包含5个norm/group_norm/op_kernel/arch35/头文件 ## 文档更新 - 更新 norm/group_norm/README.md,补充 Ascend 950 产品支持、参数、约束和调用说明 - 开发设计、A/B和全面验证归档统一保存在 /home/wx00445270/ops/changwei-op-dev/groupNormFinalArchive/,不提交到代码仓 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8449 | 22 天前 | |
update foreach and licence Co-authored-by: daiwei18<daiwei18@huawei.com> # message auto-generated for no-merge-commit merge: !966 merge master into master update foreach and licence Created-by: daiwei18 Commit-by: daiwei18 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!966 | 7 个月前 | |
feat(group_norm): add Ascend 950 implementation Co-authored-by: wangxun21<wangxun21@huawei.com> # message auto-generated for no-merge-commit merge: !8449 merge feat/group-norm-ascend950 into master feat(group_norm): add Ascend 950 implementation Created-by: wangxun21 Commit-by: wangxun21 Merged-by: cann-robot Description: ## 描述 新增 GroupNorm 算子的 Ascend 950 实现,包括算子定义、Host Tiling、AscendC Kernel、二进制配置及测试。 本轮修正 variance 输出数据流:在 FP32 寄存器得到最终总体方差时直接保存到已有 varianceOutTensor,再由同一数值计算 rstd。删除输出阶段 1 / rstd^2 - eps 的反算,避免 variance << eps 时的精度损失;不增加 UB、tiling 字段或 workspace,归一化与批量 GM 写回方式不变。 Empty Tensor 维持当前策略:N = 0、C > 0 时 Host 设置 blockDim = 0、workspace 0,不下发 Kernel;C = 0 或 N > 0 且空间维为 0 时由 Host 返回失败。key 50000 和独立 Empty Kernel 已删除。 ## 关联的Issue 关联Issue #4374 ## 测试 - A/B 严格 variance 精度:从 6/14 提升到 13/14;唯一未通过项为原有的大均值病态输入,修改前后误差基本一致 - A/B 性能:相邻基线几何平均变化 +1.38%,处于预设 2% 噪声阈值内 - ophost UT:17/17 PASS - opkernel simulator UT:4/4 PASS - 安装包主 TTK:8/8 正常张量 PASS;FP16/FP32及key 1100/1110/1120/1130全部覆盖 - 两条 N = 0 用例均匹配 release binary,并得到 blockDim = 0、workspace (0,) 和 key 1100;TTK Kernel模式因不接受零核显示 INVALID_TILING,GEIR复验为2/2 PASS - 定向 Kernel 真机:8/8 PASS,三路输出均为100%,内存检查全部通过 - 现行泛化 release binary:480/480 BINARY_MATCH - 用户 full 泛化集:792/792执行、精度和内存检查PASS,2376个输出精度值均为100% - GEIR完整链路:10/10 PASS - git diff --check通过,最终diff仅包含5个norm/group_norm/op_kernel/arch35/头文件 ## 文档更新 - 更新 norm/group_norm/README.md,补充 Ascend 950 产品支持、参数、约束和调用说明 - 开发设计、A/B和全面验证归档统一保存在 /home/wx00445270/ops/changwei-op-dev/groupNormFinalArchive/,不提交到代码仓 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8449 | 22 天前 |
GroupNorm
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:GroupNorm将输入
x的通道轴划分为num_groups组,对每个样本、每个组独立计算总体均值和总体方差。 -
计算公式:
y=x−meanvariance+eps×gamma+betay = \frac{x - mean}{\sqrt{variance + eps}} \times gamma + beta y=variance+epsx−mean×gamma+beta
输出
mean和variance的shape均为(N, num_groups)。data_format和is_training仅用于兼容既有GEIR接口,不参与Kernel计算。
参数说明
以下参数说明适用于GE图模式,aclnn API参数说明请参见aclnnGroupNorm.md。
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 公式中的输入x,shape至少为2维,按(N, C, *)解释。 |
FLOAT16、FLOAT | ND |
| gamma | 输入 | 公式中的gamma,为长度为C的一维Tensor,类型与x相同。 |
FLOAT16、FLOAT | ND |
| beta | 输入 | 公式中的beta,为长度为C的一维Tensor,类型与x相同。 |
FLOAT16、FLOAT | ND |
| num_groups | 必选属性 | 通道分组数,取值为正整数,且C必须能被其整除。 |
INT | - |
| data_format | 可选属性 | 输入数据格式,默认值为NCHW,当前仅用于接口兼容。 |
STRING | - |
| eps | 可选属性 | 添加到方差上的数值稳定项,默认值为0.0001。 |
FLOAT | - |
| is_training | 可选属性 | 是否为训练模式,默认值为true,当前仅用于接口兼容。 |
BOOL | - |
| y | 输出 | 公式中的输出y,shape和数据类型均与x相同。 |
FLOAT16、FLOAT | ND |
| mean | 输出 | 每组均值,shape为(N, num_groups)。 |
FLOAT16、FLOAT | ND |
| variance | 输出 | 每组总体方差,shape为(N, num_groups)。 |
FLOAT16、FLOAT | ND |
约束说明
- GE图模式下,所有输入和输出的数据类型必须一致。
- Ascend 950的GE图模式要求
C大于0;当N=0时三个输出均为空且不下发Kernel。 - Ascend 950的GE图模式在
N大于0时不支持包含零维的空Tensor,Host校验失败后不下发Kernel。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| GE图模式 | test_geir_group_norm.cpp | 通过GroupNorm IR构图调用。 |
| aclnn API | test_aclnn_GroupNorm.cpp | 通过aclnnGroupNorm接口调用。 |