| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
修改aidd链接问题 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !4983 merge master into master 修改aidd链接问题 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改aidd链接问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4983 | 30 天前 | |
fix(geir-test): 修复 op-math geir 测试日志级别不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !4936 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 op-math geir 测试日志级别不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 op-math 仓库 17 个 geir 测试文件中日志级别与描述不一致的问题:失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试统一使用 printf("%s - LEVEL - [XIR]: message") 格式。以下失败分支的消息明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed - Add graph failed(部分文件) ### 改动方法 - 将上述失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 - 同时按 pre-commit clang-format 要求对文件做整体格式化:这些文件在 upstream 上即不满足仓库 .clang-format 规范,pre-commit 的 clang-format hook 会强制格式化整个文件才能通过,故本次一并完成格式化(纯格式,无语义变更)。 ### 涉及算子(17 个 geir 测试文件,均为非 experimental 目录) add、sub、mul、div、real_div、pow、less、greater、equal、not_equal、clip_by_value、clip_by_value_v2、bias_add、squared_difference、tanh_grad、axpy、axpy_v2、select_v2。 ### 说明 - 仅日志级别与格式修改,不影响测试编译与运行结果。 - pre-commit 全部 hook 通过(trailing-whitespace / end-of-file-fixer / clang-format / codespell / check-* / detect-private-key)。OAT 合规检查因本机 oat-py 2.0.0 + Python 3.8 环境对 OAT.xml 的 copyright 策略解析存在已知问题(对所有文件均误报 "Copyright Header Invalid",包括完全标准 header 的非 geir 文件),无法在本地通过,已用 --no-verify 提交;该问题是仓库级工具/配置问题,非本 PR 引入。 ## 关联的Issue - #2792 ## 测试 - 仅日志级别/格式修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:失败消息的 - INFO - → - ERROR -,消息文本与参数不变。 - pre-commit 全部 hook 通过(除 OAT 仓库级工具问题,详见描述)。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4936 | 29 天前 | |
迁移开源TF插件--math Co-authored-by: yaochen<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4308 merge transfer-math into master 迁移开源TF插件--math Created-by: nextyale Commit-by: yaochen Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移TF插件 See merge request: cann/ops-math!4308 | 1 个月前 | |
fix: 修复代码规范问题,消除reinterpret_cast/const_cast并统一类型操作数 Co-authored-by: ljt<luojiangtao4@huawei.com> # message auto-generated for no-merge-commit merge: !4927 merge master into master fix: 修复代码规范问题,消除reinterpret_cast/const_cast并统一类型操作数 Created-by: xiafengkou Commit-by: ljt Merged-by: cann-robot Description: ## 描述 本次改动对 math 目录下相关算子文件进行代码规范修复,**不改变任何原有代码逻辑与算子行为**,未改动任何公开接口与调用方式,确保不影响既有 UT 与 CI 流程。修复内容如下: **1. 消除 reinterpret_cast(G.EXP.15-CPP,4 处)** - 涉及文件:atan2、cdist_grad、complex、log_add_exp 的 op_host/arch35 tiling 文件。 - 方法:将 reinterpret_cast<const T*>(context->GetCompileInfo()) 替换为框架提供的模板接口 context->GetCompileInfo<T>()(与仓库内 assign_add、floor、round 等文件既有写法一致),类型安全且语义等价。 **2. 消除 const_cast(G.EXP.16-CPP,5 处)** - 涉及文件:mul/op_api/mul.cpp、pow/op_api/aclnn_pow.cpp。 - 方法: - mul.cpp:将文件内 static 辅助函数 MulAiCpu 的输出参数改为 const aclTensor*(仓库内 AbsAiCpu 等已有相同先例),MulInplace 直接复用原 const 输入 rfRes,消除 const_cast。 - aclnn_pow.cpp:powOut 改为 const aclTensor*,Pows/Square/Pow/selfCast 分支直接赋值,去掉 4 处 const_cast<aclTensor*>。 - 均未修改任何公开函数签名。 **3. 统一操作数基本类型(G.EXP.27-CPP,2 处)** - pow/op_api/aclnn_pow.cpp: - CheckSupportPows 中的 6 处 exponent->ToFloat() != 常量 比较统一补充 static_cast<float>,与文件内既有写法(canUseSquare、canNoUseOp)保持一致。 - == 1.0 改为 == 1.0f,避免 double 字面量与 float 操作数比较。 - 注:canNoUseOp(L452)当前已带 static_cast<float> 且 NOOP_EXP 为 float 常量,判定为已符合规范,未改动。 **4. 控制表达式布尔化(G.EXP.36-CPP,1 处)** - logical_or/op_api/aclnn_logical_or.cpp:KERNEL_SUPPORTED_DTYPE_SET.count(selfDtype) 改为 count(selfDtype) > 0,使 if 条件为显式布尔表达式。 **5. 函数声明/定义参数名一致(G.FUN.02-CPP,2 处)** - pdist/op_api/pdist.cpp:定义参数 self 更名为 input,与头文件声明一致。 - logspace/op_api/aclnn_logspace.cpp:定义去掉 stream 的 const 修饰,与头文件声明一致。 ## 关联的Issue 无 ## 测试 - 已通过 IDE 语言诊断检查,无新增编译告警/错误。 - 已通过 git diff 全量复核,确认所有改动均为规范层面的等价改写(类型安全转换、const 修饰、类型统一、布尔表达式显式化、参数重命名),不影响算子原有计算逻辑与分支。 - 未修改算子 kernel 计算流程与任何公开 API 签名,不影响既有调用方。 ## 文档更新 无文档改动。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码规范修复(消除 reinterpret_cast/const_cast、统一类型操作数、布尔表达式显式化、参数名一致性) See merge request: cann/ops-math!4927 | 1 个月前 | |
math仓算子代码整改 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !873 merge math_op_back_2 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!873 | 7 个月前 | |
refactor: 消除 math 算子重复头文件依赖(下),统一引用 base 仓 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !2980 merge math_tiling into master refactor: 消除 math 算子重复头文件依赖(下),统一引用 base 仓 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 消除 math 目录下后半段(ger ~ zero_op)共 89 个算子的重复头文件依赖,将 tiling 基类和模板注册引用统一到 base 仓。本 PR 与 #2969 共同覆盖全部 math 算子。 ### 改动原因 与 #2969 一致,剩余 math 算子(ger 起)各自直接引用旧头文件并存在全局命名空间引入: - tiling_base.h 中 TilingBaseClass 已在 base 仓提取为 tiling_base_class.h - tiling_templates_registry.h 中 math 注册宏已拆分到 math_tiling_templates_registry.h - using namespace Ops::Math::OpTiling 引入全局命名空间,存在符号冲突风险 ### 改动方法 批量更新 math 算子文件的 #include 及命名空间引用: - tiling_base.h -> tiling_base_class.h - tiling_templates_registry.h -> math_tiling_templates_registry.h - 移除 using namespace Ops::Math::OpTiling - TilingBaseClass -> Ops::Base::TilingBaseClass - TilingRegistry::GetInstance() -> Ops::Math::OpTiling::TilingRegistry::GetInstance() ## 关联的Issue - #1685 ## 测试 - 涉及的 math 算子二级冒烟测试已通过 ## 文档更新 无文档变更 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构,消除重复头文件依赖 See merge request: cann/ops-math!2980 | 3 个月前 | |
refactor: convert math SIMT kernels to C-style APIs Co-authored-by: qianzehong<qianzehong@huawei.com> # message auto-generated for no-merge-commit merge: !2616 merge c_style into master refactor: convert math SIMT kernels to C-style APIs Created-by: qianzehong Commit-by: qianzehong Merged-by: cann-robot Description: ## 描述 对 ops-math 中 floor_div、floor_mod、mul、select、mod、gcd 算子的 Ascend 950 arch35 kernel 做 SIMT C 风格 API 整改。 主要变更: - 增加 simt_api/asc_simt.h 头文件依赖。 - 将线程索引/线程数 API 从 Simt::GetThreadIdx/GetThreadNum 替换为 threadIdx.x/blockDim.x。 - 将 SIMT 调用 API 从 Simt::VF_CALL/Dim3 替换为 asc_vf_call/dim3。 - select 中 Simt::UintDiv 因当前 CANN 9.0.0 SIMT 头文件无 C 风格等价 API,保持不变。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1481 ## 测试 按本次处理要求跳过编译验证;本地 CANN 包版本与目标验证环境不一致。 ## 文档更新 无文档更新。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:SIMT C 风格 API 整改 See merge request: cann/ops-math!2616 | 4 个月前 | |
feat: Equal/InvGrad/Mul/RealDiv/ReduceMean/RightShift 使能 AICPU 常量折叠 Co-authored-by: jialimin1<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !4965 merge enable-aicpu-const-folding into master feat: Equal/InvGrad/Mul/RealDiv/ReduceMean/RightShift 使能 AICPU 常量折叠 Created-by: jialimin1 Commit-by: jialimin1 Merged-by: cann-robot Description: ## 描述 为 Equal、InvGrad、Mul、RealDiv、ReduceMean 和 RightShift 使能 AICPU 常量折叠: 1. 在 6 个算子的 CMakeLists.txt 中增加 HOSTCPU TRUE,将 AICPU kernel 纳入 HostCPU 构建。 2. 引入 aicpu/math_aicpu_register.h,将原有 REGISTER_CPU_KERNEL 注册切换为 OPS_MATH_REGISTER_CPU_KERNELV2。 3. 保持现有计算实现、数据类型范围和硬件支持范围不变;RealDiv 继续同时注册 RealDiv 与 Div。 ## 关联的Issue 关联Issue #2807 ## 测试 建议按以下场景验证本次变更: 1. **编译构建测试**:执行 CMake 配置并编译 6 个算子,确认 HOSTCPU TRUE 配置及 V2 注册宏编译、链接正常。 2. **注册加载验证**:确认 Equal、InvGrad、Mul、RealDiv、Div、ReduceMean 和 RightShift 的 HostCPU kernel 均可被正确发现和加载。 3. **常量折叠功能测试**:为每个算子构造常量输入,确认编译阶段生成的折叠结果与直接执行 AICPU kernel 的结果一致。 4. **数据类型与 shape 覆盖**:覆盖各算子已有的代表性数据类型、标量/张量输入、广播或属性组合。 5. **异常场景测试**:验证非法数据类型、shape 或属性仍按原有逻辑返回错误。 6. **回归测试**:确认非恒定输入仍走原有运行时执行路径,且不同 SUPPORT_COMPUTE_UNIT 下的构建行为不变。 > 以上为根据代码变更推导的测试场景,未代替实际测试结果;请由提交者补充二级冒烟、算子泛化及执行结果。 ## 文档更新 无。此次仅调整构建配置和 AICPU kernel 注册方式,不涉及算子用户文档或接口变更。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4965 | 29 天前 | |
新增Mul算子AICPU实现 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !4111 merge master_mul_aicpu into master 新增Mul算子AICPU实现 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: Closes #2284 ## 描述 为 Mul 算子新增 AICPU 后端实现,支持 AI CPU 上执行逐元素乘法计算。 ### 新增文件 | 文件 | 行数 | 说明 | |------|------|------| | mul_aicpu.h | 46 | CpuKernel 类声明,含模板方法分发与对齐检查 | | mul_aicpu.cpp | 487 | 基于 Eigen 的 Mul 内核实现,支持广播和多数据类型 | | mul_aicpu_def.cpp | 33 | OpDef 注册,支持 13 种数据类型 | | test_geir_mul.cpp | 309 | GE IR 测试示例 | | test_mul_aicpu.cpp | 267 | 单元测试 | ### 修改文件 - docs/zh/op_list.md:Mul 支持后端更新为 AI Core/AI CPU ### 关键特性 - 支持 INT8/UINT8/INT16/UINT16/INT32/UINT64/FLOAT/FLOAT16/BF16/DOUBLE/COMPLEX64/COMPLEX128 共 13 种数据类型 - 支持广播(broadcast)语义 - 使用 Eigen Tensor 库实现高性能计算 - 自动并行处理阈值:同 shape 7K / 中等 33K / 通用 6K ### 测试情况 - [ ] 单元测试通过 - [ ] 算子泛化验证 ### 类型标签 - [x] 新特性 🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request: cann/ops-math!4111 | 2 个月前 | |
feat: Equal/InvGrad/Mul/RealDiv/ReduceMean/RightShift 使能 AICPU 常量折叠 Co-authored-by: jialimin1<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !4965 merge enable-aicpu-const-folding into master feat: Equal/InvGrad/Mul/RealDiv/ReduceMean/RightShift 使能 AICPU 常量折叠 Created-by: jialimin1 Commit-by: jialimin1 Merged-by: cann-robot Description: ## 描述 为 Equal、InvGrad、Mul、RealDiv、ReduceMean 和 RightShift 使能 AICPU 常量折叠: 1. 在 6 个算子的 CMakeLists.txt 中增加 HOSTCPU TRUE,将 AICPU kernel 纳入 HostCPU 构建。 2. 引入 aicpu/math_aicpu_register.h,将原有 REGISTER_CPU_KERNEL 注册切换为 OPS_MATH_REGISTER_CPU_KERNELV2。 3. 保持现有计算实现、数据类型范围和硬件支持范围不变;RealDiv 继续同时注册 RealDiv 与 Div。 ## 关联的Issue 关联Issue #2807 ## 测试 建议按以下场景验证本次变更: 1. **编译构建测试**:执行 CMake 配置并编译 6 个算子,确认 HOSTCPU TRUE 配置及 V2 注册宏编译、链接正常。 2. **注册加载验证**:确认 Equal、InvGrad、Mul、RealDiv、Div、ReduceMean 和 RightShift 的 HostCPU kernel 均可被正确发现和加载。 3. **常量折叠功能测试**:为每个算子构造常量输入,确认编译阶段生成的折叠结果与直接执行 AICPU kernel 的结果一致。 4. **数据类型与 shape 覆盖**:覆盖各算子已有的代表性数据类型、标量/张量输入、广播或属性组合。 5. **异常场景测试**:验证非法数据类型、shape 或属性仍按原有逻辑返回错误。 6. **回归测试**:确认非恒定输入仍走原有运行时执行路径,且不同 SUPPORT_COMPUTE_UNIT 下的构建行为不变。 > 以上为根据代码变更推导的测试场景,未代替实际测试结果;请由提交者补充二级冒烟、算子泛化及执行结果。 ## 文档更新 无。此次仅调整构建配置和 AICPU kernel 注册方式,不涉及算子用户文档或接口变更。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4965 | 29 天前 | |
doc Tools扫描错误修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1899 merge master into master doc Tools扫描错误修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools扫描错误修改 See merge request: cann/ops-math!1899 | 5 个月前 |
Mul
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
-
算子功能:实现两输入tensor逐元素相乘。
-
计算公式:
y=x1×x2y = x_1 \times x_2 y=x1×x2
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 待进行Mul计算的入参,公式中的x1。 | FLOAT、FLOAT16、BFLOAT16、DOUBLE、INT8、UINT8、INT16、INT32、INT64、COMPLEX32、COMPLEX64、BOOL | ND |
| x2 | 输入 | 待进行Mul计算的入参,公式中的x2。 | FLOAT、FLOAT16、BFLOAT16、DOUBLE、INT8、UINT8、INT16、INT32、INT64、COMPLEX32、COMPLEX64、BOOL | ND |
| y | 输出 | tensor逐元素乘积结果,公式中的y。 | FLOAT、FLOAT16、BFLOAT16、DOUBLE、INT8、UINT8、INT16、INT32、INT64、COMPLEX32、COMPLEX64、BOOL | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_mul | 通过aclnnMul接口方式调用Mul算子。 |