| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
bug fix: experimental 构建报错 'multiple definition of ops::op_impl_register_infershape_ZerosLike + gen_compile_option.sh awk 重复告警 Co-authored-by: zhaohujie<zhaohujie@huawei.com> # message auto-generated for no-merge-commit merge: !3516 merge bug/zeros-like into master bug fix: experimental 构建报错 'multiple definition of ops::op_impl_register_infershape_ZerosLike + gen_compile_option.sh awk 重复告警 Created-by: zhaohujie Commit-by: zhaohujie Merged-by: cann-robot Description: ## 描述 修复 bash build.sh --experimental --soc=ascend910b 实验构建及 isin_part_v1 示例冒烟的三个问题: **1. 链接报 multiple definition of 'ops::op_impl_register_infershape_ZerosLike'** - 原因:experimental/math/isin_part_v1 的 DEPENDENCIES 中含 zero_op。--experimental 下实验目录无 zero_op,add_dependent_ops 回退到主线 math/zero_op——它本身也是一套 ZerosLike 实现(IMPL_OP_INFERSHAPE(ZerosLike)),与实验自包含算子 experimental/conversion/zeros_like 同时编入 ophost_math_infer_obj,宏展开的全局符号 ops::op_impl_register_infershape_ZerosLike 重复定义,ophost_math 链接失败。 - 方法:见问题 3 —— 直接移除 isin_part_v1 全部冗余 DEPENDENCIES(含 zero_op),从根上消除重复注册。 **2. 构建过程中 awk: line 2: syntax error at or near , 大量重复** - 原因:scripts/util/gen_compile_option.sh 两处 awk 使用了三参数 match($0, regex, arr)(gawk 扩展语法)。系统 awk 为 mawk(无 gawk)时第三个参数无法解析;脚本对全部算子列表循环、每算子执行两次该 awk,故报错大量重复。属构建脚本可移植性问题,与算子实现无关;不中断构建,但会刷屏并静默丢弃 ascendc_config.json 中逐算子的 compile_options。 - 方法:改写为可移植写法——两参数 match() 配合 RSTART/RLENGTH + substr()。语义与原 gawk 版本一致,同时兼容 mawk 与 gawk。 - 涉及文件:scripts/util/gen_compile_option.sh **3. isin_part_v1 run_example 冒烟失败(编译 int64_t→const aclTensor*,及运行期 255)** - 原因:该示例为非常规的 aclnnCat→Sort→Cast→IsinPartV1 多算子流水(experimental/math 中唯一一个驱动 4 个算子的示例)。其一,示例把 elementsNum 以 int64_t 传入,而算子定义中 elementsNum 是 INT32 张量输入,生成的 aclnn 形参为 const aclTensor*,编译失败;其二,该流水迫使 Cat/Sort/Cast 被打入逐算子自定义包,其中 AscendC 版实验 Cast(无 DSL _pattern)破坏了 aclnnSort 内部 Cast 的标准 tiling 路径,运行期返回 255。isin_part_v1 自身并不使用这些依赖。 - 方法:按实验算子示例惯例(参见其它 experimental/math 算子,示例仅校验自身算子)将示例改为**自包含**——直接构造 value/index/elementsNum(单元素 INT32 张量)三个输入,仅调用 aclnnIsinPartV1;同时移除 CMakeLists.txt 中全部冗余 DEPENDENCIES。如此既修复编译错误,又不再触碰存在缺陷的实验 Cast,并顺带解决问题 1 的重复定义。 - 涉及文件:experimental/math/isin_part_v1/CMakeLists.txt、experimental/math/isin_part_v1/examples/test_aclnn_isin_part_v1.cpp ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2036 ## 测试 - **链接验证**:以全量算子集编译 ophost_math 链接成功;实际链接命令 link.txt 中 zeros_like_infershape.cpp.o 仅剩 1 个(实验 conversion/zeros_like),主线 math/zero_op 同名目标已不在链接行(修复前 ld returned 1)。 - **示例端到端(Ascend910B 实跑)**:bash build.sh --experimental --pkg --ops=isin_part_v1 --vendor_name=experimental 构建出的自定义包仅含 IsinPartV1;run_example isin_part_v1 eager cust 编译/链接通过并在 NPU 上成功执行,输出 [1, 1, 0, 1, 1](等价 isin([1,1,4,1,1], [0,1,2,3])),execute samples success,返回码 0(修复前为编译 返回码 1 / 运行 返回码 255)。 - **脚本验证**:bash -n scripts/util/gen_compile_option.sh 通过;对 ascendc_config.json 真实条目(如 Signbit、AdaptiveAvgPool3d)验证两处 awk 输出与原 gawk 版本一致;样例算子对实跑脚本 syntax error 数量为 0。 - 复核 scripts/ 下无其他 gawk 专属用法(三参数 match(,,)、gensub)残留。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3516 | 2 个月前 | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 2 个月前 | |
refactor: 统一 experimental 目录代码风格(全仓 clang-format) Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !3382 merge master into master refactor: 统一 experimental 目录代码风格(全仓 clang-format) Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 对 experimental/ 目录下的算子源码统一执行 clang-format 格式化,使全仓代码风格与根目录 .clang-format 配置保持一致。 本次改动范围: - 共 1279 个文件,涵盖 experimental/math(1151)与 experimental/conversion(128)两大目录。 - 涉及代码层级:op_kernel(490)、op_host(375)、op_api(200)、examples(171)、tests(156)、op_graph(37)。 - 文件类型:.cpp(834)、.h(445)。 - 涉及硬件分支目录:arch35(48)、arch32(2)。 改动内容为纯格式化(缩进、空格、对齐、单行语句拆分为多行、指针 * 贴合类型等),不涉及任何逻辑修改、新增文件或删除文件,代码语义保持不变。 ## 关联的Issue #1986 ## 测试 clang-format 格式化不改变代码语义,无需新增功能测试;格式化后的算子代码在编译与既有单测/二级冒烟用例下保持原有行为。 ## 文档更新 无。本次仅对源码做格式化,未修改任何文档文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化(clang-format 全仓风格统一) See merge request: cann/ops-math!3382 | 2 个月前 | |
bug fix: experimental 构建报错 'multiple definition of ops::op_impl_register_infershape_ZerosLike + gen_compile_option.sh awk 重复告警 Co-authored-by: zhaohujie<zhaohujie@huawei.com> # message auto-generated for no-merge-commit merge: !3516 merge bug/zeros-like into master bug fix: experimental 构建报错 'multiple definition of ops::op_impl_register_infershape_ZerosLike + gen_compile_option.sh awk 重复告警 Created-by: zhaohujie Commit-by: zhaohujie Merged-by: cann-robot Description: ## 描述 修复 bash build.sh --experimental --soc=ascend910b 实验构建及 isin_part_v1 示例冒烟的三个问题: **1. 链接报 multiple definition of 'ops::op_impl_register_infershape_ZerosLike'** - 原因:experimental/math/isin_part_v1 的 DEPENDENCIES 中含 zero_op。--experimental 下实验目录无 zero_op,add_dependent_ops 回退到主线 math/zero_op——它本身也是一套 ZerosLike 实现(IMPL_OP_INFERSHAPE(ZerosLike)),与实验自包含算子 experimental/conversion/zeros_like 同时编入 ophost_math_infer_obj,宏展开的全局符号 ops::op_impl_register_infershape_ZerosLike 重复定义,ophost_math 链接失败。 - 方法:见问题 3 —— 直接移除 isin_part_v1 全部冗余 DEPENDENCIES(含 zero_op),从根上消除重复注册。 **2. 构建过程中 awk: line 2: syntax error at or near , 大量重复** - 原因:scripts/util/gen_compile_option.sh 两处 awk 使用了三参数 match($0, regex, arr)(gawk 扩展语法)。系统 awk 为 mawk(无 gawk)时第三个参数无法解析;脚本对全部算子列表循环、每算子执行两次该 awk,故报错大量重复。属构建脚本可移植性问题,与算子实现无关;不中断构建,但会刷屏并静默丢弃 ascendc_config.json 中逐算子的 compile_options。 - 方法:改写为可移植写法——两参数 match() 配合 RSTART/RLENGTH + substr()。语义与原 gawk 版本一致,同时兼容 mawk 与 gawk。 - 涉及文件:scripts/util/gen_compile_option.sh **3. isin_part_v1 run_example 冒烟失败(编译 int64_t→const aclTensor*,及运行期 255)** - 原因:该示例为非常规的 aclnnCat→Sort→Cast→IsinPartV1 多算子流水(experimental/math 中唯一一个驱动 4 个算子的示例)。其一,示例把 elementsNum 以 int64_t 传入,而算子定义中 elementsNum 是 INT32 张量输入,生成的 aclnn 形参为 const aclTensor*,编译失败;其二,该流水迫使 Cat/Sort/Cast 被打入逐算子自定义包,其中 AscendC 版实验 Cast(无 DSL _pattern)破坏了 aclnnSort 内部 Cast 的标准 tiling 路径,运行期返回 255。isin_part_v1 自身并不使用这些依赖。 - 方法:按实验算子示例惯例(参见其它 experimental/math 算子,示例仅校验自身算子)将示例改为**自包含**——直接构造 value/index/elementsNum(单元素 INT32 张量)三个输入,仅调用 aclnnIsinPartV1;同时移除 CMakeLists.txt 中全部冗余 DEPENDENCIES。如此既修复编译错误,又不再触碰存在缺陷的实验 Cast,并顺带解决问题 1 的重复定义。 - 涉及文件:experimental/math/isin_part_v1/CMakeLists.txt、experimental/math/isin_part_v1/examples/test_aclnn_isin_part_v1.cpp ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2036 ## 测试 - **链接验证**:以全量算子集编译 ophost_math 链接成功;实际链接命令 link.txt 中 zeros_like_infershape.cpp.o 仅剩 1 个(实验 conversion/zeros_like),主线 math/zero_op 同名目标已不在链接行(修复前 ld returned 1)。 - **示例端到端(Ascend910B 实跑)**:bash build.sh --experimental --pkg --ops=isin_part_v1 --vendor_name=experimental 构建出的自定义包仅含 IsinPartV1;run_example isin_part_v1 eager cust 编译/链接通过并在 NPU 上成功执行,输出 [1, 1, 0, 1, 1](等价 isin([1,1,4,1,1], [0,1,2,3])),execute samples success,返回码 0(修复前为编译 返回码 1 / 运行 返回码 255)。 - **脚本验证**:bash -n scripts/util/gen_compile_option.sh 通过;对 ascendc_config.json 真实条目(如 Signbit、AdaptiveAvgPool3d)验证两处 awk 输出与原 gawk 版本一致;样例算子对实跑脚本 syntax error 数量为 0。 - 复核 scripts/ 下无其他 gawk 专属用法(三参数 match(,,)、gensub)残留。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3516 | 2 个月前 | |
doc-tools md低错清理 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !3914 merge master into master doc-tools md低错清理 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> doc-tools md低错清理 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2168](https://gitcode.com/cann/ops-math/issues/2168) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> doc-tools工具已检测 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> all md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3914 | 1 个月前 |
IsinPart
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A2 训练系列产品/Atlas 800I A2 推理产品 | √ |
功能说明
-
算子功能:isin功能核心part,结合cat、sort实现isin功能
-
isin算子功能:判断给定张量elements的每个元素是否在另一个张量test_elements中出现,并返回一个布尔类型张量,形状与给定张量一致。
-
isin算子完整实现:
elementsNum=elements.length()combine_elements=cat(elements,test_elements)value,index=sort(combine_elements)z=isin_part_v1(value,index,elementsNum)elementsNum = elements.length() \\ combine\_elements = cat(elements, test\_elements) \\ value, index = sort(combine\_elements) \\ z = isin\_part\_v1(value, index, elementsNum) \\ elementsNum=elements.length()combine_elements=cat(elements,test_elements)value,index=sort(combine_elements)z=isin_part_v1(value,index,elementsNum)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| value | 输入 | elements与test_elements拼接排序后的张量值 | FLOAT、INT32 | ND |
| index | 输入 | elements与test_elements拼接排序后的张量索引 | INT32 | ND |
| elementsNum | 输入 | elements元素数量(标量) | INT64、INT32 | ND |
| z | 输出 | isin操作后的输出张量,形状由elementsNum参数决定 | BOOL | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_isin_part_v1.cpp | 通过[test_aclnn_isin_part_v1]接口方式调用IsinPartV1算子。 |