| 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 | |
fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Co-authored-by: doufloat<baijinxiang@huawei.com> # message auto-generated for no-merge-commit merge: !6800 merge fix/pow-out-dtype-whitelist into master fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Created-by: doufloat Commit-by: doufloat Merged-by: cann-robot Description: ## 描述 **问题** aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor、aclnnSubs 和 aclnnSub 在 out 传入资料输出支持列表之外的 dtype(如 DT_INT4)时,A2/A3 会继续进入 Build/Cast 并返回内部错误码,而不是第一段接口约定的 161002。 **根因** 输出类型此前只经过可转换关系检查。部分非法 dtype 能被 CanCast 放行,随后在 Build/Cast 阶段失败,导致参数非法被降级为内部错误。 **方案** - 新增 out dtype 白名单校验,但仅在 NpuArch::DAV_2201(A2/A3)启用。 - aclnn_pow.cpp 和 aclnn_pow_tensor_tensor.cpp 覆盖 aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor 三个 out-of-place 入口。 - aclnn_sub.cpp 在 CheckParamsScalar 和 CheckParams 中覆盖 aclnnSubs、aclnnSub;原地接口继续沿用原有输入别名校验。 - A5 走 DAV_3510 路径,不启用新增白名单,保持原有 CanCast 及后续 Build 行为不变。 - A2/A3 合法 out dtype 路径不变,仅将非法 dtype 的返回码修正为 ACLNN_ERR_PARAM_INVALID(161002)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3964 ## 测试 **A2:Ascend 910B3,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含新增 A2 非法 out 校验和 A5 不拦截回归用例。 - 当前补丁真机矩阵:PowScalarTensor/PowTensorScalar/PowTensorTensor/Subs/Sub 的 INT4/UINT1/HIFLOAT8/FLOAT8_E5M2/COMPLEX32 均返回 161002。 - 合法路径未被误拦截:三个 Pow 入口的 INT64 -> UINT16/UINT32/UINT64 均返回 0;FLOAT/FLOAT16/DOUBLE/BF16/COMPLEX64/COMPLEX128 输出在对应可转换输入下保持 0。 **A5:Ascend 950PR,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含 Ascend950_out_dtype_check_not_applied 回归用例。 - 当前补丁真机矩阵与基线一致: | out dtype | PowScalarTensor | PowTensorScalar / PowTensorTensor / Subs / Sub | | --- | --- | --- | | INT4 / UINT1 / COMPLEX32 | 561000 | 561103 | | HIFLOAT8 / FLOAT8_E5M2 | 0 | 0 | - 新增 A2/A3 out 白名单在 A5 未生效;合法 INT64 -> UINT16/UINT32/UINT64 仍返回 0。 **实现路径说明** A3 与 A2 均走 DAV_2201 路径,共用同一实现。本轮完成 A2 和 A5 真机验证。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6800 | 10 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 | |
fix: 清理 Math 独立实现路径的未使用 workspace Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !6711 merge fix/math-independent-workspace into master fix: 清理 Math 独立实现路径的未使用 workspace Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 修改内容 清理 Lerp、Muls、Pow、Select SIMT、TanhGrad 独立实现路径中未使用的 workspace 申请。没有额外用户 workspace 的路径将申请量设为 0;kernel 入口允许零 workspace 下继续执行计算。保留内部 kernel 的 workspace 参数及原调用形式。 | 算子/路径 | 修改位置 | 修改内容及影响 | | --- | --- | --- | | Lerp | math/lerp/op_host/arch35/lerp_tiling_arch35.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量及原赋值方式;不改变 tiling key 和计算分支。 | | Muls | math/muls/op_host/arch35/muls_tiling_arch35.cpp | 将申报的 workspace 从固定系统预留量改为 0,计算和 tiling 策略保持原样。 | | Pow | math/pow/op_host/arch35/pow_tiling_arch35.cpp | GetWorkspaceSize 中将申请量设为 0,移除仅为查询系统 workspace 大小使用的平台信息获取和 include。 | | Pow | math/pow/op_kernel/pow_apt.cpp | 移除 workspace 为空时直接返回的判断,以及无用的系统 workspace 设置、用户 workspace 地址转换,使零 workspace 时仍执行原计算分支。内部 Init 接口及 workspace 参数保持原样。 | | Select SIMT | math/select/op_host/arch35/select_simt_tiling.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量和赋值形式;只修改 SIMT 路径。 | | TanhGrad | math/tanh_grad/op_host/arch35/tanh_grad_tiling_arch35.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量和赋值形式,不调整原计算流程。 | 同时原样包含 Lerp、Muls、Pow、TanhGrad 对应的 4 个算子 Host UT 文件修改,将 workspace 期望值更新为 0。本 PR 共 10 个文件。 ## 与 BRC PR 的边界 本 PR 为原 [PR #6242](https://gitcode.com/cann/ops-math/pull/6242) 的独立实现部分;公共 BroadcastBaseTiling(BRC)模板相关的 29 个算子 UT 文件留在 #6242。 Select 的现有 UT 命中 BRC 路径,原期望为 16 MiB,其断言修改留在 #6242;本 PR 的 Select 修改仅为 SIMT 独立实现。Lerp、Pow、TanhGrad 中使用底层 BroadcastTiling 的实现按其自行申报 workspace 的实际修改归入本 PR。 两个 PR 使用相同基线,各一次提交,改动文件互不重叠;两份补丁合并后的 Git tree 与拆分前提交 6875c10f04af0cc8f012cba867892a1f660702d5 完全一致。拆分未改变任何代码内容、排版或换行格式。 ## 验证 拆分前整体联调版本在 CANN 9.2.0、已接入 Broadcast workspace 补丁的依赖环境下,完成 Host UT 对象编译、静态归档重建、最终链接及运行,333/333 通过,39 个改动文件 pre-commit 通过。 该结果属于拆分前整体版本,不替代本 PR 拆分后的线上 CI。Pow arch35 原有用例整段处于注释中,其 workspace 断言未实际执行。 ## 关联 公共 BRC 算子 UT 更新:[PR #6242](https://gitcode.com/cann/ops-math/pull/6242)。本 PR 不修改 CMake、公共 UT 框架或远程依赖版本。 See merge request: cann/ops-math!6711 | 13 days ago | |
fix: 清理 Math 独立实现路径的未使用 workspace Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !6711 merge fix/math-independent-workspace into master fix: 清理 Math 独立实现路径的未使用 workspace Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 修改内容 清理 Lerp、Muls、Pow、Select SIMT、TanhGrad 独立实现路径中未使用的 workspace 申请。没有额外用户 workspace 的路径将申请量设为 0;kernel 入口允许零 workspace 下继续执行计算。保留内部 kernel 的 workspace 参数及原调用形式。 | 算子/路径 | 修改位置 | 修改内容及影响 | | --- | --- | --- | | Lerp | math/lerp/op_host/arch35/lerp_tiling_arch35.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量及原赋值方式;不改变 tiling key 和计算分支。 | | Muls | math/muls/op_host/arch35/muls_tiling_arch35.cpp | 将申报的 workspace 从固定系统预留量改为 0,计算和 tiling 策略保持原样。 | | Pow | math/pow/op_host/arch35/pow_tiling_arch35.cpp | GetWorkspaceSize 中将申请量设为 0,移除仅为查询系统 workspace 大小使用的平台信息获取和 include。 | | Pow | math/pow/op_kernel/pow_apt.cpp | 移除 workspace 为空时直接返回的判断,以及无用的系统 workspace 设置、用户 workspace 地址转换,使零 workspace 时仍执行原计算分支。内部 Init 接口及 workspace 参数保持原样。 | | Select SIMT | math/select/op_host/arch35/select_simt_tiling.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量和赋值形式;只修改 SIMT 路径。 | | TanhGrad | math/tanh_grad/op_host/arch35/tanh_grad_tiling_arch35.cpp | WORKSPACE_SIZE 从 32 改为 0,保留常量和赋值形式,不调整原计算流程。 | 同时原样包含 Lerp、Muls、Pow、TanhGrad 对应的 4 个算子 Host UT 文件修改,将 workspace 期望值更新为 0。本 PR 共 10 个文件。 ## 与 BRC PR 的边界 本 PR 为原 [PR #6242](https://gitcode.com/cann/ops-math/pull/6242) 的独立实现部分;公共 BroadcastBaseTiling(BRC)模板相关的 29 个算子 UT 文件留在 #6242。 Select 的现有 UT 命中 BRC 路径,原期望为 16 MiB,其断言修改留在 #6242;本 PR 的 Select 修改仅为 SIMT 独立实现。Lerp、Pow、TanhGrad 中使用底层 BroadcastTiling 的实现按其自行申报 workspace 的实际修改归入本 PR。 两个 PR 使用相同基线,各一次提交,改动文件互不重叠;两份补丁合并后的 Git tree 与拆分前提交 6875c10f04af0cc8f012cba867892a1f660702d5 完全一致。拆分未改变任何代码内容、排版或换行格式。 ## 验证 拆分前整体联调版本在 CANN 9.2.0、已接入 Broadcast workspace 补丁的依赖环境下,完成 Host UT 对象编译、静态归档重建、最终链接及运行,333/333 通过,39 个改动文件 pre-commit 通过。 该结果属于拆分前整体版本,不替代本 PR 拆分后的线上 CI。Pow arch35 原有用例整段处于注释中,其 workspace 断言未实际执行。 ## 关联 公共 BRC 算子 UT 更新:[PR #6242](https://gitcode.com/cann/ops-math/pull/6242)。本 PR 不修改 CMake、公共 UT 框架或远程依赖版本。 See merge request: cann/ops-math!6711 | 13 days ago | |
fix(aicpu): 补齐手写json缺失的opInfo字段 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !6519 merge fix/aicpu-opinfo-metadata into master fix(aicpu): 补齐手写json缺失的opInfo字段 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因、所采取的方法。--> 对齐 AICPU 整包生成侧与 CANN 9.2.0 安装版 aicpu_kernel.json 的 opInfo 元数据,补齐 6 个算子的字段缺失: - conversion/identity/op_kernel_aicpu/identity.json - 补齐 formatAgnostic=True、opsFlag=OPS_FLAG_OPEN(对齐安装版) - kernelSo 指向修正(libnn → libmath)已由 master db84400e2 率先合入,本 PR rebase 后不再重复改动 - math/rsqrt/op_kernel_aicpu/rsqrt.json、math/sqrt/op_kernel_aicpu/sqrt.json:补齐 formatAgnostic=True(对齐安装版) - math/tile/op_kernel_aicpu/tile.json:补齐 opsFlag=OPS_FLAG_OPEN(对齐安装版及同族 TileWithAxis 注册写法) - math/pow/op_kernel_aicpu/pow.json:补齐 opsFlag=OPS_FLAG_CLOSE(对齐安装版) - math/greater_equal/op_kernel_aicpu/greater_equal_aicpu_def.cpp:补齐 TRUE_FORMAT_AGNOSTIC 覆盖(安装版比较家族 GreaterEqual/Less/NotEqual 均为 True、Equal 为 False,本仓 Less/NotEqual 已覆盖,唯独 GreaterEqual 漏了 formatAgnostic) 背景:三仓 AICPU 整包 json 与安装版逐算子逐字段比对([cann/ops-cv#1276](https://gitcode.com/cann/ops-cv/issues/1276))定位到上述差异。76 个 AICPU 算子中 5 个为手写 json(identity/rsqrt/sqrt/tile/pow),不走 ApplyMathAicpuDefaultCfg+ExtendCfgInfo 注册机制,迁移/手写时字段易漏,本 PR 逐一补齐;后续建议将手写 json 逐步迁移为 def 注册,从根本上规避。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [cann/ops-cv#1276](https://gitcode.com/cann/ops-cv/issues/1276)(AICPU整包json与安装版json 算子定义差异梳理) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 5 个手写 json 语法校验通过 - 76 个 AICPU 算子源码推导值与本机 CANN 9.2.0 安装版全量比对:修复后 6 个目标算子的 formatAgnostic/opsFlag 与安装版完全对齐,其余 3 项差异(Coordinates1DTo2D/OnesLike/TileWithAxis,整包侧演进项)保持不变 - trans_soc / find_value_by_key 等既有机制无行为影响(GreaterEqual 仅新增一行 ExtendCfgInfo 覆盖) - pre-commit 全钩子通过(json 校验 / clang-format / codespell / OAT 合规) - 重建验证:重新 configure(重编 71 个 opdef 生成 aicpu_kernel.ini)并构建 gen_aicpu_json_from_opdef,再生成 aicpu_math.json——76 算子齐全,6 个目标算子的 kernelSo/formatAgnostic/opsFlag 全部落盘正确(Identity kernelSo 由 libnn 修正为 libmath,三处 True/OPEN 补齐,GreaterEqual 经 def→ini→json 链路生效),全量比对无回归 - 符号核验:构建 libmath_aicpu_kernels.so(aarch64),RunCpuKernel 动态符号导出、"Identity" 注册名字符串在 so 内,非本仓 AICPU 算子名(Conv2D/ROIAlign 等)反证 0 命中 - 未执行 NPU 上板运行与完整打包封测(无硬件环境;CUST 注册加载行为需端到端图编译验证) - rebase 至 master f597aafa 后复核:剩余字段补齐改动与原 PR 逐行一致,master db84400e2 已含 kernelSo 修正(本 PR 该项变为无差异),pre-commit 全钩子通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6519 | 13 days ago | |
fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Co-authored-by: doufloat<baijinxiang@huawei.com> # message auto-generated for no-merge-commit merge: !6800 merge fix/pow-out-dtype-whitelist into master fix(pow/sub): A2/A3补充out dtype白名单校验(#3964) Created-by: doufloat Commit-by: doufloat Merged-by: cann-robot Description: ## 描述 **问题** aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor、aclnnSubs 和 aclnnSub 在 out 传入资料输出支持列表之外的 dtype(如 DT_INT4)时,A2/A3 会继续进入 Build/Cast 并返回内部错误码,而不是第一段接口约定的 161002。 **根因** 输出类型此前只经过可转换关系检查。部分非法 dtype 能被 CanCast 放行,随后在 Build/Cast 阶段失败,导致参数非法被降级为内部错误。 **方案** - 新增 out dtype 白名单校验,但仅在 NpuArch::DAV_2201(A2/A3)启用。 - aclnn_pow.cpp 和 aclnn_pow_tensor_tensor.cpp 覆盖 aclnnPowScalarTensor、aclnnPowTensorScalar、aclnnPowTensorTensor 三个 out-of-place 入口。 - aclnn_sub.cpp 在 CheckParamsScalar 和 CheckParams 中覆盖 aclnnSubs、aclnnSub;原地接口继续沿用原有输入别名校验。 - A5 走 DAV_3510 路径,不启用新增白名单,保持原有 CanCast 及后续 Build 行为不变。 - A2/A3 合法 out dtype 路径不变,仅将非法 dtype 的返回码修正为 ACLNN_ERR_PARAM_INVALID(161002)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3964 ## 测试 **A2:Ascend 910B3,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含新增 A2 非法 out 校验和 A5 不拦截回归用例。 - 当前补丁真机矩阵:PowScalarTensor/PowTensorScalar/PowTensorTensor/Subs/Sub 的 INT4/UINT1/HIFLOAT8/FLOAT8_E5M2/COMPLEX32 均返回 161002。 - 合法路径未被误拦截:三个 Pow 入口的 INT64 -> UINT16/UINT32/UINT64 均返回 0;FLOAT/FLOAT16/DOUBLE/BF16/COMPLEX64/COMPLEX128 输出在对应可转换输入下保持 0。 **A5:Ascend 950PR,CANN 9.2.0** - math_op_api_ut:158/158 PASS,包含 Ascend950_out_dtype_check_not_applied 回归用例。 - 当前补丁真机矩阵与基线一致: | out dtype | PowScalarTensor | PowTensorScalar / PowTensorTensor / Subs / Sub | | --- | --- | --- | | INT4 / UINT1 / COMPLEX32 | 561000 | 561103 | | HIFLOAT8 / FLOAT8_E5M2 | 0 | 0 | - 新增 A2/A3 out 白名单在 A5 未生效;合法 INT64 -> UINT16/UINT32/UINT64 仍返回 0。 **实现路径说明** A3 与 A2 均走 DAV_2201 路径,共用同一实现。本轮完成 A2 和 A5 真机验证。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6800 | 10 days ago | |
feat(ascend960): 39个算子使能ascend960 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !6137 merge feat/ascend960-enable into master feat(ascend960): 39个算子使能ascend960 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 为 ascend960 新增芯片形态适配算子,覆盖 math 与 conversion 目录下共 39 个算子,无 kernel 代码改动,复用现有 arch35 kernel 与 tiling。 ### 改动原因 ascend960 为新增芯片形态,现有算子需补齐平台注册、编译单元与二进制配置后,才能在新平台上被算子信息库发现、编译并选择正确的 kernel 二进制。 ### 改动方法 1. **算子信息库注册**( *_def.cpp):新增 ascend960 平台注册(AICore().AddConfig) 2. **编译配置**(CMakeLists.txt):在 SUPPORT_COMPUTE_UNIT / COMPUTE_UNITS 中追加 ascend960,并在 SUPPORT_TILING_DIR 中追加对应的 arch35(tiling 目录沿用 arch35);Add / ClipByValue / ClipByValueV2 的编译选项并入既有 add_kernel_sources 块(选项与 ascend950 / ascend350 既有块一致) 3. **二进制配置**:为每个算子新增 ascend960 二进制配置目录,包含 <op>_binary.json 与 <op>_simplified_key.ini,内容沿用 ascend950 既有配置 4. **中央注册表**(scripts/kernel/binary_config/ascendc_config.json):33 个既有条目补齐 ascend960 编译选项,Mod 条目同步补齐(平台注册与编译单元主线已就绪) 5. **注册口径**:Signbit / Add / Ger / Gcd / BitwiseXor 不在中央注册表新增 ascend960 条目(Add 编译选项已迁移至 CMake 管理,其余沿主线现状,主线 ascend950 亦无对应条目) ### 算子清单(共 39 个) - math 目录 36 个:Add、Sub、Mul、Muls、Div、DivNoNan、RealDiv、FloorDiv、FloorMod、BitwiseAnd、BitwiseOr、BitwiseXor、Equal、NotEqual、Less、LessEqual、Greater、GreaterEqual、LogicalAnd、LogicalOr、Select、SelectV2、Maximum、Minimum、Pow、Lerp、BiasAdd、Axpy、AxpyV2、Addcmul、Addcdiv、Ger、Gcd、Signbit、TanhGrad、SquaredDifference、Mod - conversion 目录 2 个:ClipByValue、ClipByValueV2 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3597 ## 测试 - pre-commit 全部 hook 通过(clang-format / OAT / codespell 等) - CI compile 门禁通过(18 个 Compile Job) - ascend960 内核编译与上板验证待具备 ascend960 环境后执行,合入前补充 ## 文档更新 无(仅平台适配,不改变算子功能与约束,不涉及 README 更新) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6137 | 25 days ago | |
产品名变更 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 | 1 month ago |
Pow
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
接口功能:exponent每个元素作为input对应元素的幂完成计算。
-
计算公式:
outi=inputiexponentiout_i = input_i^{exponent_i} outi=inputiexponenti
参数说明
| 参数名 | 输入/输出 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| input | 输入 | 表示底数。数据类型与exponent满足TensorScalar互推导关系。 | FLOAT、FLOAT16、DOUBLE、INT16、INT32、INT64、INT8、UINT8、COMPLEX64、COMPLEX128、BFLOAT16 | ND |
| exponent | 输入 | 表示指数。数据类型与input满足TensorScalar互推导关系。 | FLOAT、FLOAT16、DOUBLE、INT16、INT32、INT64、INT8、UINT8、COMPLEX64、COMPLEX128、BFLOAT16 | ND |
| out | 输出 | 表示input的exponent次幂。数据类型需要是input的数据类型与exponent的数据类型推导之后可转换的数据类型(参见互转换关系)。 | FLOAT、FLOAT16、DOUBLE、INT16、INT32、INT64、INT8、UINT8、COMPLEX64、COMPLEX128、BFLOAT16 | ND |
约束说明
算子约束:INT32整型计算在如下范围以外的场景,会出现超时。
| shape | exponent_value |
|---|---|
| <=100000(十万) | -200000000~200000000(两亿) |
| <=1000000(百万) | -20000000~20000000(两千万) |
| <=10000000(千万) | -2000000~2000000(两百万) |
| <=100000000(亿) | -200000~200000(二十万) |
| <=1000000000(十亿) | -20000~20000(两万) |
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_exp2 | 通过aclnnExp2接口方式调用Pow算子。 |
| aclnn调用 | test_aclnn_pow_tensor_tensor | 通过aclnnPowTensorTensor接口方式调用Pow算子。 |
| 图模式调用 | test_geir_pow | 通过算子IR构图方式调用Pow算子。 |