| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 修复 index 目录日志规范扫描遗留问题(错误描述补值/语法拼写) Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !10274 merge fix/log-swap-20260911 into master fix: 修复 index 目录日志规范扫描遗留问题(错误描述补值/语法拼写) Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 描述 按 cann-log-evaluation 20260910 扫描报告(cann-log-evaluation-report-20260910.xlsx)修复 index 目录日志规范遗留问题,**不改动任何日志等级**(级别错配类 14 项按规范要求保持原等级,另行评估)。 ### 修复内容 **错误描述不完整(补当前实际值,20 处)** - unsorted_segment_tiling_common.cpp(3 处):GetPlatformInfo 校验失败补 totalCoreNum/maxThread/ubSize 当前值 - experimental/index/index/op_api/aclnn_index.cpp(5 处):广播失败补两侧 shape 值、私有格式补实际 format、rank 越限补当前值、out shape 校验补两侧值 - experimental/index/index/op_host/index_infershape.cpp(5 处):广播失败补两侧值、x rank/indexed_sizes 长度与取值校验补当前值 - experimental/index/index/op_host/index_tiling.cpp(7 处):indices rank/维度正数/广播失败/aiv core num/x rank/y rank/indexed dimension 校验补当前值 **语法/拼写(2 处)** - index_by_tensor_fallback.cpp:faild→failed、mask 非法值补当前值 ### 未处理项说明 - 14 项级别错配(index_put_v2_fusion_pass):按要求**不改日志等级**,其中部分路径为正常降级分支 - 11 项已由 PR #9847 修复(扫描快照滞后导致重复报告) - 1 项属 ascend-transformer-boost 仓,不在本 PR 范围 ## 关联的Issue #5793 ## 测试 - pre-commit 全部通过(clang-format / ruff-check / ruff-format / codespell / OAT 等 10 项) - 仅修改日志文案与补参,无逻辑变更 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10274 | 30 天前 | |
UnsortedSegmentProd性能优化 Co-authored-by: zhangxiyan7<zhangxiyan7@huawei.com> # message auto-generated for no-merge-commit merge: !9677 merge UnsortedSegmentProd into master UnsortedSegmentProd性能优化 Created-by: zhangxiyan7 Commit-by: zhangxiyan7 Merged-by: cann-robot Description: ## 描述 针对 UnsortedSegmentProd 算子性能对标竞品部分用例不达标的问题,从单一 Simt 路径扩展为多模板路径体系,并增加全无效 id 向量化快路径。分模板优化说明: 1. OutFl / OutFlWsMerge(输出全载)模板 - 输入行数远超输出规模( inputOuterDim > outputSize × 总核数 × 2)时启用:输出整块驻留 UB,输入行按批流入直接累乘,消除逐行原子写 - WsMerge 变体:各核在 workspace 私有段累乘局部积,最后按输出行跨核 merge,突破单核 UB 容量限制 2. InputPart(输入分区)模板 - 输入行数 ≥ 1024 且输出可驻留 workspace 时启用:按输入行多核分区并行,各核产出局部积后按输出行 merge,解决输入长、输出短的负载并行度问题 - strided flag 跨核聚合:各核将"是否存在有效 id"写入带 stride 的 GM flag,清缓存 + SyncAll 后汇聚,全局无有效 id 时直接跳过 merge 写初值 1 3. SegmentSort(段排序)模板 - float32 且 128 ≤ innerDim < 512、行数 ≥ 1024 时启用:RadixSort 对 segmentIds 排序(多核本地排序 + 归并树合并),归约阶段按连续 segment 顺次连乘,消除随机访存 4. SplitCol / SortSimt 模板:复用公共路径 + Prod 特化 - SplitCol 的 baseA ;sLoopNum == 1 时走单块快路径——一次性读入全部 ids 并先做全无效检测,再决定是否搬运数据 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5636 ## 测试 目标用例性能达标(换算带宽后实现 竞品耗时/NPU耗时 > 0.2),冒烟通过。部分用例性能对比结果如下: | # | 用例 / dtype | 输入形状(seg数) | GPU耗时(µs) | 初始NPU耗时(µs) | 初始耗时比 | 最终NPU耗时(µs) | 最终耗时比 | |---|---|---|---|---|---|---|---| | 1 | 000132 fp32/int32 | [5410,77,4] (554) | 19.35 | 381.08 | 0.051 | 30.09 | 0.643 | | 2 | 000040 bf16/int32 | [20,1,8,9,12] (906) | 13.32 | 235.62 | 0.057 | 10.40 | 1.280 | | 3 | 000047 bf16/int64 | [2,2019,33,2,2,2,2,2] (231) | 451.06 | 12101.55 | 0.037 | 110.87 | 4.068 | | 4 | 000116 fp16/int32 | [63,5,10044] (834) | 28.21 | 518.22 | 0.054 | 27.30 | 1.033 | | 5 | 000062 int32/int32 | [3,2,1110,2,2,11,2,2] (224) | 14.59 | 1248.42 | 0.012 | 29.71 | 0.491 | | 6 | 000140 fp32/int32 | [2,4,4,1,8,5,8] (308) | 4.98 | 76.65 | 0.065 | 4.97 | 1.003 | | 7 | 000131 fp32/int64 | [60,5717] (262) | 6.69 | 144.32 | 0.046 | 7.02 | 0.953 | | 8 | 000163 int32/int64 | [101,32383] (853) | 70.59 | 1705.76 | 0.041 | 148.06 | 0.477 | | 9 | 000130 fp32/int32 | [1605,1054] (724) | 620.00 | 34430.41 | 0.018 | 141.21 | 4.391 | | 10 | 000171 int32/int64 | [10090,3,3,3,5,3] (822) | 490.38 | 26759.76 | 0.018 | 270.01 | 1.816 | | 11 | 000017 fp32/int64 | [770] (909) | 8.04 | 1084.10 | 0.007 | 20.81 | 0.386 | | 12 | 000007 fp32/int32 | [52,9739,4,4] (97) | 434.26 | 19934.99 | 0.022 | 66.02 | 6.577 | | 13 | 000134 fp32/int32 | [5,28,34,19] (66) | 160.63 | 34359.26 | 0.005 | 638.77 | 0.251 | | 14 | 000024 fp32/int32 | [20,4,5,21,9] (769) | 5.45 | 198.86 | 0.027 | 7.66 | 0.711 | | 15 | 000006 fp16/int32 | [68,4,4,13603] (208) | 208.56 | 4464.44 | 0.047 | 113.08 | 1.844 | | 16 | 000126 fp16/int32 | [136,2,2,2,645,2,2,2] (965) | 58.30 | 1237.38 | 0.047 | 46.24 | 1.261 | | 17 | 000046 bf16/int32 | [2,2,2,272,2,2,2,63] (406) | 143.06 | 3622.09 | 0.039 | 63.18 | 2.264 | | 18 | 000021 fp32/int64 | [5,12,3171] (383) | 23.28 | 152.96 | 0.152 | 26.94 | 0.864 | | 19 | 000011 fp32/int64 | [2,7081,2,2,2,6,3,2] (632) | 57.57 | 4150.62 | 0.014 | 140.37 | 0.410 | | 20 | 000037 bf16/int64 | [145,4,8254] (1000) | 78.42 | 1037.15 | 0.076 | 96.01 | 0.817 | | 21 | 000135 fp32/int64 | [5,5,4,41] (839) | 45.12 | 3645.09 | 0.012 | 15.85 | 2.847 | | 22 | 000146 bf16/int32 | [23,47] (269) | 14.94 | 480.06 | 0.031 | 15.58 | 0.959 | | 23 | 000017 fp32/int64 | [9718] (954) | 44.76 | 2030.42 | 0.022 | 19.37 | 2.310 | | 24 | 000056 int32/int32 | [4,4,17,4,6535] (396) | 3092.56 | 209483.03 | 0.015 | 552.16 | 5.601 | | 25 | 000227 int32/int64 | [116,317,10,446] (788) | 1254.56 | 83651.63 | 0.015 | 2683.99 | 0.467 | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:UnsortedSegmentProd算子性能优化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9677 | 1 个月前 | |
Feature: 为 index 和 pooling 类算子新增 Ascend350 平台支持 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !9754 merge dev_zl_2026_0902 into master Feature: 为 index 和 pooling 类算子新增 Ascend350 平台支持 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 为 index 和 pooling 类算子新增 Ascend350 平台支持。具体变更包括: 1. **新增 Ascend350 平台配置文件**(42 个 JSON):为每个算子新增 op_host/config/ascend350/ 下的二进制配置 JSON 2. **注册 Ascend350 平台**:在各算子 _def.cpp 中添加 his->AICore().AddConfig(ascend350, aicoreConfig) 3. **更新编译配置**:修改各算子 CMakeLists.txt,添加 Ascend350 编译选项;更新 scendc_config.json 中对应算子的 compute_units 列表,将 [ascend950] 扩展为 [ascend950, ascend350] 4. **更新 Fusion Pass 平台判断**:在 bucketize_v2_fusion_pass、inplace_add_fusion_pass、gather_fusion_pass、tensor_scatter_add_fusion_pass、sorted_sparse_segment_mean_grad_fusion_pass 中将 Ascend350 加入平台白名单 涉及算子(35+): - index: bucketize_v2, concat_offset, gather_elements, gather_nd, gather_v2, index_fill, index_fill_d, index_put_v2, inplace_index_add, inplace_index_fill, linear_index_v2, masked_scatter, repeat_interleave, reverse_sequence, reverse_v2, scatter, scatter_add, scatter_add_with_sorted, scatter_elements, scatter_elements_v2, scatter_nd, scatter_nd_add, scatter_nd_max, scatter_nd_min, scatter_nd_update, scatter_sub, scatter_update, segment_sum, sorted_sparse_segment_mean_grad, sparse_segment_mean, sparse_to_dense, unsorted_segment_max, unsorted_segment_min - pooling: avg_pool, avg_pool_v2 - 公共库: scatter_nd_common, unsorted_segment_common, sort_lib ## 关联的Issue - #5651 ## 测试 obp冒烟、david冒烟已通过 ## 文档更新 NA ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9754 | 28 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 30 天前 | ||
| 1 个月前 | ||
| 28 天前 |