| Files | Last commit | Last update |
|---|---|---|
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
算子资料修改后同步修改example Co-authored-by: FelixTang7<tangyanfeng@huawei.com> # message auto-generated for no-merge-commit merge: !5542 merge md into master 算子资料修改后同步修改example Created-by: FelixTang7 Commit-by: FelixTang7 Merged-by: cann-robot Description: ## 描述 部分算子资料有误,修改算子文档后同步对example进行修改 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3040 ## 测试 文档修改,无需测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5542 | 1 month ago | |
迁移开源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 | 3 months ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago | |
fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5815 merge fix/proto-comment-grammar into master fix(proto): 修复39个算子proto.h注释的拼写与语法错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 对 39 个算子的 op_graph/*_proto.h 注释做拼写与语法修复,仅注释与格式变更,不涉及任何代码逻辑: - **拼写错误**:select_v2 condittion→condition(2处)、axpy_v2 opratioan→operation、clip_by_value 英文 dtype 列表中的全角逗号改半角 - **系统性语法(历史模板复制扩散)**:Support broadcasting→Supports broadcasting(27个文件)、A ND→An ND(33个文件97处) - **单文件语法修复 71 处(含 signbit returns→Returns、axpy should→Should 两处句首大写补漏)**:ger has→have、addcmul/addcdiv multiply→multiplies、muls An required→A required、equal (x=y)→(x1==x2)、Elementwise→Element-wise、bias_add/lerp/gcd 语序与冠词修复、aicore→AiCore、mod/floor_mod 矛盾表述统一、句首大小写与标点空格等 - 附带 pre-commit 钩子强制规范化(clang-format 重排、尾随空白、文件末尾换行),并保留各文件原有行尾风格(CRLF/LF) 涉及算子:add/sub/mul/muls/div/real_div/floor_div/div_no_nan/pow/minimum/maximum/signbit/less/less_equal/greater/greater_equal/not_equal/equal/bias_add/squared_difference/lerp/logical_and/logical_or/bitwise_or/bitwise_and/bitwise_xor/tanh_grad/axpy/axpy_v2/addcmul/addcdiv/select/select_v2/mod/floor_mod/ger/gcd/clip_by_value/clip_by_value_v2 ## 关联的Issue - #3234 - https://gitcode.com/cann/ops-math/issues/3234 ## 测试 - 纯注释变更,无功能影响 - pre-commit 钩子全部通过(clang-format / trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 严格限定在上述 39 个算子文件,全仓其余算子未改动(其余算子同类问题可后续另行清理) ## 文档更新 不涉及仓内 docs/ 目录;本 PR 即为 proto.h 注释(算子原型文档源)的修正 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5815 | 17 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago | |
Mul AICPU kernel 内存优化及边界修复 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !5442 merge fix/mul-aicpu-memory into master Mul AICPU kernel 内存优化及边界修复 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 本 PR 优化 Mul AICPU 同 dtype 路径,并修复边界行为: - 使用定长广播计划和 flat、短内维 tile、stride 三条直接写出引擎替代 Eigen Tensor 广播,消除随输出规模增长的临时张量。 - 14 种 dtype 使用 NEON/SSE2 与标量尾部;复数块、尾、左右 scalar 和双向 tile 使用同一四乘式及操作数顺序。 - uint16 提升到 uint32_t 后乘;有符号整数显式保留低位,避免整数提升 UB 和 -ftrapv 中止。 - 校验 rank、负维、shape 乘积和输出广播 shape,并覆盖合法原地别名;x86 host const 的 float stride driver 精确关闭 ivopts,规避旧 GCC ICE。 - CodeCheck 跟进:合并两段重复坐标进位循环;将超大 GetMulDiffTypeCalls() 拆为 11 个短 row builder 并保留延迟初始化;UT 位模式转换改为检查返回值的 memcpy_s;混合 dtype 110 个映射逐项不变。 ## 关联的 Issue #3024(Greater / SplitV / Mul AICPU kernel 内存优化) ## 最终实测 基线固定为 canndev 最新 origin/master ad5b00d92f9b958189123c8d576517662c23a60c 的 Mul;本 PR 最终源码为最新 ops-math master 上的单提交。 ### 精度与安全 | 验证集 | 结果 | |---|---| | 常规同 dtype | 30 shape x 14 dtype,420/420 与 canndev 输出逐位一致 | | 混合 dtype | 20/20 kernel 成功且独立正确性标志通过 | | ARM 特殊值 | 420/420 候选成功;34 个基线结果差异档与 26 个基线 -ftrapv 中止档共 60/60 与 Torch 2.7.1+cpu 逐元素一致 | | uint16 边界 | 46340、46341、65535;覆盖 scalar、向量块、尾、广播、tile、stride | | 严格编译 | -O2 -Wall -Wextra -Werror -ftrapv 通过 | 最终 cpp 在 aarch64 GCC 13.3.0 下编译成功,未复现旧 GCC ICE;ARM 常规值 420/420 与 canndev 逐位一致,heap 420/420 无上升。 ### 性能 Kunpeng-920 aarch64,GCC 13.3.0,生产参数 -O2 -std=c++17 -ftrapv、ABI=0,固定 CPU3;baseline/candidate 使用相同编译链和交错 ABBA 顺序。比值为 candidate/canndev,严格门槛为 95% 区间上界不超过 1/0.97=1.03093。 | 批次 | 覆盖 | 直接通过 | 复测 | FAIL | 最终未决 | 点估计范围 | |---|---:|---:|---:|---:|---:|---:| | 同 dtype 完整矩阵 | 294 档 x 6 轮 | 288 | 6 | 0 | 0 | 0.00721-1.03693 | | 混合 dtype | 20 档 x 6 轮 + 32 轮复测 | 16 | 4 | 0 | 0 | 最终 0.71578-0.97685 | 6 个未决档均追加独立 32 轮 A/B 与同档 32 轮 canndev A/A;5 档直接通过。唯一剩余的 same_mid/uint64 32 轮为 1.01496 [0.99854, 1.03166],因上界仍高于门槛 0.00073,继续追加独立 128 轮,最终为 1.00642 [0.99945, 1.01345]。最终 PASS=294、FAIL=0、UNRESOLVED=0。 混合 dtype 六轮有 4 档因区间过宽进入复测;完整 20 档追加 32 轮后 20/20 通过,最大区间上界 1.00807,最终 PASS=20、FAIL=0、UNRESOLVED=0。 本地 x86 全矩阵 A/A 对同一 canndev 二进制仍产生 1 档假“超过 3% 回退”,因此该批 x86 数据只作诊断,不参与放行结论,也未从 A/B 中扣减 A/A。 ### 内存与体积 - ARM malloc 族探针:同 dtype 420/420 的峰值、分配次数和退出保留量均未上升,候选峰值 352-680 B、基线 352-43,488 B;混合 dtype 20/20 候选峰值 376-464 B、基线 376-488 B,分配次数 20/20 减少,正确性标志 20/20 为 1。 - 输出元素从 1,536 扫到 15,360,000,候选额外堆峰值恒为 400 B。 - 6 个进程 RSS 场景各 32 轮:5 档显著下降,mixed20 与基线等价;大张量 sweep_15360000/complex128 中位数由 487,274 KiB 降至 486,924 KiB。 - 相同 x86 编译参数下 kernel 对象 text 下降 90.000%。 6 个进程 RSS 场景各 32 轮的最终结果: | shape / dtype | canndev KiB | final KiB | final / canndev | 95% CI | |---|---:|---:|---:|---:| | same_mid / float | 63,748 | 63,430 | 0.9951 | [0.9943, 0.9958] | | same_mid / double | 120,124 | 119,858 | 0.9979 | [0.9975, 0.9983] | | inner_bcast_C3 / uint16 | 8,190 | 7,616 | 0.9353 | [0.9303, 0.9404] | | rank8_alt / complex128 | 8,324 | 7,986 | 0.9595 | [0.9537, 0.9654] | | sweep_15360000 / complex128 | 487,274 | 486,924 | 0.9993 | [0.9992, 0.9994] | | mixed20 | 7,464 | 7,472 | 0.9964 | [0.9908, 1.0019] | ### 端到端上板 - 最终三文件上传后在 aarch64 重新执行原生 AICPU UT,46/46 通过。 - build.sh --pkg、独立安装和构建库/安装库一致性检查通过。 - 910B3 graph 使用 uint16 覆盖 11 条执行路径,11/11 输出正确;11 条日志同时包含 aicpu_custom_scheduler、最终 mul_aicpu.cpp:1328 和 DT_UINT16。 - eager 使用 double,1/1 输出正确;日志统计 MulAiCpu=62、MulAiCore=0,并命中最终 kernel 的 DT_DOUBLE 日志。 - 临时 example dtype 修改已恢复,不在 PR 文件中。 ### UT 与门禁 - ops-math AICPU UT:46/46。 - pre-commit:提交前、提交时、提交后二次运行均通过;OAT 3/3 文件通过。 - CodeCheck 本地门禁:重复块、50 NBNC、危险 API、G.CNS.02-CPP、格式、git diff --check 与 -ftrapv 专项均通过。 - PR 仅包含一个提交和 mul_aicpu.cpp、mul_aicpu.h、test_mul_aicpu.cpp 三个文件;验证报告未提交。 - 最终 head de77b55fb5e2 的 workflow f5cda8b904fb450fbc71e060c7b457d9 已完成,PR 标签为 ci-pipeline-passed;当前 mergeable=true、conflict_passed=true。 ## 文档更新 无仓内文档改动;详细验证报告和原始数据仅保留在仓外。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5442 | 1 month ago | |
refactor: 统一 add/mul/pow/real_div/sub 算子代码风格 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6053 merge ccc_0929 into master refactor: 统一 add/mul/pow/real_div/sub 算子代码风格 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 对 add、mul、pow、real_div、sub 五个数学算子的代码进行统一的代码风格规范化(clang-format),包括: - 统一命名空间/类的括号风格与缩进 - 统一指针、引用修饰符位置(如 const char* const) - 规范函数声明与调用的换行对齐 - 统一注释风格及文件结尾换行符 - 修正 real_div 配置注释中的拼写错误(build-in → built-in) 本次改动仅涉及代码格式调整,不包含任何功能或逻辑变更。 ## 关联的Issue - #3464 ## 测试 无功能变更,仅代码格式调整,未新增测试。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码风格规范化 See merge request: cann/ops-math!6053 | 28 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago | |
Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Co-authored-by: chenlong1<chenlong1@huawei.com> Co-authored-by: jinzy1999<jinzy@pku.edu.cn> # message auto-generated for no-merge-commit merge: !6581 merge master into master Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 Created-by: chenlong1 Commit-by: chenlong1;jinzy1999 Merged-by: cann-robot Description: ## 描述 Kirin X90/9030支持Cast/Mul/Transpose/Add/ConcatD/StridedSlice算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3790 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6581 | 11 days ago |
Mul
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
| Kirin X90处理器系列产品 | √ |
| Kirin 9030处理器系列产品 | √ |
功能说明
-
算子功能:实现两输入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算子。 |