| Files | Last commit | Last update |
|---|---|---|
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 months 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 | |
refactor: 统一 math 目录 13 个算子的代码风格与格式规范 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6542 merge ccc_1020 into master refactor: 统一 math 目录 13 个算子的代码风格与格式规范 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本 PR 对 math 目录下 13 个算子进行代码风格规范化(代码格式化),不涉及功能性改动。涉及的算子包括:axpy、axpy_v2、bias_add、div、div_no_nan、gcd、ger、muls、select、select_v2、signbit、squared_difference、tanh_grad。 ### 改动原因 统一算子代码的编码风格与格式规范,提升代码可读性和可维护性。 ### 改动方法 对 C++ 源码、Python 脚本及 CMake 构建文件进行格式化,具体包括: - 统一 License 头注释格式(分隔线长度与换行) - 统一命名空间括号风格( namespace xxx { 同行) - 统一 // namespace xxx 尾部注释与 #endif // xxx 注释格式(单空格) - 移除行尾空格,补全文件末尾换行 - 统一缩进(2 空格 → 4 空格)与函数声明/定义换行 - 统一 Python 脚本 docstring 引号与长语句换行 - 统一 CMakeLists 文件 License 头与文件末尾换行 ## 关联的Issue - #3814 ## 测试 本次改动为纯代码格式化,无功能性变更,逻辑行为保持不变。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码风格规范化(格式化) See merge request: cann/ops-math!6542 | 18 days ago | |
refactor: 统一 math 目录 13 个算子的代码风格与格式规范 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6542 merge ccc_1020 into master refactor: 统一 math 目录 13 个算子的代码风格与格式规范 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本 PR 对 math 目录下 13 个算子进行代码风格规范化(代码格式化),不涉及功能性改动。涉及的算子包括:axpy、axpy_v2、bias_add、div、div_no_nan、gcd、ger、muls、select、select_v2、signbit、squared_difference、tanh_grad。 ### 改动原因 统一算子代码的编码风格与格式规范,提升代码可读性和可维护性。 ### 改动方法 对 C++ 源码、Python 脚本及 CMake 构建文件进行格式化,具体包括: - 统一 License 头注释格式(分隔线长度与换行) - 统一命名空间括号风格( namespace xxx { 同行) - 统一 // namespace xxx 尾部注释与 #endif // xxx 注释格式(单空格) - 移除行尾空格,补全文件末尾换行 - 统一缩进(2 空格 → 4 空格)与函数声明/定义换行 - 统一 Python 脚本 docstring 引号与长语句换行 - 统一 CMakeLists 文件 License 头与文件末尾换行 ## 关联的Issue - #3814 ## 测试 本次改动为纯代码格式化,无功能性变更,逻辑行为保持不变。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码风格规范化(格式化) See merge request: cann/ops-math!6542 | 18 days ago | |
fix(aicpu): resolve code quality warnings Co-authored-by: pan-tong<pantong@huawei.com> # message auto-generated for no-merge-commit merge: !5876 merge fix/warning-handling into master fix(aicpu): resolve code quality warnings Created-by: pan-tong Commit-by: pan-tong Merged-by: cann-robot Description: ## 描述 修复 RightShift、SearchSorted、SelectV2、SquaredDifference 和 Tile AICPU 代码规范告警: - 为无状态成员函数补充 const,为重写析构函数补充 override。 - 补充显式类型转换,使用强类型枚举并显式传递宏依赖参数。 - 移除未使用头文件,不改变算子计算逻辑。 ## 关联的Issue 无 ## 测试 - bash build.sh -u --opkernel_aicpu --ops=right_shift,search_sorted,select_v2,squared_difference,tile - 91/91 PASSED ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:代码规范告警整改 See merge request: cann/ops-math!5876 | 1 month ago | |
refactor: 统一 math 目录 13 个算子的代码风格与格式规范 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !6542 merge ccc_1020 into master refactor: 统一 math 目录 13 个算子的代码风格与格式规范 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 本 PR 对 math 目录下 13 个算子进行代码风格规范化(代码格式化),不涉及功能性改动。涉及的算子包括:axpy、axpy_v2、bias_add、div、div_no_nan、gcd、ger、muls、select、select_v2、signbit、squared_difference、tanh_grad。 ### 改动原因 统一算子代码的编码风格与格式规范,提升代码可读性和可维护性。 ### 改动方法 对 C++ 源码、Python 脚本及 CMake 构建文件进行格式化,具体包括: - 统一 License 头注释格式(分隔线长度与换行) - 统一命名空间括号风格( namespace xxx { 同行) - 统一 // namespace xxx 尾部注释与 #endif // xxx 注释格式(单空格) - 移除行尾空格,补全文件末尾换行 - 统一缩进(2 空格 → 4 空格)与函数声明/定义换行 - 统一 Python 脚本 docstring 引号与长语句换行 - 统一 CMakeLists 文件 License 头与文件末尾换行 ## 关联的Issue - #3814 ## 测试 本次改动为纯代码格式化,无功能性变更,逻辑行为保持不变。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码风格规范化(格式化) See merge request: cann/ops-math!6542 | 18 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 | 24 days ago | |
docs(math): 补齐select_v2算子README资料入口 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !6778 merge docs/select-v2-readme into master docs(math): 补齐select_v2算子README资料入口 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 **问题**(#3788,拆分自 #3499): math/select_v2 目录含交付件(op_host 算子定义与 tiling、AICore/AI CPU 双 kernel、op_graph 原型、图模式样例、tests),但目录内无 README,未提供算子资料入口;docs/zh/op_list.md 已收录该算子(AI Core/AI CPU),链接直指目录却无资料可读。 **方案**:按仓内标准算子 README 模板新增 math/select_v2/README.md,五个章节: - **产品支持情况**:按 aclnnSWhere 接口文档口径(950PR&950DT、A3、A2、Atlas推理、Atlas训练支持,200I/500 A2 不支持)。aclnnSWhere 接口的计算由 SelectV2 算子承载(math/select/op_api/aclnn_s_where.cpp 经 l0op::SelectV2 派发至本目录交付的 AICore/AI CPU 实现)。 - **功能说明**:根据条件张量condition选取x1或x2中对应元素并返回(支持广播),兼容 TensorFlow SelectV2(op_graph/select_v2_proto.h 原型声明);计算公式与数值示例按 op_host/select_v2_def.cpp 参数口径。 - **参数说明**:condition/x1/x2/y 四参数表,参数名、参数顺序与数据类型均按 op_host/select_v2_def.cpp(AI Core)注册口径。 - **约束说明**:无。广播关系按仓内先例(mul/sub/maximum 等约束均为"无"、gcd README)在参数表描述列承载。 - **调用说明**:aclnn 与图模式两行。select_v2 支持 aclnn 调用,接口为 aclnnSWhere,由 select 目录交付(历史原因未随算子实现目录放置):样例链 ../select/examples/test_aclnn_s_where.cpp、说明链 ../select/docs/aclnnSWhere.md;图模式样例链 examples/test_geir_select_v2.cpp、说明链 op_graph/select_v2_proto.h。 **口径说明**: 1. 产品支持表照 aclnnSWhere 接口文档口径填写(安装 CANN 包后用户视角,符合 wiki《算子README文档模板》"不以源码开源的平台为准"标准);接口文档产品能力与算子能力的对应依据为 aclnn_s_where.cpp 的 l0op::SelectV2 唯一派发链。 2. 参数名与数据类型均按 op_host/select_v2_def.cpp(AI Core)注册口径填写。本算子 op_graph 原型与 AI CPU 侧注册名为 condition/then/else/result,与 AI Core def 的 condition/x1/x2/y 为同一位置参数(输入顺序一致,输出与第二个输入同型);AI CPU 实现与 aclnn 接口层支持类型更广(含 BOOL、UINT16、UINT32、UINT64、INT16、DOUBLE、COMPLEX64、COMPLEX128),如需在资料中一并呈现,请评审指示。 **索引同步**(2026-10-30 追加第二个提交,响应评审侧「请检查op_list.md内容是否要同步刷新」):docs/zh/op_list.md 中 select_v2 行链接原直指算子目录(无 README.md 后缀),同步更新为指向本 PR 新增的 README 入口,与索引内其余算子行链接口径一致;该行说明列与实现矩阵(op_kernel/op_host/op_api/op_graph、AI Core/AI CPU)经核对无需变更。同批 gcd(!6753)、ger(!6779)两 PR 经核查 op_list.md 均无需变更。同一 PR 交付索引链接与链接目标,合入即同时生效。 **aclnn 调用归属修正**(2026-10-30 第三个提交):math/select/op_api/ 四文件(aclnn_s_where.cpp/.h、select.cpp/.h)注册与派发的均为 SelectV2 算子(select.cpp OP_TYPE_REGISTER(SelectV2)、select.h 声明 l0op::SelectV2、aclnn_s_where.cpp 经 l0op::SelectV2 派发),select 算子自身无 aclnn 接口交付。op_list.md 按算子承载归属修正 aclnn 调用(op_api)列:select_v2 行 ×→√(aclnnSWhere 承载算子即 SelectV2,与 README 调用说明一致),select 行 √→×(其 op_api 目录交付均属 SelectV2)。该口径与接口文件物理位置(select 目录,历史原因)解耦。 ## 关联的Issue Closes #3788 ## 测试 纯文档变更(新增 README + 索引链接同步),无代码改动: - pre-commit 全部 hook 通过(trailing-whitespace / end-of-file-fixer / codespell / OAT 合规检查) - 相对链接核验:./examples/test_geir_select_v2.cpp、./op_graph/select_v2_proto.h、../select/examples/test_aclnn_s_where.cpp、../select/docs/aclnnSWhere.md 均存在于 master - 逐句核对事实源:功能与约束对应 op_graph/select_v2_proto.h;参数对应 op_host/select_v2_def.cpp(AI Core)注册;产品支持表对应 math/select/docs/aclnnSWhere.md;aclnn 调用链对应 math/select/op_api/aclnn_s_where.cpp(l0op::SelectV2 派发) - 索引链接同步提交:pre-commit 全部 hook 通过;全表链接口径核查——有 README 的算子行均链接至 <op>/README.md,本 PR 合入后全表仅剩 affine_grid、logspace、precision_compare 三个无 README 算子仍直指目录 - aclnn 调用归属:math/select/op_api/select.cpp OP_TYPE_REGISTER(SelectV2)、select.h l0op::SelectV2 声明、aclnn_s_where.cpp l0op::SelectV2 派发链逐项核验,select 算子无自有 aclnn 接口交付;矩阵修正提交 pre-commit 全部 hook 通过 ## 文档更新 - math/select_v2/README.md(新增,+47) - docs/zh/op_list.md(select_v2 行索引链接同步 +1/−1;select/select_v2 行 aclnn 调用归属修正 +2/−2) ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6778 | 10 days ago |
SelectV2
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
- 算子功能:根据条件张量condition选取x1或x2中对应元素并返回(支持广播),兼容TensorFlow的SelectV2算子。
- 计算公式:
yi={x1i,if conditionix2i,otherwisey_i=\begin{cases} x1_i, & \text{if condition}_i \\ x2_i, & \text{otherwise} \end{cases} yi={x1i,x2i,if conditioniotherwise
- 示例:
- 若condition=[True, False],x1=[1, 2],x2=[3, 4],计算结果为[1, 4]。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| condition | 输入 | 条件张量,公式中的condition_i,为真时选取x1中对应元素。 | BOOL | ND |
| x1 | 输入 | 条件为真时选取的输入,公式中的x1_i,shape与condition、x2满足广播关系。 | UINT8、INT8、INT32、INT64、FLOAT、FLOAT16、BFLOAT16 | ND |
| x2 | 输入 | 条件为假时选取的输入,公式中的x2_i,数据类型与x1保持一致,shape与condition、x1满足广播关系。 | UINT8、INT8、INT32、INT64、FLOAT、FLOAT16、BFLOAT16 | ND |
| y | 输出 | 输出张量,公式中的y_i,shape为condition、x1、x2广播后的shape,数据类型与x1保持一致。 | UINT8、INT8、INT32、INT64、FLOAT、FLOAT16、BFLOAT16 | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn API | test_aclnn_s_where | 通过aclnnSWhere接口方式调用SelectV2算子,接口由select目录交付。 |
| 图模式调用 | test_geir_select_v2 | 通过算子IR构图方式调用SelectV2算子。 |