文件最后提交记录最后更新时间
新增aclnnAddV3和aclnnInplaceAddV3接口文档 Co-authored-by: xiu_ling_wang<wangxiuling2@h-partners.com> # message auto-generated for no-merge-commit merge: !2030 merge aclnnaddv3-md into master 新增aclnnAddV3和aclnnInplaceAddV3接口文档 Created-by: xiu_ling_wang Commit-by: xiu_ling_wang Merged-by: cann-robot Description: ## 描述 新增aclnnAddV3和aclnnInplaceAddV3接口文档。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!20301 个月前
950支持静态库功能检查与修正 Co-authored-by: sunwenlong<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !1872 merge static into master 950支持静态库功能检查与修正 Created-by: LuckySun Commit-by: sunwenlong Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 950支持静态库功能检查与修正。 使用新的tiling模板注册接口。 修改examples中的数据类型,因为走AICORE时不支持double ## 关联的Issue [[Bug-Report|缺陷反馈]: 静态库执行算子样例时出现错误](https://gitcode.com/cann/ops-math/issues/1074) ## 测试 算子样例执行通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!18722 个月前
Revert "限制adds/gt scalar/ge tensor在支持非连续tensor时的范围" Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !2755 merge ops_math_reback into master Revert "限制adds/gt scalar/ge tensor在支持非连续tensor时的范围" Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Revert "限制adds/gt scalar/ge tensor在支持非连续tensor时的范围" ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1576 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 执行相关算子的二级冒烟测试和算子泛化测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> / ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!275516 天前
math仓算子代码整改 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !881 merge math_op_back_1 into master math仓算子代码整改 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 math仓算子代码整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!8814 个月前
refactor: 重构kernel编译配置体系,将配置从JSON/INI迁移至CMake声明式函数 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3010 merge master into master refactor: 重构kernel编译配置体系,将配置从JSON/INI迁移至CMake声明式函数 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 本 PR 重构了 kernel 二进制编译的配置管理体系,将原来分散在 ascendc_config.json*_simplified_key.iniall_ops_impl_mode.ini 等文件中的编译配置项(simplified_key_mode、impl_mode、auto_sync、compile_options)统一迁移为 CMake 声明式函数 add_kernel_sources() 的方式管理。 ### 改动原因 原有配置方式需要手动维护多处配置文件(JSON/INI),容易遗漏且难以追溯配置来源。通过将配置下沉到各算子目录的 op_kernel/CMakeLists.txt 中,使配置与代码就近维护,降低出错概率。 ### 改动方法 1. **新增 add_kernel_sources() CMake 函数**(cmake/func.cmake):算子通过在 op_kernel/CMakeLists.txt 中调用此函数声明编译参数(COMPUTE_UNITS、SIMPLIFIED_KEY、AUTO_SYNC、IMPL_MODE、OPTIONS),函数将配置收集到 CMake CACHE 变量列表中 2. **新增 gen_ops_compile_ini.py 脚本**:在编译阶段将 CMake 收集的配置列表生成 kernel-options-{soc_version}.ini 文件 3. **修改 build_binary_opc_gen_task.sh**:优先从新生成的 kernel-options-*.ini 读取 simplified_key 和 impl_mode 配置,找不到时降级到原有 ini 文件 4. **修改 gen_compile_option.sh**:优先从 kernel-options-*.ini 读取 auto_sync 和 compile_options,降级到 ascendc_config.json 5. **迁移 Add 算子配置**:将 Add 算子从 ascendc_config.json 迁移到 math/add/op_kernel/CMakeLists.txt,删除 math/add/op_host/config/ascend950/add_simplified_key.ini 6. **重构 get_op_type_from_op_name 函数**:从 gen_ops_info.cmake 移至 func.cmake,简化参数签名(移除 OP_DIR 参数) 7. **其他修复**:opp_uninstall.sh 修复变量名拼写错误(_module_apth_module_path);gen_binary_info_config.py 将 WARNING 日志降级为 INFO ## 关联的Issue - #1730 ## 测试 - Add 算子的 kernel 编译配置已通过新的 CMake 方式验证 - 构建系统全量编译通过 - binary 编译流程(asc_opc)使用新配置文件生成的参数正确 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:构建系统重构 See merge request: cann/ops-math!30104 天前
refactor: 重构kernel编译配置体系,将配置从JSON/INI迁移至CMake声明式函数 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3010 merge master into master refactor: 重构kernel编译配置体系,将配置从JSON/INI迁移至CMake声明式函数 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 本 PR 重构了 kernel 二进制编译的配置管理体系,将原来分散在 ascendc_config.json*_simplified_key.iniall_ops_impl_mode.ini 等文件中的编译配置项(simplified_key_mode、impl_mode、auto_sync、compile_options)统一迁移为 CMake 声明式函数 add_kernel_sources() 的方式管理。 ### 改动原因 原有配置方式需要手动维护多处配置文件(JSON/INI),容易遗漏且难以追溯配置来源。通过将配置下沉到各算子目录的 op_kernel/CMakeLists.txt 中,使配置与代码就近维护,降低出错概率。 ### 改动方法 1. **新增 add_kernel_sources() CMake 函数**(cmake/func.cmake):算子通过在 op_kernel/CMakeLists.txt 中调用此函数声明编译参数(COMPUTE_UNITS、SIMPLIFIED_KEY、AUTO_SYNC、IMPL_MODE、OPTIONS),函数将配置收集到 CMake CACHE 变量列表中 2. **新增 gen_ops_compile_ini.py 脚本**:在编译阶段将 CMake 收集的配置列表生成 kernel-options-{soc_version}.ini 文件 3. **修改 build_binary_opc_gen_task.sh**:优先从新生成的 kernel-options-*.ini 读取 simplified_key 和 impl_mode 配置,找不到时降级到原有 ini 文件 4. **修改 gen_compile_option.sh**:优先从 kernel-options-*.ini 读取 auto_sync 和 compile_options,降级到 ascendc_config.json 5. **迁移 Add 算子配置**:将 Add 算子从 ascendc_config.json 迁移到 math/add/op_kernel/CMakeLists.txt,删除 math/add/op_host/config/ascend950/add_simplified_key.ini 6. **重构 get_op_type_from_op_name 函数**:从 gen_ops_info.cmake 移至 func.cmake,简化参数签名(移除 OP_DIR 参数) 7. **其他修复**:opp_uninstall.sh 修复变量名拼写错误(_module_apth_module_path);gen_binary_info_config.py 将 WARNING 日志降级为 INFO ## 关联的Issue - #1730 ## 测试 - Add 算子的 kernel 编译配置已通过新的 CMake 方式验证 - 构建系统全量编译通过 - binary 编译流程(asc_opc)使用新配置文件生成的参数正确 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:构建系统重构 See merge request: cann/ops-math!30104 天前
optimize the performance of aicpu add operator Co-authored-by: ZhaiPeiChao<zhaipeichao@huawei.com> # message auto-generated for no-merge-commit merge: !2462 merge add into master optimize the performance of aicpu add operator Created-by: ZhaiPeiChao Commit-by: ZhaiPeiChao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AICPU add算子性能优化 fast path 负责 ≥99% 真实工作负载(深度学习里 Add 几乎都是 same-shape 或 scalar-bcast),通用 Eigen 路径只兜底多维非平凡 broadcast。 ``` Compute ├─ NormalMathCheck + dtype permission check ├─ 显式 raw-rank ≤ 8 校验 (保持与原实现等价的失败语义) ├─ Bcast::GenerateBcastInfo ├─ 显式 output-shape 一致性校验 ├─ [fast] 同形 shape → AddSameShape ├─ [fast] scalar bcast → AddScalarBcast └─ [fallback] AddGenericBcast → 原 Eigen TensorMap broadcast 路径 ``` Fast path 关键点: - **裸指针 + __restrict__ + 定长循环** → 编译器自动 NEON/AVX 向量化 (对应 V / E)。 - **按 output bytes 阈值动态选择串行 / ParallelFor** (对应 T / O10): - kParallelBytesThresh = 192 KiB:基于 10 μs ParallelFor 固定调度开销 + ~8 GB/s 单核 add 带宽反推 ~160 KiB,取 20% 余量。 - kBytesPerShard = 256 KiB:初版用 32 KiB 在 16 MiB 负载上产生 0.67× 回退(shard 数过多导致线程间抢带宽),调到 256 KiB 后恢复至 1.02×。 - **__builtin_expect(rc != OK, 0)** 标注冷分支,保持 C++17 合规(不使用 C++20 [[likely]])。 - **全部 reinterpret_castPtrToPtr<void,T>** 。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1522](https://gitcode.com/cann/ops-math/issues/1522) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 基于4线程进行测试: | 形状 | dtype | case | old (μs) | new (μs) | **speedup** | |---|---|---|---:|---:|---:| | SameShape | fp32 | 4 KiB | 0.41 | 0.50 | 0.82× | | SameShape | fp32 | 96 KiB | 2.48 | 2.52 | 0.99× | | SameShape | fp32 | 1 MiB | 48.99 | 18.42 | **2.66×** | | SameShape | fp32 | 16 MiB | 766 | 752 | 1.02× | | ScalarBcast | fp32 | 4 KiB | 0.43 | 0.39 | 1.10× | | ScalarBcast | fp32 | 96 KiB | 3.02 | 1.87 | **1.62×** | | ScalarBcast | fp32 | 1 MiB | 31.7 | 8.07 | **3.93×** | | ScalarBcast | fp32 | 16 MiB | 557 | 520 | 1.07× | | SameShape | i64 | 2 MiB | 80 | 37 | **2.16×** | | ScalarBcast | i64 | 8 KiB | 0.38 | 0.14 | **2.77×** | | ScalarBcast | i64 | 192 KiB | 5.99 | 2.04 | **2.94×** | | ScalarBcast | i64 | 2 MiB | 509 | 187 | **2.73×** | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24629 天前
optimize the performance of aicpu add operator Co-authored-by: ZhaiPeiChao<zhaipeichao@huawei.com> # message auto-generated for no-merge-commit merge: !2462 merge add into master optimize the performance of aicpu add operator Created-by: ZhaiPeiChao Commit-by: ZhaiPeiChao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AICPU add算子性能优化 fast path 负责 ≥99% 真实工作负载(深度学习里 Add 几乎都是 same-shape 或 scalar-bcast),通用 Eigen 路径只兜底多维非平凡 broadcast。 ``` Compute ├─ NormalMathCheck + dtype permission check ├─ 显式 raw-rank ≤ 8 校验 (保持与原实现等价的失败语义) ├─ Bcast::GenerateBcastInfo ├─ 显式 output-shape 一致性校验 ├─ [fast] 同形 shape → AddSameShape ├─ [fast] scalar bcast → AddScalarBcast └─ [fallback] AddGenericBcast → 原 Eigen TensorMap broadcast 路径 ``` Fast path 关键点: - **裸指针 + __restrict__ + 定长循环** → 编译器自动 NEON/AVX 向量化 (对应 V / E)。 - **按 output bytes 阈值动态选择串行 / ParallelFor** (对应 T / O10): - kParallelBytesThresh = 192 KiB:基于 10 μs ParallelFor 固定调度开销 + ~8 GB/s 单核 add 带宽反推 ~160 KiB,取 20% 余量。 - kBytesPerShard = 256 KiB:初版用 32 KiB 在 16 MiB 负载上产生 0.67× 回退(shard 数过多导致线程间抢带宽),调到 256 KiB 后恢复至 1.02×。 - **__builtin_expect(rc != OK, 0)** 标注冷分支,保持 C++17 合规(不使用 C++20 [[likely]])。 - **全部 reinterpret_castPtrToPtr<void,T>** 。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1522](https://gitcode.com/cann/ops-math/issues/1522) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 基于4线程进行测试: | 形状 | dtype | case | old (μs) | new (μs) | **speedup** | |---|---|---|---:|---:|---:| | SameShape | fp32 | 4 KiB | 0.41 | 0.50 | 0.82× | | SameShape | fp32 | 96 KiB | 2.48 | 2.52 | 0.99× | | SameShape | fp32 | 1 MiB | 48.99 | 18.42 | **2.66×** | | SameShape | fp32 | 16 MiB | 766 | 752 | 1.02× | | ScalarBcast | fp32 | 4 KiB | 0.43 | 0.39 | 1.10× | | ScalarBcast | fp32 | 96 KiB | 3.02 | 1.87 | **1.62×** | | ScalarBcast | fp32 | 1 MiB | 31.7 | 8.07 | **3.93×** | | ScalarBcast | fp32 | 16 MiB | 557 | 520 | 1.07× | | SameShape | i64 | 2 MiB | 80 | 37 | **2.16×** | | ScalarBcast | i64 | 8 KiB | 0.38 | 0.14 | **2.77×** | | ScalarBcast | i64 | 192 KiB | 5.99 | 2.04 | **2.94×** | | ScalarBcast | i64 | 2 MiB | 509 | 187 | **2.73×** | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24629 天前
适配PG short_soc_version Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !2804 merge mc62 into master 适配PG short_soc_version Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子适配PG特性,将math仓 mc62cm12a/MC62CM12A 改成 mc62/MC62 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1732 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!28043 天前
math仓算子代码整改 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !881 merge math_op_back_1 into master math仓算子代码整改 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 math仓算子代码整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!8814 个月前
README.md

Add

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

  • 算子功能:对输入完成相加操作。

  • 计算公式:

    y=x1+x2y = x_1 + x_2

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x1 输入 公式中的输入张量x_1 BOOL, INT8, INT16, INT32, INT64, UINT8, FLOAT64, FLOAT16, BFLOAT16, FLOAT32, COMPLEX128, COMPLEX64, COMPLEX32, STRING ND
x2 输入 公式中的输入张量x2 同x1 ND
y 输出 公式中的输出张量y 同x1 ND

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_add 通过aclnnAdd和aclnnInplaceAdd接口方式调用Add算子
图模式调用 test_geir_add 通过算子IR构图方式调用Add算子