| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 13 天前 | |
算子资料修改后同步修改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 | 23 天前 | |
迁移开源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 | 2 个月前 | |
feat: 算子910B~910E区间判断追加IsRegBase()并统一DAV_3510硬编码判断以兼容后续Regbase芯片 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !5467 merge q_aclnn_version into master feat: 算子910B~910E区间判断追加IsRegBase()并统一DAV_3510硬编码判断以兼容后续Regbase芯片 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 以 RegBase 架构(NpuArch = DAV_3510,含 Ascend950 及后续 Regbase 芯片)兼容为目标,统一两类芯片判断写法: 1. **区间判断追加**:对 13 个算子 op_api 中 GetSocVersion() >= ASCEND910B && GetSocVersion() <= ASCEND910E 区间判断追加 || IsRegBase(),使 RegBase 平台在 SocVersion 区间之外时也复用 910B 支持分支(放开 BF16 dtype 校验) 2. **硬编码统一**:将 11 个算子文件中 case NpuArch::DAV_3510: 硬编码判断改为 IsRegBase() 谓词,后续 Regbase 芯片(IsRegBase 集合扩展新 arch 值时)无需逐文件修改即可自动命中 ## 修改内容一:区间判断追加(13 个文件,15 处) | 算子 | 文件 | 修改位置 | |------|------|----------| | less | math/less/op_api/aclnn_lt_scalar.cpp | GetDtypeSupportList、GetOutDtypeSupportList(2 处) | | less | math/less/op_api/aclnn_lt_tensor.cpp | GetDtypeSupportList、GetOutDtypeSupportList(2 处) | | less_equal | math/less_equal/op_api/aclnn_le_scalar.cpp | GetOutputDtypeSupportList(1 处) | | logical_or | math/logical_or/op_api/aclnn_logical_or.cpp | CheckSocVersionIsSupportBf16(1 处) | | maximum | math/maximum/op_api/aclnn_maximum.cpp | GetDtypeSupportList(1 处) | | minimum | math/minimum/op_api/aclnn_minimum.cpp | GetDtypeSupportList(1 处) | | mul | math/mul/op_api/aclnn_mul.cpp | GetDtypeSupportList(1 处) | | not_equal | math/not_equal/op_api/aclnn_logical_xor.cpp | CheckSocVersionIsSupportBf16(1 处) | | pow | math/pow/op_api/aclnn_pow.cpp | CheckSocVersionIsSupportBf16(1 处) | | pow | math/pow/op_api/aclnn_pow_tensor_tensor.cpp | CheckSocVersionIsSupportBf16(1 处) | | signbit | math/signbit/op_api/aclnn_signbit.cpp | GetDtypeSupportList(1 处) | | sub | math/sub/op_api/sub.cpp | IsAiCoreSupport(1 处) | | equal | math/tensor_equal/op_api/aclnn_equal.cpp | CheckSocVersionGe910B(1 处) | 其中 sub.cpp、aclnn_pow_tensor_tensor.cpp、aclnn_logical_xor.cpp、aclnn_equal.cpp 补充 #include "op_api/aclnn_check.h"。 pow.cpp 的 IsAiCoreSupport、aclnn_ne_scalar.cpp、aclnn_ne_tensor.cpp:区间判断前已有 if (IsRegBase()) 提前返回分支(追加会造成死条件),经评审不修改。 ## 修改内容二:硬编码判断统一(11 个文件,13 处) ### A类:switch 双 case(DAV_3510 与 DAV_2201 同分支,8处) switch 前置 if (IsRegBase(curArch)) 返回原 DAV_3510 分支列表,删除 case NpuArch::DAV_3510: fall-through 行: - Add:math/add/op_api/add.cpp、aclnn_add.cpp - Sub:math/sub/op_api/aclnn_sub.cpp、aclnn_rsub.cpp - div:math/div/op_api/div.cpp(补 include) - floordiv:math/floor_div/op_api/floordiv.cpp(补 include) - tanhgrad:math/tanh_grad/op_api/aclnn_tanh_backward.cpp - floormod:math/floor_mod/op_api/aclnn_remainder.cpp ### B类:switch 独立 case(DAV_3510 单独返回 REGBASE 专用列表,3处) switch 前置 if (IsRegBase(curArch)) 返回 REGBASE 列表,删除独立 case 块: - mul:math/mul/op_api/mul.cpp(REGBASE_AICORE_DTYPE_SUPPORT_LIST) - equal:math/equal/op_api/aclnn_eq_tensor.cpp、aclnn_eq_scalar.cpp(REGBASE_DTYPE_SUPPORT_LIST) ## 关联的Issue - #3100 (math仓910B~910E区间判断的RegBase兼容遗留清理:isclose恒真条件bug、8个同类判断文件未覆盖IsRegBase) ## 测试 - pre-commit 检查(clang-format/codespell/OAT 等)全部通过(含对修改文件的全量格式化) - 全部修改文件 g++ -fsyntax-only 语法验证通过 - 已触发 compile 编译 - 建议测试项: 1. RegBase(DAV_3510)平台验证上述算子 BF16 输入/输出 dtype 校验与 910B 平台一致 2. Ascend950 平台回归 A/B 类算子 dtype 选择行为不变 3. 回归 910B~910E、910/1980、310/310P 平台行为不受影响 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ### 关联issue - [cann/ops-math#5512(报错 dtype 支持列表双层中括号修复,同改 aclnn_remainder.cpp/eq 系列)](https://gitcode.com/cann/ops-math/pull/5512) - [cann/ops-math#5519(RemainderScalarTensor Regbase 计算类型校验,同改 aclnn_remainder.cpp)](https://gitcode.com/cann/ops-math/pull/5519) - [cann/ops-nn#10101(ops-nn 侧同类 Regbase 判断统一)](https://gitcode.com/cann/ops-nn/pull/10101) See merge request: cann/ops-math!5467 | 23 天前 | |
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 | 8 个月前 | |
feat: mul/select 算子支持 PcieThrough 场景识别与回退 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !5116 merge pcie_through into master feat: mul/select 算子支持 PcieThrough 场景识别与回退 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 mul、select 算子增加 PcieThrough(PCIe 直通)场景适配: 1. select simt tiling 回退: SelectSimtTiling::IsCapable 新增前置 IsPcieThrough() 判断,PcieThrough 场景返回 false,回退到低优先级的 SelectTiling(内部走 opbase broadcast 模板,PcieThrough 下强制 UB BRC 调度) 2. IsPcieThrough 实现与 broadcast 模板版本兼容方案对齐:高版本 SDK(METADEF_VERSION_NUM >= 90200000)调用 context_->GetPcieThroughFlag(),低版本走 #else 兜底 false 3. PcieThrough 能力标记:IMPL_OP_INFERSHAPE(Mul) 与 IMPL_OP_INFERSHAPE(Select) 在高版本 SDK 下链式调用 SetSupportPcieThrough() 4. 显式包含 version/metadef_version.h 5. 顺带对 select_simt_tiling.cpp/.h 与 mul_infershape.cpp 做格式化规整(缩进、大括号风格、文件末尾换行),无逻辑变更 配套模板侧 PR:https://gitcode.com/cann/opbase/pull/788(broadcast 模板 PcieThrough 识别与 UB BRC 强制调度)。本 PR 依赖其先合入,否则 PcieThrough 场景下 broadcast 模板缺少强制 UB BRC 与非连续拦截,行为不完整。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3018 ## 测试 - 当前 SDK metadef 版本低于 90200000,GetPcieThroughFlag/SetSupportPcieThrough 真实分支未编入,兜底路径下行为与合入前一致 - IsCapable 回退分支与 SetSupportPcieThrough 标记待 METADEF >= 90200000 环境编译运行验证 - CI 流水线运行中(ci-pipeline-running) ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5116 | 29 天前 | |
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 个月前 | |
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 | 11 天前 | |
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 | 11 天前 | |
concat/pad/slice等算子支持新平台 Co-authored-by: ASCEND222<dongfei16@h-partners.com> # message auto-generated for no-merge-commit merge: !5184 merge master into master concat/pad/slice等算子支持新平台 Created-by: ASCEND222 Commit-by: ASCEND222 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子支持新平台 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2992 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5184 | 1 个月前 | |
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 13 天前 |
Mul
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| 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算子。 |