| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !3778 merge feat/migrate-conj-conjugate-transpose into master feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 从 canndev 迁移两个 AICPU 算子到 ops-math,并将 infershape 由 rt1 适配为 rt2: - Conj → math/conj/(逐元素复数共轭) - ConjugateTranspose → conversion/conjugate_transpose/(按 perm 转置 + 共轭) 每算子交付:op_graph(proto + InferDataType)、op_host(infershape rt2)、op_kernel_aicpu(kernel + opdef)、examples(图模式)、tests/ut(infershape + kernel)、README;docs/zh/op_list.md 补充条目。 infershape 适配要点: - Conj 为 element-wise,复用 Ops::Base::InferShape4Elewise。 - ConjugateTranspose 按 perm 常量重排 + InputsDataDependency({perm});perm 校验为非负 [0, rank-1],与本算子 AICPU kernel、canndev rt1、TF 语义一致(format 由框架接管,rt2 infershape 不处理)。 ## 关联的Issue #2135 https://gitcode.com/cann/ops-math/issues/2135 ## 测试 Ascend 910B 真机验证全部通过: - op_host(infershape)UT:8/8 - AICPU kernel UT:11/11(Conj 6 + ConjugateTranspose 5) - 打包 .run + 安装:SUCCESS;strings 自检两算子符号在 libmath_aicpu_kernels.so - 图模式 example:Conj、ConjugateTranspose 结果均正确,日志确认走 AICPU custom scheduler ## 文档更新 - 新增 math/conj/README.md、conversion/conjugate_transpose/README.md - 更新 docs/zh/op_list.md(新增两算子条目) ## 类型标签 - [x] 新特性 See merge request: cann/ops-math!3778 | 2 个月前 | |
feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !3778 merge feat/migrate-conj-conjugate-transpose into master feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 从 canndev 迁移两个 AICPU 算子到 ops-math,并将 infershape 由 rt1 适配为 rt2: - Conj → math/conj/(逐元素复数共轭) - ConjugateTranspose → conversion/conjugate_transpose/(按 perm 转置 + 共轭) 每算子交付:op_graph(proto + InferDataType)、op_host(infershape rt2)、op_kernel_aicpu(kernel + opdef)、examples(图模式)、tests/ut(infershape + kernel)、README;docs/zh/op_list.md 补充条目。 infershape 适配要点: - Conj 为 element-wise,复用 Ops::Base::InferShape4Elewise。 - ConjugateTranspose 按 perm 常量重排 + InputsDataDependency({perm});perm 校验为非负 [0, rank-1],与本算子 AICPU kernel、canndev rt1、TF 语义一致(format 由框架接管,rt2 infershape 不处理)。 ## 关联的Issue #2135 https://gitcode.com/cann/ops-math/issues/2135 ## 测试 Ascend 910B 真机验证全部通过: - op_host(infershape)UT:8/8 - AICPU kernel UT:11/11(Conj 6 + ConjugateTranspose 5) - 打包 .run + 安装:SUCCESS;strings 自检两算子符号在 libmath_aicpu_kernels.so - 图模式 example:Conj、ConjugateTranspose 结果均正确,日志确认走 AICPU custom scheduler ## 文档更新 - 新增 math/conj/README.md、conversion/conjugate_transpose/README.md - 更新 docs/zh/op_list.md(新增两算子条目) ## 类型标签 - [x] 新特性 See merge request: cann/ops-math!3778 | 2 个月前 | |
feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !3778 merge feat/migrate-conj-conjugate-transpose into master feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 从 canndev 迁移两个 AICPU 算子到 ops-math,并将 infershape 由 rt1 适配为 rt2: - Conj → math/conj/(逐元素复数共轭) - ConjugateTranspose → conversion/conjugate_transpose/(按 perm 转置 + 共轭) 每算子交付:op_graph(proto + InferDataType)、op_host(infershape rt2)、op_kernel_aicpu(kernel + opdef)、examples(图模式)、tests/ut(infershape + kernel)、README;docs/zh/op_list.md 补充条目。 infershape 适配要点: - Conj 为 element-wise,复用 Ops::Base::InferShape4Elewise。 - ConjugateTranspose 按 perm 常量重排 + InputsDataDependency({perm});perm 校验为非负 [0, rank-1],与本算子 AICPU kernel、canndev rt1、TF 语义一致(format 由框架接管,rt2 infershape 不处理)。 ## 关联的Issue #2135 https://gitcode.com/cann/ops-math/issues/2135 ## 测试 Ascend 910B 真机验证全部通过: - op_host(infershape)UT:8/8 - AICPU kernel UT:11/11(Conj 6 + ConjugateTranspose 5) - 打包 .run + 安装:SUCCESS;strings 自检两算子符号在 libmath_aicpu_kernels.so - 图模式 example:Conj、ConjugateTranspose 结果均正确,日志确认走 AICPU custom scheduler ## 文档更新 - 新增 math/conj/README.md、conversion/conjugate_transpose/README.md - 更新 docs/zh/op_list.md(新增两算子条目) ## 类型标签 - [x] 新特性 See merge request: cann/ops-math!3778 | 2 个月前 | |
Conj/InplaceTopKDistance/TopKPQDistanceV2 使能 AICPU 常量折叠 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !4305 merge feat/enable-aicpu-constant-folding-conj-topk into master Conj/InplaceTopKDistance/TopKPQDistanceV2 使能 AICPU 常量折叠 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 Conj、InplaceTopKDistance、TopKPQDistanceV2 三个 AICPU 算子的 opInfo.opsFlag 已置为 OPS_FLAG_OPEN,但 kernel 实现并未编入 libopconstant_folding_math.so,折叠标志位处于「空开」状态——GE 图编译期即使命中常量输入,也找不到可在编译机上执行的 host 侧 kernel。 AICPU 算子参与常量折叠需同时满足两个条件:opsFlag 为 OPS_FLAG_OPEN(已满足),以及 kernel 以 host 版本编入 libopconstant_folding_math.so 并安装到 opp/built-in/op_impl/host_cpu/(本次补齐)。 改动共 6 个文件、9 增 6 删,沿用 math/tile 已验证的路径,未新增任何公共基础设施: **1)CMakeLists 追加 HOSTCPU TRUE** cmake -add_all_modules_sources(OPTYPE conj ACLNNTYPE aclnn_exclude) +add_all_modules_sources(OPTYPE conj ACLNNTYPE aclnn_exclude HOSTCPU TRUE) 该参数经 cmake/func.cmake 的 add_all_modules_sources 解析后,创建 OBJECT 目标 <op>_host_const_obj(编译期定义 OPS_MATH_AICPU_HOST_KERNEL),登记进 cache 变量 AICPU_HOST_OBJ_TARGETS;cmake/symbol.cmake 的 gen_aicpu_const_symbol() 汇总链接出 so 并 install 到 AICPU_HOST_KERNEL_IMPL。 **2)kernel 注册宏改用 OPS_MATH_REGISTER_CPU_KERNELV2** cpp +#include "aicpu/math_aicpu_register.h" -REGISTER_CPU_KERNEL(kConj, Conj); +OPS_MATH_REGISTER_CPU_KERNELV2(kConj, Conj); 与 math/tile 现状对齐。该宏为条件包装:未定义 OPS_MATH_AICPU_HOST_KERNEL 时(device 侧 aicpu so、cust 包、UT)展开为原 REGISTER_CPU_KERNEL;定义时以 weak 符号探测 RegistCpuKernelV2,存在则注册 V2、缺失则回退 V1,兼容旧版 libaicpu_context_host.a。 **未改动项**:*_aicpu_def.cpp 无需变更(opsFlag 本就是 OPS_FLAG_OPEN);三个算子的 kernel 均未依赖 driver/ascend_hal.h 等 device-only 接口,无需像 Tile 那样为 halSdmaCopy 增加条件隔离;三个算子无 tiling 文件,无需 DISABLE_IN_OPP 参数。 ## 关联的Issue #2414 ## 测试 **1. device 侧零回归验证** 将改动前的 conj_aicpu.cpp 单独预处理,与改动后 device 模式(不定义 OPS_MATH_AICPU_HOST_KERNEL)输出对比注册语句,**逐字节完全一致**: cpp std::shared_ptr<CpuKernel> Creator_kConj_Kernel() { ... } bool g_kConj_Kernel_Creator __attribute__((unused)) = RegistCpuKernel(kConj, Creator_kConj_Kernel); 整份预处理输出的差异仅为新增的 RegistCpuKernelV2 weak 声明,及 __LINE__ 因新增 include 的整体偏移。 **2. 编译构建测试** bash build.sh --pkg -j16 全量构建通过,EXIT=0,构建错误数 0。CMake 配置期确认三个新 OBJECT 目标建立: -- add_aicpu_host_kernel_modules for conj_host_const_obj -- add_aicpu_host_kernel_modules for inplace_top_k_distance_host_const_obj -- add_aicpu_host_kernel_modules for top_k_pq_distance_v2_host_const_obj 构建期确认链接成功:Linking libopconstant_folding_math.so using host compiler okay. **3. so 内容核对(正反对照)** | 算子 | HOSTCPU | so 中 | |---|---|---| | Conj / InplaceTopKDistance / TopKPQDistanceV2 | 本次新开 | 命中 | | Tile / TransData | 原有 | 命中 | | AbsGrad / BesselI0e / Bincount / AdjacentDifference | 未开 | 缺失(预期) | 反向对照用于排除字符串偶然匹配。另确认三个新 .o 各含 1 个 Creator_*_Kernel 符号且均引用 RegistCpuKernelV2。 **4. 打包验证** so 已进 run 包,路径与 AICPU_HOST_KERNEL_IMPL 一致: $ ./cann-910b-ops-math_9.1.0_linux-aarch64.run --list | grep opconstant -r--r----- 1000/1000 8015336 ./opp/built-in/op_impl/host_cpu/libopconstant_folding_math.so 解包后与构建产物 md5 一致(b9f723f0fc67519aff285e8ab535c314),并对解包实物重跑了上述正反对照,结果相同。 **5. AICPU UT 回归** bash build.sh -u --opkernel_aicpu --ops=conj,inplace_top_k_distance,top_k_pq_distance_v2 -j16 [==========] Running 26 tests from 3 test suites. TEST_CONJ_UT 6 tests TEST_INPLACE_TOP_K_DISTANCE_UT 8 tests TEST_TOP_K_PQ_DISTANCE_V2_UT 12 tests [ PASSED ] 26 tests. ## 文档更新 无。本改动不涉及对外接口与文档。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4305 | 1 个月前 | |
feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !3778 merge feat/migrate-conj-conjugate-transpose into master feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 从 canndev 迁移两个 AICPU 算子到 ops-math,并将 infershape 由 rt1 适配为 rt2: - Conj → math/conj/(逐元素复数共轭) - ConjugateTranspose → conversion/conjugate_transpose/(按 perm 转置 + 共轭) 每算子交付:op_graph(proto + InferDataType)、op_host(infershape rt2)、op_kernel_aicpu(kernel + opdef)、examples(图模式)、tests/ut(infershape + kernel)、README;docs/zh/op_list.md 补充条目。 infershape 适配要点: - Conj 为 element-wise,复用 Ops::Base::InferShape4Elewise。 - ConjugateTranspose 按 perm 常量重排 + InputsDataDependency({perm});perm 校验为非负 [0, rank-1],与本算子 AICPU kernel、canndev rt1、TF 语义一致(format 由框架接管,rt2 infershape 不处理)。 ## 关联的Issue #2135 https://gitcode.com/cann/ops-math/issues/2135 ## 测试 Ascend 910B 真机验证全部通过: - op_host(infershape)UT:8/8 - AICPU kernel UT:11/11(Conj 6 + ConjugateTranspose 5) - 打包 .run + 安装:SUCCESS;strings 自检两算子符号在 libmath_aicpu_kernels.so - 图模式 example:Conj、ConjugateTranspose 结果均正确,日志确认走 AICPU custom scheduler ## 文档更新 - 新增 math/conj/README.md、conversion/conjugate_transpose/README.md - 更新 docs/zh/op_list.md(新增两算子条目) ## 类型标签 - [x] 新特性 See merge request: cann/ops-math!3778 | 2 个月前 | |
Conj/InplaceTopKDistance/TopKPQDistanceV2 使能 AICPU 常量折叠 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !4305 merge feat/enable-aicpu-constant-folding-conj-topk into master Conj/InplaceTopKDistance/TopKPQDistanceV2 使能 AICPU 常量折叠 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 Conj、InplaceTopKDistance、TopKPQDistanceV2 三个 AICPU 算子的 opInfo.opsFlag 已置为 OPS_FLAG_OPEN,但 kernel 实现并未编入 libopconstant_folding_math.so,折叠标志位处于「空开」状态——GE 图编译期即使命中常量输入,也找不到可在编译机上执行的 host 侧 kernel。 AICPU 算子参与常量折叠需同时满足两个条件:opsFlag 为 OPS_FLAG_OPEN(已满足),以及 kernel 以 host 版本编入 libopconstant_folding_math.so 并安装到 opp/built-in/op_impl/host_cpu/(本次补齐)。 改动共 6 个文件、9 增 6 删,沿用 math/tile 已验证的路径,未新增任何公共基础设施: **1)CMakeLists 追加 HOSTCPU TRUE** cmake -add_all_modules_sources(OPTYPE conj ACLNNTYPE aclnn_exclude) +add_all_modules_sources(OPTYPE conj ACLNNTYPE aclnn_exclude HOSTCPU TRUE) 该参数经 cmake/func.cmake 的 add_all_modules_sources 解析后,创建 OBJECT 目标 <op>_host_const_obj(编译期定义 OPS_MATH_AICPU_HOST_KERNEL),登记进 cache 变量 AICPU_HOST_OBJ_TARGETS;cmake/symbol.cmake 的 gen_aicpu_const_symbol() 汇总链接出 so 并 install 到 AICPU_HOST_KERNEL_IMPL。 **2)kernel 注册宏改用 OPS_MATH_REGISTER_CPU_KERNELV2** cpp +#include "aicpu/math_aicpu_register.h" -REGISTER_CPU_KERNEL(kConj, Conj); +OPS_MATH_REGISTER_CPU_KERNELV2(kConj, Conj); 与 math/tile 现状对齐。该宏为条件包装:未定义 OPS_MATH_AICPU_HOST_KERNEL 时(device 侧 aicpu so、cust 包、UT)展开为原 REGISTER_CPU_KERNEL;定义时以 weak 符号探测 RegistCpuKernelV2,存在则注册 V2、缺失则回退 V1,兼容旧版 libaicpu_context_host.a。 **未改动项**:*_aicpu_def.cpp 无需变更(opsFlag 本就是 OPS_FLAG_OPEN);三个算子的 kernel 均未依赖 driver/ascend_hal.h 等 device-only 接口,无需像 Tile 那样为 halSdmaCopy 增加条件隔离;三个算子无 tiling 文件,无需 DISABLE_IN_OPP 参数。 ## 关联的Issue #2414 ## 测试 **1. device 侧零回归验证** 将改动前的 conj_aicpu.cpp 单独预处理,与改动后 device 模式(不定义 OPS_MATH_AICPU_HOST_KERNEL)输出对比注册语句,**逐字节完全一致**: cpp std::shared_ptr<CpuKernel> Creator_kConj_Kernel() { ... } bool g_kConj_Kernel_Creator __attribute__((unused)) = RegistCpuKernel(kConj, Creator_kConj_Kernel); 整份预处理输出的差异仅为新增的 RegistCpuKernelV2 weak 声明,及 __LINE__ 因新增 include 的整体偏移。 **2. 编译构建测试** bash build.sh --pkg -j16 全量构建通过,EXIT=0,构建错误数 0。CMake 配置期确认三个新 OBJECT 目标建立: -- add_aicpu_host_kernel_modules for conj_host_const_obj -- add_aicpu_host_kernel_modules for inplace_top_k_distance_host_const_obj -- add_aicpu_host_kernel_modules for top_k_pq_distance_v2_host_const_obj 构建期确认链接成功:Linking libopconstant_folding_math.so using host compiler okay. **3. so 内容核对(正反对照)** | 算子 | HOSTCPU | so 中 | |---|---|---| | Conj / InplaceTopKDistance / TopKPQDistanceV2 | 本次新开 | 命中 | | Tile / TransData | 原有 | 命中 | | AbsGrad / BesselI0e / Bincount / AdjacentDifference | 未开 | 缺失(预期) | 反向对照用于排除字符串偶然匹配。另确认三个新 .o 各含 1 个 Creator_*_Kernel 符号且均引用 RegistCpuKernelV2。 **4. 打包验证** so 已进 run 包,路径与 AICPU_HOST_KERNEL_IMPL 一致: $ ./cann-910b-ops-math_9.1.0_linux-aarch64.run --list | grep opconstant -r--r----- 1000/1000 8015336 ./opp/built-in/op_impl/host_cpu/libopconstant_folding_math.so 解包后与构建产物 md5 一致(b9f723f0fc67519aff285e8ab535c314),并对解包实物重跑了上述正反对照,结果相同。 **5. AICPU UT 回归** bash build.sh -u --opkernel_aicpu --ops=conj,inplace_top_k_distance,top_k_pq_distance_v2 -j16 [==========] Running 26 tests from 3 test suites. TEST_CONJ_UT 6 tests TEST_INPLACE_TOP_K_DISTANCE_UT 8 tests TEST_TOP_K_PQ_DISTANCE_V2_UT 12 tests [ PASSED ] 26 tests. ## 文档更新 无。本改动不涉及对外接口与文档。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4305 | 1 个月前 | |
feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !3778 merge feat/migrate-conj-conjugate-transpose into master feat: 迁移 Conj 与 ConjugateTranspose AICPU 算子(含 infershape rt1→rt2) Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 从 canndev 迁移两个 AICPU 算子到 ops-math,并将 infershape 由 rt1 适配为 rt2: - Conj → math/conj/(逐元素复数共轭) - ConjugateTranspose → conversion/conjugate_transpose/(按 perm 转置 + 共轭) 每算子交付:op_graph(proto + InferDataType)、op_host(infershape rt2)、op_kernel_aicpu(kernel + opdef)、examples(图模式)、tests/ut(infershape + kernel)、README;docs/zh/op_list.md 补充条目。 infershape 适配要点: - Conj 为 element-wise,复用 Ops::Base::InferShape4Elewise。 - ConjugateTranspose 按 perm 常量重排 + InputsDataDependency({perm});perm 校验为非负 [0, rank-1],与本算子 AICPU kernel、canndev rt1、TF 语义一致(format 由框架接管,rt2 infershape 不处理)。 ## 关联的Issue #2135 https://gitcode.com/cann/ops-math/issues/2135 ## 测试 Ascend 910B 真机验证全部通过: - op_host(infershape)UT:8/8 - AICPU kernel UT:11/11(Conj 6 + ConjugateTranspose 5) - 打包 .run + 安装:SUCCESS;strings 自检两算子符号在 libmath_aicpu_kernels.so - 图模式 example:Conj、ConjugateTranspose 结果均正确,日志确认走 AICPU custom scheduler ## 文档更新 - 新增 math/conj/README.md、conversion/conjugate_transpose/README.md - 更新 docs/zh/op_list.md(新增两算子条目) ## 类型标签 - [x] 新特性 See merge request: cann/ops-math!3778 | 2 个月前 |
Conj
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
-
算子功能:返回复数张量的共轭。对输入的每个复数元素取共轭(实部不变、虚部取反)。
-
计算公式:output = conj(input),即output = a - bi,其中input = a + bi
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| input | 输入 | 输入复数张量。 | COMPLEX64、COMPLEX128 | ND |
| output | 输出 | 输入张量的共轭,shape与input一致。 | COMPLEX64、COMPLEX128 | ND |
约束说明
- 无。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_conj | 通过算子IR构图方式调用conj算子。 |