| Files | Last commit | Last update |
|---|---|---|
feat: ConfusionMatrix 算子下一代实现 Co-authored-by: SeanDictionary<b24081019@njupt.edu.cn> # message auto-generated for no-merge-commit merge: !5444 merge feat/confusion-matrix into master feat: ConfusionMatrix 算子下一代实现 Created-by: SeanDictionary Commit-by: SeanDictionary Merged-by: cann-robot Description: ## 描述 新增 ConfusionMatrix 算子 Ascend950(arch35)实现。 - **功能**:对每个索引 i,将 weights[i](缺省为 1)累加到输出矩阵 y[labels[i], predictions[i]],输出 num_classes×num_classes 混淆矩阵,兼容 TF tf.math.confusion_matrix。 - **kernel 侧**:SIMT 范式(参照 bincount 骨架),2D scatter-add;按输出矩阵与 UB 容量关系分四种调度策略(full_load / batch_load / not_full_load / determine),determine 模式按输出行切核保证确定性,int8/uint8 输出固定走 determine(窄整型不走原子加)。 - **host 侧**:arch35 tiling(策略选择 + 结构化宏校验 shape/dtype/num_classes);op_graph 双挂 InferShape + InferDataType(输出 dtype 由属性 dtype 字符串白名单映射)。 - **dtype 组合**:labels/predictions(dtype 相同)× weights/output(dtype 相同)共 25 种组合,输出 dtype 由属性 dtype 决定;1 ≤ num_classes ≤ 4096。 - **原型去重**:common/inc/op_graph/op_math_proto_extend.h 中移除 ConfusionMatrix 的 REG_OP 声明——本算子目录 op_graph/confusion_matrix_proto.h 已提供带 OPS_PROTO_DEF_CONFUSIONMATRIX 去重宏保护的版本,避免同 TU 重复注册。 - **tf-plugin**:由 common/src/framework/confusion_matrix_tf_plugin.cpp 统一提供(#5653 已合入),本 PR 不重复交付。 ## 关联的Issue [#3211](https://gitcode.com/cann/ops-math/issues/3211) ## 测试 - 泛化:kernel 模式 1000 例(25 dtype 组合 × num_classes 1~4096 探顶 × N 0~100000 × 4 调度分支),REAL_FAIL=0(995 PASS + 5 例 fp16 深累加顺序舍入差异,与 built-in TBE 同数值行为)。 - 通路:GEIR 55 例全连通,浮点输出 23/23 三方比对(NPU / CPU golden / GPU)PASS;tf 通路经 pb 解析验证。 - 精度:三方 12/12 PASS(含 int8/uint8 饱和回绕、inf/nan 传播,NPU-GPU bitwise 一致)。 - 性能:150 例对标 A100(torch scatter_add 拼接基准),NPU 中位快约 2.6×,按 shape 分布如实呈现。 - UT:tiling(arch35)+ infershape 单测随包;ST:tests/st/arch35/ttk_kernel_confusion_matrix_st.csv。 ## 文档更新 - 新增 math/confusion_matrix/README.md(产品支持情况/功能说明/参数说明/约束说明/调用说明)。 - docs/zh/op_list.md 登记 confusion_matrix 条目。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5444 | 1 month ago | |
fe: 融合 pass 打桩注册,编入 libopgraph_math.so Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !5140 merge task4-stubs into master fe: 融合 pass 打桩注册,编入 libopgraph_math.so Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 桩声明 GE fe 融合 pass 注册接口(GraphFusionPassType 枚举、PassAttr、FusionPassRegistry、FusionPassRegistrar、STUB_REG_PASS),新增 common/src/op_graph/fusion_pass_common.cpp 登记 9 个有 canndev 对应物的 pass 名字,编入 libopgraph_math.so;仅 ascend950 且 ge_compiler >= 9.0.0 时生效。 作用:删掉 canndev 后 fe 表为空,这 9 个 pass 的融合会全部丢失(fusable-only 算子会在引擎选型阶段报 "Cannot find engine")。桩用名字占住 fe 表,fe 调度器才能按名字桥接到 math 侧实现。 未登记的 3 个: - CastlikeFusionPass、HistogramFusionPass:math 实现 Stage 为 kAfterInferShape,不在 kCompatibleInherited 表里,登记后 fe 查不到实现会报 "pattern fusion is nullptr" - Globalavgpoolpass:本次不登记 补充说明:DropOutV3SplitFusionPass 已登记但当前不生效——不在 OPP 白名单 support_fusion_pass.json 的 3510(ascend950) 名单内,fe 会 force close 跳过;待 OPP 侧补名单后生效,故保留登记。 ## 关联的Issue 关联 Issue #3450:[Requirement|需求建议]: FE 融合 pass 打桩注册,编入 libopgraph_math.so https://gitcode.com/cann/ops-math/issues/3450 ## 测试 - 编译:ascend950 配置下 fusion_pass_common.cpp 编译通过,libopgraph_math.so 链接通过 - 符号:桩引用的 FusionPassRegistrar 未定义符号与 libregister.so 导出的逐字符一致(_GLIBCXX_USE_CXX11_ABI=0) - 加载:ldd 依赖全部可解析,dlopen libopgraph_math.so 成功,静态初始化未崩溃 - 冒烟:已验证通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5140 | 1 month ago | |
fe: 融合 pass 打桩注册,编入 libopgraph_math.so Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !5140 merge task4-stubs into master fe: 融合 pass 打桩注册,编入 libopgraph_math.so Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 桩声明 GE fe 融合 pass 注册接口(GraphFusionPassType 枚举、PassAttr、FusionPassRegistry、FusionPassRegistrar、STUB_REG_PASS),新增 common/src/op_graph/fusion_pass_common.cpp 登记 9 个有 canndev 对应物的 pass 名字,编入 libopgraph_math.so;仅 ascend950 且 ge_compiler >= 9.0.0 时生效。 作用:删掉 canndev 后 fe 表为空,这 9 个 pass 的融合会全部丢失(fusable-only 算子会在引擎选型阶段报 "Cannot find engine")。桩用名字占住 fe 表,fe 调度器才能按名字桥接到 math 侧实现。 未登记的 3 个: - CastlikeFusionPass、HistogramFusionPass:math 实现 Stage 为 kAfterInferShape,不在 kCompatibleInherited 表里,登记后 fe 查不到实现会报 "pattern fusion is nullptr" - Globalavgpoolpass:本次不登记 补充说明:DropOutV3SplitFusionPass 已登记但当前不生效——不在 OPP 白名单 support_fusion_pass.json 的 3510(ascend950) 名单内,fe 会 force close 跳过;待 OPP 侧补名单后生效,故保留登记。 ## 关联的Issue 关联 Issue #3450:[Requirement|需求建议]: FE 融合 pass 打桩注册,编入 libopgraph_math.so https://gitcode.com/cann/ops-math/issues/3450 ## 测试 - 编译:ascend950 配置下 fusion_pass_common.cpp 编译通过,libopgraph_math.so 链接通过 - 符号:桩引用的 FusionPassRegistrar 未定义符号与 libregister.so 导出的逐字符一致(_GLIBCXX_USE_CXX11_ABI=0) - 加载:ldd 依赖全部可解析,dlopen libopgraph_math.so 成功,静态初始化未崩溃 - 冒烟:已验证通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5140 | 1 month ago | |
fix: ONNX插件解析零值属性异常 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !5896 merge fix/onnx-zero-attr-parsing into master fix: ONNX插件解析零值属性异常 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 GE 序列化 ONNX 算子属性为 JSON 时,会省略值为 0 的标量 int 字段 "i"。部分 ops-math 插件以 attr.contains("i") 判断属性是否存在,导致显式零值被错误回退到算子默认值或误判为必需属性缺失。 本次修改: - 按属性 name 判断属性是否存在;i 字段缺失时按 protobuf 标量默认值 0 处理。 - 修复 Correlation、ReverseSequence、NPUOneHot 的零值属性解析。 - 完善 3 个插件的 framework UT,覆盖显式零值、属性缺省、正常属性及异常 JSON 等场景。 ## 关联的Issue Closes #3270 https://gitcode.com/cann/ops-math/issues/3270 ## 测试 - ONNX 插件构建:bash build.sh --onnxplugin -j16,通过。 - op_host UT 构建:bash build.sh -u --ophost --noexec --ops=correlation,reverse_sequence,one_hot -j64,通过。 - 专项 UT:Correlation、ReverseSequence、OneHotD 共 22 个用例,全部 PASSED。 - pre-commit:trailing whitespace、EOF、merge conflict、private key、clang-format、codespell、OAT 全部通过。 - 验证环境:Ascend 910B3 / CANN 9.0.0。 ## 文档更新 不涉及。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!5896 | 1 month ago | |
fe: 融合 pass 打桩注册,编入 libopgraph_math.so Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !5140 merge task4-stubs into master fe: 融合 pass 打桩注册,编入 libopgraph_math.so Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 桩声明 GE fe 融合 pass 注册接口(GraphFusionPassType 枚举、PassAttr、FusionPassRegistry、FusionPassRegistrar、STUB_REG_PASS),新增 common/src/op_graph/fusion_pass_common.cpp 登记 9 个有 canndev 对应物的 pass 名字,编入 libopgraph_math.so;仅 ascend950 且 ge_compiler >= 9.0.0 时生效。 作用:删掉 canndev 后 fe 表为空,这 9 个 pass 的融合会全部丢失(fusable-only 算子会在引擎选型阶段报 "Cannot find engine")。桩用名字占住 fe 表,fe 调度器才能按名字桥接到 math 侧实现。 未登记的 3 个: - CastlikeFusionPass、HistogramFusionPass:math 实现 Stage 为 kAfterInferShape,不在 kCompatibleInherited 表里,登记后 fe 查不到实现会报 "pattern fusion is nullptr" - Globalavgpoolpass:本次不登记 补充说明:DropOutV3SplitFusionPass 已登记但当前不生效——不在 OPP 白名单 support_fusion_pass.json 的 3510(ascend950) 名单内,fe 会 force close 跳过;待 OPP 侧补名单后生效,故保留登记。 ## 关联的Issue 关联 Issue #3450:[Requirement|需求建议]: FE 融合 pass 打桩注册,编入 libopgraph_math.so https://gitcode.com/cann/ops-math/issues/3450 ## 测试 - 编译:ascend950 配置下 fusion_pass_common.cpp 编译通过,libopgraph_math.so 链接通过 - 符号:桩引用的 FusionPassRegistrar 未定义符号与 libregister.so 导出的逐字符一致(_GLIBCXX_USE_CXX11_ABI=0) - 加载:ldd 依赖全部可解析,dlopen libopgraph_math.so 成功,静态初始化未崩溃 - 冒烟:已验证通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5140 | 1 month ago |
| Files | Last commit | Last update |
|---|---|---|
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 1 month ago |