| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs(AccumulateNV2): 修正 aclnnSum 产品支持表 310b 行 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6817 merge fix/accumulate-nv2-310b-support into master docs(AccumulateNV2): 修正 aclnnSum 产品支持表 310b 行 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 修改内容 math/accumulate_nv2/docs/aclnnSum.md 产品支持情况: diff <!-- npu="310b" id4 --> -- <term>Atlas 200I/500 A2推理产品</term>:不支持 +- <term>Atlas 200I/500 A2推理产品</term>:支持 <!-- end id4 --> ## 依据 以 canndev 内置库为权威源逐字段核对:ops/built-in/tbe/op_info_cfg/ai_core/ascend310b/aic-ascend310b-ops-info.ini 的 [AccumulateNV2] 条目与 ascend910b(Atlas A2 训练/推理)**完全相同**: | 字段 | ascend310b | ascend910b | |:--|:--|:--| | input0.dtype | float16,float,int32,int8,uint8 | 同 | | output0.dtype | float16,float,int32,int8,uint8 | 同 | | dynamicShapeSupport.flag | true | 同 | | dynamicRankSupport.flag | true | 同 | | op.pattern | broadcast | 同 | | attr_N | int / all / required | 同 | 无任何差别对待的技术依据。产品↔芯片映射依据 npu-arch/references/npu-hardware-params.md §0:Atlas 200I/500 A2 推理 = ASCEND310B / DAV_3002 / Ascend310B1~B4。 ## 一致性 修正后与仓内 math/accumulate_nv2/README.md 产品支持表一致(该行原本即为 √)。本 PR 只改这一行,README 与 CMake/spec 均不动。 > 说明:spec.yaml 的 supported_chips: [Ascend950PR, Ascend950DT] 描述的是**本次 Ascend C 交付的构建范围**(arch35 / DAV_3510),与产品支持表描述的**产品可用范围**(含 canndev 内置覆盖的 DAV_1001/2002/2201/3002 芯片)是两个口径,不矛盾。 ## 关联的Issue - [Documentation|文档反馈] aclnnSum.md 产品支持表 Atlas 200I/500 A2 推理产品误标"不支持" #4252 https://gitcode.com/cann/ops-math/issues/4252 See merge request: cann/ops-math!6817 | 12 天前 | |
fix: 修复多个算子样例运行问题 Co-authored-by: xujiachen8<xujiachen8@h-partners.com> # message auto-generated for no-merge-commit merge: !5878 merge fix-issue-3159-runtime-master-20260920T083218Z into master fix: 修复多个算子样例运行问题 Created-by: xujiachen8 Commit-by: xujiachen8 Merged-by: cann-robot Description: ## 描述 修复 #3159 中多个算子样例无法编译或运行的问题: - 修正 batch_to_space 和 random_uniform_v2 样例中 DT_INT64 输入使用 int32_t 缓冲的问题; - 修正 split 样例的 split_dim 类型、shape、值及动态输出声明; - 修正 accumulate_nv2 普通与 arch35 样例的公共 aclnn 头文件引用路径; - 限制 batch_to_space 的终端输出量,完整结果仍写入输出文件。 本次只修改 examples,不修改算子定义、host tiling 或 kernel 实现。 ## 关联的Issue Closes #3159 ## 测试 - CANN 9.2.0 + Ascend 950PR:Issue 涉及的 7 个 graph/eager 样例全部运行成功; - accumulate_nv2 普通与 arch35 两份样例均运行成功,输出数值符合预期; - exact-files pre-commit、clang-format、OAT 通过; - git -c core.whitespace=cr-at-eol diff --check 通过。 尚未执行四项 msSanitizer,待 PR CI 继续验证。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5878 | 1 个月前 | |
fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6584 merge fix/accumulate-nv2-remediation into master fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 概述 AccumulateNV2 算子验证整改全量提交(15 个 commit,基于 cann/ops-math master 干净分支,不含其他算子改动)。 ## 修复内容 ### P1 功能缺陷 - **dtype 一致性校验**(7f5b5cd8b):图路径/aclnn 第一段/tiling 三层补齐 161002 校验 - **fp32 极值 NaN**(7f5b5cd8b→6cbebfe2e):守卫式 TwoSum → TF 竞品同构顺序求和(N≤9 顺序、N>9 余数优先 8 分块,复现 TF AddN 舍入) - **N 参数校验**(7f5b5cd8b):Host 侧 N==输入数一致性 - **broadcast 收回**(ebb6bdce3):算子本体同 shape 强校验;aclnnSum 接口层保留 BroadcastTo 对齐 ### 死代码清理(4e840cb20,-242 行) - TilingData 删 needBroadcast/rank/outputShape/inputStrides 四个死字段(2632B→32B) - SIMT 路径收敛为 float 专用;删 GetBroadcastInputOffset 与全部广播死分支 - 入口模板以 UT_SOC_VERSION 守护,修复 UT 构建回归(fbd2dd9f2 连带) ### 性能优化(MTE bound 归一化后 NPU 优 A100 1.68x) - fp16 SIMT 地址提升(c4ca3f64e,+3%) - **fp16 非广播路径切换 Vector 管线 half 累加**(502dd93b6):中位加速 7.60x,吞吐 203→1615GB/s(峰值 2140),67 例三方比对 67/67 PASS ### golden 精度标准(2b074c737、743c3606a) - fp16 分路径:kernel 直连=numpy 顺序 half 累加(Vector Add 链同构);aclnnSum=fp32 promote - TestSpec 落位 tolerance:浮点 cross_check L1 / 整数 binary_equal L2 - kernel 直连参考移除 broadcast 对齐块(同 shape 契约) ### 文档(5c09ec3d0、4976fa638、fbd2dd9f2、72e543b8a) - README/aclnnSum 7 项修正;-1/-2 动态维语义声明;文件命名规范;格式规范清理 ## 验证(Ascend950PR / CANN 9.3.0) - UT:op_kernel 10/10、op_host 20/20 - TTK:fp16 大 shape 67/67;混合 dtype 26/26(另 10 例 rank-0 挂已知 CANN 框架 bug 的 Dyn/Cst 编译,Binary 全 100%) - v4 全量扫描:kernel L1 150 例 Binary 对 golden 零精度失败 - 性能无回归(清理前后中位持平) ## 关联的Issue [3870](https://gitcode.com/cann/ops-math/issues/3870) ## 测试 已通过对应算子的构建、UT 与 TTK 精度验证。 ## 文档更新 包含相关 README / 接口文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6584 | 15 天前 | |
fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6584 merge fix/accumulate-nv2-remediation into master fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 概述 AccumulateNV2 算子验证整改全量提交(15 个 commit,基于 cann/ops-math master 干净分支,不含其他算子改动)。 ## 修复内容 ### P1 功能缺陷 - **dtype 一致性校验**(7f5b5cd8b):图路径/aclnn 第一段/tiling 三层补齐 161002 校验 - **fp32 极值 NaN**(7f5b5cd8b→6cbebfe2e):守卫式 TwoSum → TF 竞品同构顺序求和(N≤9 顺序、N>9 余数优先 8 分块,复现 TF AddN 舍入) - **N 参数校验**(7f5b5cd8b):Host 侧 N==输入数一致性 - **broadcast 收回**(ebb6bdce3):算子本体同 shape 强校验;aclnnSum 接口层保留 BroadcastTo 对齐 ### 死代码清理(4e840cb20,-242 行) - TilingData 删 needBroadcast/rank/outputShape/inputStrides 四个死字段(2632B→32B) - SIMT 路径收敛为 float 专用;删 GetBroadcastInputOffset 与全部广播死分支 - 入口模板以 UT_SOC_VERSION 守护,修复 UT 构建回归(fbd2dd9f2 连带) ### 性能优化(MTE bound 归一化后 NPU 优 A100 1.68x) - fp16 SIMT 地址提升(c4ca3f64e,+3%) - **fp16 非广播路径切换 Vector 管线 half 累加**(502dd93b6):中位加速 7.60x,吞吐 203→1615GB/s(峰值 2140),67 例三方比对 67/67 PASS ### golden 精度标准(2b074c737、743c3606a) - fp16 分路径:kernel 直连=numpy 顺序 half 累加(Vector Add 链同构);aclnnSum=fp32 promote - TestSpec 落位 tolerance:浮点 cross_check L1 / 整数 binary_equal L2 - kernel 直连参考移除 broadcast 对齐块(同 shape 契约) ### 文档(5c09ec3d0、4976fa638、fbd2dd9f2、72e543b8a) - README/aclnnSum 7 项修正;-1/-2 动态维语义声明;文件命名规范;格式规范清理 ## 验证(Ascend950PR / CANN 9.3.0) - UT:op_kernel 10/10、op_host 20/20 - TTK:fp16 大 shape 67/67;混合 dtype 26/26(另 10 例 rank-0 挂已知 CANN 框架 bug 的 Dyn/Cst 编译,Binary 全 100%) - v4 全量扫描:kernel L1 150 例 Binary 对 golden 零精度失败 - 性能无回归(清理前后中位持平) ## 关联的Issue [3870](https://gitcode.com/cann/ops-math/issues/3870) ## 测试 已通过对应算子的构建、UT 与 TTK 精度验证。 ## 文档更新 包含相关 README / 接口文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6584 | 15 天前 | |
fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6584 merge fix/accumulate-nv2-remediation into master fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 概述 AccumulateNV2 算子验证整改全量提交(15 个 commit,基于 cann/ops-math master 干净分支,不含其他算子改动)。 ## 修复内容 ### P1 功能缺陷 - **dtype 一致性校验**(7f5b5cd8b):图路径/aclnn 第一段/tiling 三层补齐 161002 校验 - **fp32 极值 NaN**(7f5b5cd8b→6cbebfe2e):守卫式 TwoSum → TF 竞品同构顺序求和(N≤9 顺序、N>9 余数优先 8 分块,复现 TF AddN 舍入) - **N 参数校验**(7f5b5cd8b):Host 侧 N==输入数一致性 - **broadcast 收回**(ebb6bdce3):算子本体同 shape 强校验;aclnnSum 接口层保留 BroadcastTo 对齐 ### 死代码清理(4e840cb20,-242 行) - TilingData 删 needBroadcast/rank/outputShape/inputStrides 四个死字段(2632B→32B) - SIMT 路径收敛为 float 专用;删 GetBroadcastInputOffset 与全部广播死分支 - 入口模板以 UT_SOC_VERSION 守护,修复 UT 构建回归(fbd2dd9f2 连带) ### 性能优化(MTE bound 归一化后 NPU 优 A100 1.68x) - fp16 SIMT 地址提升(c4ca3f64e,+3%) - **fp16 非广播路径切换 Vector 管线 half 累加**(502dd93b6):中位加速 7.60x,吞吐 203→1615GB/s(峰值 2140),67 例三方比对 67/67 PASS ### golden 精度标准(2b074c737、743c3606a) - fp16 分路径:kernel 直连=numpy 顺序 half 累加(Vector Add 链同构);aclnnSum=fp32 promote - TestSpec 落位 tolerance:浮点 cross_check L1 / 整数 binary_equal L2 - kernel 直连参考移除 broadcast 对齐块(同 shape 契约) ### 文档(5c09ec3d0、4976fa638、fbd2dd9f2、72e543b8a) - README/aclnnSum 7 项修正;-1/-2 动态维语义声明;文件命名规范;格式规范清理 ## 验证(Ascend950PR / CANN 9.3.0) - UT:op_kernel 10/10、op_host 20/20 - TTK:fp16 大 shape 67/67;混合 dtype 26/26(另 10 例 rank-0 挂已知 CANN 框架 bug 的 Dyn/Cst 编译,Binary 全 100%) - v4 全量扫描:kernel L1 150 例 Binary 对 golden 零精度失败 - 性能无回归(清理前后中位持平) ## 关联的Issue [3870](https://gitcode.com/cann/ops-math/issues/3870) ## 测试 已通过对应算子的构建、UT 与 TTK 精度验证。 ## 文档更新 包含相关 README / 接口文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6584 | 15 天前 | |
fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6584 merge fix/accumulate-nv2-remediation into master fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 概述 AccumulateNV2 算子验证整改全量提交(15 个 commit,基于 cann/ops-math master 干净分支,不含其他算子改动)。 ## 修复内容 ### P1 功能缺陷 - **dtype 一致性校验**(7f5b5cd8b):图路径/aclnn 第一段/tiling 三层补齐 161002 校验 - **fp32 极值 NaN**(7f5b5cd8b→6cbebfe2e):守卫式 TwoSum → TF 竞品同构顺序求和(N≤9 顺序、N>9 余数优先 8 分块,复现 TF AddN 舍入) - **N 参数校验**(7f5b5cd8b):Host 侧 N==输入数一致性 - **broadcast 收回**(ebb6bdce3):算子本体同 shape 强校验;aclnnSum 接口层保留 BroadcastTo 对齐 ### 死代码清理(4e840cb20,-242 行) - TilingData 删 needBroadcast/rank/outputShape/inputStrides 四个死字段(2632B→32B) - SIMT 路径收敛为 float 专用;删 GetBroadcastInputOffset 与全部广播死分支 - 入口模板以 UT_SOC_VERSION 守护,修复 UT 构建回归(fbd2dd9f2 连带) ### 性能优化(MTE bound 归一化后 NPU 优 A100 1.68x) - fp16 SIMT 地址提升(c4ca3f64e,+3%) - **fp16 非广播路径切换 Vector 管线 half 累加**(502dd93b6):中位加速 7.60x,吞吐 203→1615GB/s(峰值 2140),67 例三方比对 67/67 PASS ### golden 精度标准(2b074c737、743c3606a) - fp16 分路径:kernel 直连=numpy 顺序 half 累加(Vector Add 链同构);aclnnSum=fp32 promote - TestSpec 落位 tolerance:浮点 cross_check L1 / 整数 binary_equal L2 - kernel 直连参考移除 broadcast 对齐块(同 shape 契约) ### 文档(5c09ec3d0、4976fa638、fbd2dd9f2、72e543b8a) - README/aclnnSum 7 项修正;-1/-2 动态维语义声明;文件命名规范;格式规范清理 ## 验证(Ascend950PR / CANN 9.3.0) - UT:op_kernel 10/10、op_host 20/20 - TTK:fp16 大 shape 67/67;混合 dtype 26/26(另 10 例 rank-0 挂已知 CANN 框架 bug 的 Dyn/Cst 编译,Binary 全 100%) - v4 全量扫描:kernel L1 150 例 Binary 对 golden 零精度失败 - 性能无回归(清理前后中位持平) ## 关联的Issue [3870](https://gitcode.com/cann/ops-math/issues/3870) ## 测试 已通过对应算子的构建、UT 与 TTK 精度验证。 ## 文档更新 包含相关 README / 接口文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6584 | 15 天前 | |
fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6584 merge fix/accumulate-nv2-remediation into master fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 概述 AccumulateNV2 算子验证整改全量提交(15 个 commit,基于 cann/ops-math master 干净分支,不含其他算子改动)。 ## 修复内容 ### P1 功能缺陷 - **dtype 一致性校验**(7f5b5cd8b):图路径/aclnn 第一段/tiling 三层补齐 161002 校验 - **fp32 极值 NaN**(7f5b5cd8b→6cbebfe2e):守卫式 TwoSum → TF 竞品同构顺序求和(N≤9 顺序、N>9 余数优先 8 分块,复现 TF AddN 舍入) - **N 参数校验**(7f5b5cd8b):Host 侧 N==输入数一致性 - **broadcast 收回**(ebb6bdce3):算子本体同 shape 强校验;aclnnSum 接口层保留 BroadcastTo 对齐 ### 死代码清理(4e840cb20,-242 行) - TilingData 删 needBroadcast/rank/outputShape/inputStrides 四个死字段(2632B→32B) - SIMT 路径收敛为 float 专用;删 GetBroadcastInputOffset 与全部广播死分支 - 入口模板以 UT_SOC_VERSION 守护,修复 UT 构建回归(fbd2dd9f2 连带) ### 性能优化(MTE bound 归一化后 NPU 优 A100 1.68x) - fp16 SIMT 地址提升(c4ca3f64e,+3%) - **fp16 非广播路径切换 Vector 管线 half 累加**(502dd93b6):中位加速 7.60x,吞吐 203→1615GB/s(峰值 2140),67 例三方比对 67/67 PASS ### golden 精度标准(2b074c737、743c3606a) - fp16 分路径:kernel 直连=numpy 顺序 half 累加(Vector Add 链同构);aclnnSum=fp32 promote - TestSpec 落位 tolerance:浮点 cross_check L1 / 整数 binary_equal L2 - kernel 直连参考移除 broadcast 对齐块(同 shape 契约) ### 文档(5c09ec3d0、4976fa638、fbd2dd9f2、72e543b8a) - README/aclnnSum 7 项修正;-1/-2 动态维语义声明;文件命名规范;格式规范清理 ## 验证(Ascend950PR / CANN 9.3.0) - UT:op_kernel 10/10、op_host 20/20 - TTK:fp16 大 shape 67/67;混合 dtype 26/26(另 10 例 rank-0 挂已知 CANN 框架 bug 的 Dyn/Cst 编译,Binary 全 100%) - v4 全量扫描:kernel L1 150 例 Binary 对 golden 零精度失败 - 性能无回归(清理前后中位持平) ## 关联的Issue [3870](https://gitcode.com/cann/ops-math/issues/3870) ## 测试 已通过对应算子的构建、UT 与 TTK 精度验证。 ## 文档更新 包含相关 README / 接口文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6584 | 15 天前 | |
fix(AccumulateNV2): golden三方绑定改回真竞品算子AccumulateNV2(tf.function图模式) Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6705 merge fix/accumulate-nv2-golden-thirdparty into master fix(AccumulateNV2): golden三方绑定改回真竞品算子AccumulateNV2(tf.function图模式) Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 背景 !6584 合并后,golden 的 ThirdPartyTF 三方绑定经历了两次修正,本 PR 交付最终版本:三方在 GPU server 上以 **TF 官方执行语义**运行**真竞品算子 AccumulateNV2**。 ## 根因(源码复核) tf.raw_ops.AccumulateNV2 是 TF **从未编译过 kernel 的 stub 占位算子**(官方源码列入 OPS_WITHOUT_KERNEL_ALLOWLIST): - 图模式:由 AccumulateNV2RemovePass(core/common_runtime/accumulate_n_optimizer.cc,PRE_PLACEMENT 优化 pass)重写为 TemporaryVariable+AssignAdd 顺序累加链(while 循环内退化为 AddN) - eager 模式:Python wrapper 直接回退 add_n(TF 1.15 math_ops.py 注释:TemporaryVariable not currently supported in eager mode) 因此 TTK xpu-server 的 eager 三方执行**直接调用 raw op 必报 no registered kernels**(两台 GPU server 与本地 CPU 均实测复现),与 TF 版本、服务器环境无关。 ## 修改内容 tests/assets/golden.py ThirdPartyTF: 1. 绑定 tf.raw_ops.AccumulateNV2,用 tf.function 包一层走**图模式**路径——由 TF 官方重写为 TemporaryVariable+AssignAdd 链执行,原始 dtype 顺序累加、不升精度 2. 去掉原实现的 np.asarray 主机绕行:同 shape 张量直传保持在 dispatch 设备(GPU)上;异 shape(aclnnSum 路线)在 device 上 tf.broadcast_to 对齐,TF 拒绝的高秩组合回退 numpy ## 验证(GPU server 176.176.0.134,cross_check L1) | 项目 | 结果 | |------|------| | 精度 8 用例(含 fp16_extreme) | 8/8 PASS(dyn 编译 + bin release 双模式) | | --xpu-perf 三方执行位置 | device_us=6.99、peak_memory_mb=0.00256(真实 GPU 执行) | | 批跑 kernel 路线 85 例 | 62 PASS(23 失败均为已知族:6×zero-dim 编译 bug #1896 + 17×GEIR dyn 用例路线不匹配) | | 批跑 aclnn 路线 84 例 | 84/84 全 PASS(含 8 例异 shape broadcast) | | 批跑 geir 路线(静态 shape 31 + 空 tensor 8) | 39/39 全 PASS | | 三方错误计数(全批次) | 0(no registered kernels / GOLDEN_FAILURE / third_party 错误) | | 浮点 cross_check L1(必须三方参与) | 70 例全 PASS | 附:17 例 GEIR dyn 用例换旧 AddN 绑定对照重跑,17/17 逐条结果一致,证明其失败(TTK 比对框架对动态 shape 元数据输出的 cross_check 缺口)与本改动无关。 关联:cann/ops-math !6584(已合并,本 PR 为其 golden 三方绑定的后续修正) ## 关联的Issue - [Bug-Report|缺陷反馈] AccumulateNV2 golden 三方绑定 eager 直调 TF stub 算子必报 no registered kernels,三方比对无法执行 #4251 https://gitcode.com/cann/ops-math/issues/4251 See merge request: cann/ops-math!6705 | 11 天前 | |
[CANNBot]InvGrad、ApproximateEqual、AccumulateNV2算子支持Ascend950 AscendC实现 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !2965 merge migrate/inv_grad into master [CANNBot]InvGrad、ApproximateEqual、AccumulateNV2算子支持Ascend950 AscendC实现 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1673 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> OBP冒烟 22382 通过 二级冒烟 5884 通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2965 | 5 个月前 | |
fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Co-authored-by: gcw_YBIAEfqJ<wangweidong15@huawei.com> # message auto-generated for no-merge-commit merge: !6584 merge fix/accumulate-nv2-remediation into master fix(AccumulateNV2): P1缺陷整改+broadcast收回+fp16性能优化+golden精度标准落位 Created-by: gcw_YBIAEfqJ Commit-by: gcw_YBIAEfqJ Merged-by: cann-robot Description: ## 概述 AccumulateNV2 算子验证整改全量提交(15 个 commit,基于 cann/ops-math master 干净分支,不含其他算子改动)。 ## 修复内容 ### P1 功能缺陷 - **dtype 一致性校验**(7f5b5cd8b):图路径/aclnn 第一段/tiling 三层补齐 161002 校验 - **fp32 极值 NaN**(7f5b5cd8b→6cbebfe2e):守卫式 TwoSum → TF 竞品同构顺序求和(N≤9 顺序、N>9 余数优先 8 分块,复现 TF AddN 舍入) - **N 参数校验**(7f5b5cd8b):Host 侧 N==输入数一致性 - **broadcast 收回**(ebb6bdce3):算子本体同 shape 强校验;aclnnSum 接口层保留 BroadcastTo 对齐 ### 死代码清理(4e840cb20,-242 行) - TilingData 删 needBroadcast/rank/outputShape/inputStrides 四个死字段(2632B→32B) - SIMT 路径收敛为 float 专用;删 GetBroadcastInputOffset 与全部广播死分支 - 入口模板以 UT_SOC_VERSION 守护,修复 UT 构建回归(fbd2dd9f2 连带) ### 性能优化(MTE bound 归一化后 NPU 优 A100 1.68x) - fp16 SIMT 地址提升(c4ca3f64e,+3%) - **fp16 非广播路径切换 Vector 管线 half 累加**(502dd93b6):中位加速 7.60x,吞吐 203→1615GB/s(峰值 2140),67 例三方比对 67/67 PASS ### golden 精度标准(2b074c737、743c3606a) - fp16 分路径:kernel 直连=numpy 顺序 half 累加(Vector Add 链同构);aclnnSum=fp32 promote - TestSpec 落位 tolerance:浮点 cross_check L1 / 整数 binary_equal L2 - kernel 直连参考移除 broadcast 对齐块(同 shape 契约) ### 文档(5c09ec3d0、4976fa638、fbd2dd9f2、72e543b8a) - README/aclnnSum 7 项修正;-1/-2 动态维语义声明;文件命名规范;格式规范清理 ## 验证(Ascend950PR / CANN 9.3.0) - UT:op_kernel 10/10、op_host 20/20 - TTK:fp16 大 shape 67/67;混合 dtype 26/26(另 10 例 rank-0 挂已知 CANN 框架 bug 的 Dyn/Cst 编译,Binary 全 100%) - v4 全量扫描:kernel L1 150 例 Binary 对 golden 零精度失败 - 性能无回归(清理前后中位持平) ## 关联的Issue [3870](https://gitcode.com/cann/ops-math/issues/3870) ## 测试 已通过对应算子的构建、UT 与 TTK 精度验证。 ## 文档更新 包含相关 README / 接口文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6584 | 15 天前 |
AccumulateNV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:返回输入tensors列表中每个输入tensor依次做add求和。AccumulateNv2与AddN执行相同的运算,但不等待所有输入就绪后再开始求和,可在输入就绪时间不同时节省内存。
-
计算公式:
y=∑i=0N−1xiy = \sum_{i=0}^{N-1} x_i y=i=0∑N−1xi
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 需要求和的输入tensor列表,公式中的x_i。图模式直连时各输入shape需完全相同(算子本体不支持broadcast);通过aclnnSum接口调用时各tensor的shape可不同,由接口层完成对齐。 | FLOAT16、FLOAT、INT8、INT32、UINT8 | ND |
| y | 输出 | 求和结果tensor,公式中的y。 | FLOAT16、FLOAT、INT8、INT32、UINT8 | ND |
| N | 属性 | 输入tensor列表的大小。N需大于等于1,且必须与实际输入Tensor的数量一致;不一致时在图编译阶段报错。 | INT | - |
约束说明
- 通过aclnnSum接口调用时,输入tensors列表中各tensor的shape需满足broadcast关系,由实现层完成对齐;通过图模式(GE/GEIR)直连算子时,各输入shape需完全相同且与输出y一致(算子本体不支持broadcast),shape不一致时在图编译阶段报错。
- 输入tensors与输出的数据类型需相同,且tensors列表内各tensor的数据类型需一致;不一致时在图编译阶段报错。
- 输入维度不超过8维:aclnnSum接口第一段校验拦截(ACLNN_ERR_PARAM_INVALID 161002);图模式直连时在tiling阶段拦截。
- 图模式(GE/GEIR)直连时输入数量需在[1, 40]范围内(tiling阶段拦截,超限报错);aclnnSum接口内部按16个一组分组累加,不受该上限约束。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_sum | 通过aclnnSum接口方式调用AccumulateNV2算子。 |
| 图模式(GEIR) | accumulate_nv2_proto.h | 通过AccumulateNV2算子IR定义在GE图中调用(各输入shape需完全相同)。 |