| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 2 个月前 | |
fix: 修复 axpy 算子日志拼写错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !5186 merge fix/arithmetic-log-audit into master fix: 修复 axpy 算子日志拼写错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 axpy 算子日志中存在拼写错误,影响日志可读性与问题定位: - do no support inplace 应为 do not support(缺少 not) ### 改动方法 仅修改日志文案中的拼写错误,按 pre-commit clang-format 要求对文件做格式化,不改动 REG_OP/INPUT/OUTPUT/ATTR 等代码定义。 ## 关联的Issue - #2949 ## 测试 - 仅日志文案/格式修改,无逻辑变更,不影响编译与功能。 - pre-commit 全部代码 hook 通过(trailing-whitespace / end-of-file-fixer / clang-format / codespell / check-* / detect-private-key)。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!5186 | 1 个月前 | |
feat(graph): 补齐26个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !5904 merge feat/infer-datatype-migration into master feat(graph): 补齐26个算子InferDataType交付件(op_graph/*_graph_infer.cpp) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 按 graph_develop_guide.md 图模式交付件要求,为 26 个算子补齐 InferDataType 交付件 op_graph/<op>_graph_infer.cpp(IMPL_OP(Op).InferDataType(f) 注册),dtype 推导规则迁移自 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC 的类型推导语义: - **透传类(out=in0,19个)**:Addcdiv/Addcmul/Axpy/BiasAdd/BitwiseAnd/BitwiseOr/BitwiseXor/SquaredDifference/Div/DivNoNan/FloorDiv/FloorMod/Lerp/Maximum/Minimum/Mod/Muls/Sub/ClipByValue,复用仓内共享模板 ops::InferDataTypeOutputSameAsInput(truncate_mod/invert 同款); - **比较类输出 DT_BOOL(3个)**:GreaterEqual/LessEqual/LogicalAnd(对齐 logical_or/not_equal 现有写法); - **非0索引锚定(out=in1,2个)**:Select/SelectV2(v1.0 以 x1/then 为 dtype 基准,输入0 是 condition); - **Promote 提升(2个)**:Mul/TanhGrad,与 add_graph_infer 既有实现完全一致的写法(同款 33×33 提升表,对齐部署包 opcommon::PromoteType);非法组合(提升结果 DT_UNDEFINED)不做后置校验,由 tiling 侧 dtype 组合查表兜底,行为与 add 相同。 InferDataType 仅做纯推导,不增加输入 dtype 一致性校验:混合 dtype 组合沿用既有防线,由 tiling 侧 dtype 组合查表(arch35 DTYPE_MAP、CheckDtype 等)在编译期拦截,与仓内 add/axpy/sub 等存量算子行为一致。 CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3646 ## 测试 1. 语法检查:26 个新文件 g++ -fsyntax-only 全部通过; 2. 构建:bash build.sh --opgraph -j16 全量构建通过,26 个新 .o 均进入 graph_plugin_math_obj 并链接入 libopgraph_math.so(2026-10-13 校验回退后重新全量构建通过); 3. 行为验证:按 KernelRunContext ABI 构造 mock InferDataTypeContext 直接调用注册函数,26 算子覆盖透传(F16/BF16,含混合 dtype 取 in0)、BOOL、in1 锚定、Promote 组合及 Mul 提升表边界(输出 DT_UNDEFINED,行为与 add 一致),全部通过(2026-10-13 回退后全量重跑)。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5904 | 12 天前 | |
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 | 15 天前 | |
abs等算子A5实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !495 merge develop into master abs等算子A5实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 新增以下算子的A5实现 |序号| 算子 | 功能 | |--|--|--| |1| abs | 为输入张量的每一个元素取绝对值 | |2| add | 对输入完成相加操作 | |3| addcdiv | 张量运算函数,用于执行乘除加组合操作,将张量除法(带缩放)+ 张量加法合并为单个操作 | |4| addcmul | 张量运算函数,用于执行乘除加组合操作,将张量乘法(带缩放)+ 张量加法合并为单个操作 | |5| axpy | 源操作数中每个元素与标量求积后和目的操作数中的对应元素相加 | |6| bincount | 计算非负整数数组中每个数的频率 | |7| ceil | 返回输入tensor中每个元素向上取整的结果 | |8| clip_by_value_v2 | 将输入的所有元素限制在一定范围内 | |9| concat | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |10| concat_v2 | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |11| equal | 计算两个Tensor是否有相同的大小和元素,返回一个Bool类型 | |12|exp|返回一个新的张量,该张量的每个元素都是输入张量对应元素的指数| |13| fill | 对张量进行填充操作,支持非连续的Tensor操作 | |14| floor | 返回输入Tensor中每个元素向下取整,并将结果回填到输入Tensor中 | |15| floor_div | 完成除法计算,对余数向下取整 | |16| floor_mod | 用于计算两个数的模 | |17| is_neg_inf | 判断输入张量的元素是否为负无穷 | |18| is_pos_inf | 判断输入张量的元素是否为正无穷 | |19| less | 判断输入self中的每个元素是否小于输入other的值,返回一个Bool类型的Tensor | |20| less_equal | 判断输入self中的元素值是否小于等于other的值,并将self的每个元素的值与other值的比较结果写入out中 | |21| logical_and | 对两个输入张量的对应元素执行「与逻辑」判断,输出布尔型张量(True/False) | |22| log | 对输入张量x的元素,逐元素进行对数计算,并将结果保存到输出张量y中 | |23| not_equal | 逐元素比较两个输入张量是否不相等 | |24| ones_like | 返回形状和类型相同的张量,所有元素都设置为1 | |25|sign|对输入的tensor逐元素进行Sign符号函数的运算并输出结果tensor| |26| sqrt | 完成非负数平方根计算,负数情况返回nan | |27| sqrt_grad | 完成梯度平方根计算 | |28| square | 为输入张量的每一个元素计算平方值 | |29| squared_difference | 为第一个输入张量减去第二个输入张量,并计算其平方值 | |30| tanh | 激活函数,返回与输入tensor shape相同的tensor,对输入tensor进行elementwise的计算 | |31| tril | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的右上部分置零 | |32| triu | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的左下部分置零 | |33| zeros_like | 将张量填充为全零 | ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!495 | 9 个月前 | |
feat: 补充axpy算子L0级 UT Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !4050 merge feat/ut_axpy into master feat: 补充axpy算子L0级 UT Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 描述 补充axpy算子的op_api和op_host infershape级别单元测试,覆盖以下场景: - 各数据类型测试 - 不同维度测试 - 异常场景测试:nullptr输入输出、shape不匹配等 ## 关联的Issue #2465 ## 测试 - 编译验证:bash build.sh -u --soc=ascend950 --ops=axpy --noexec 编译通过 ## 文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UT补充 **关联 Issue:** #2465 See merge request: cann/ops-math!4050 | 2 个月前 | |
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 | 15 天前 | |
产品名变更 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 个月前 |
Axpy
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:源操作数中每个元素与标量求积后和目的操作数中的对应元素相加。
-
计算公式:
outi=selfi+alpha×otheriout_i=self_i + alpha × other_iouti=selfi+alpha×otheri
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 公式中的输入张量self_i | INT32, FLOAT16, BFLOAT16, FLOAT | ND |
| x2 | 输入 | 公式中的输入张量other_i | INT32, FLOAT16, BFLOAT16, FLOAT | ND |
| alpha | 属性 | 公式中的输入标量alpha | FLOAT | ND |
| y | 输出 | 公式中的输出张量out_i | INT32, FLOAT16, BFLOAT16, FLOAT | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_axpy | 通过算子IR构图方式调用Axpy算子 |