| 支持top_k_v2算子在下一代中实现 Co-authored-by: yuhwang<wangyuhang70@huawei.com> # message auto-generated for no-merge-commit merge: !788 merge master into master 支持top_k_v2算子在下一代中实现 Created-by: yuhwang Commit-by: yuhwang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!788 | 9 months ago |
| TopkV2算子支持小k场景下的双调排序 Co-authored-by: caoyan_huawei<caoyan11@huawei.com> # message auto-generated for no-merge-commit merge: !4683 merge cy_br_gpu_index_814 into master TopkV2算子支持小k场景下的双调排序 Created-by: caoyan_huawei Commit-by: caoyan_huawei Merged-by: cann-robot Description: # 主要描述 TopKV2算子在小k情况下支持双调排序算法。本次修改引入了 sortPolicy(排序策略)字段,并新增 top_k_small_size_sort.h 实现 Bitonic Small TopK 路径,在sorted=true且小 k 值(2 ≤ k ≤ 32)场景下使用双调排序(Bitonic Sort)网络对 TopK 候选结果做最终结果输出。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2898 ## 测试 UT,ST,二级冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4683 | 2 months ago |
| TopkV2算子编译时长优化 Co-authored-by: caoyan_huawei<caoyan11@huawei.com> # message auto-generated for no-merge-commit merge: !6919 merge cy_topk_compile_1031 into master TopkV2算子编译时长优化 Created-by: caoyan_huawei Commit-by: caoyan_huawei Merged-by: cann-robot Description: 变更摘要 本 PR 旨在优化 TopkV2 算子在 arch35 平台上的编译时长。核心思路是把原本在单次编译中展开的、按 N/K 全量递归模板实例化的标量选择分发,改为按 N 区间拆分到多个独立的 CANN 编译单元(tiling key),并把多处递归模板展开改写为 std::index_sequence 配合折叠表达式实现;同时把标量 N 维度的分发职责从 kernel 侧运行时判断前移到 host tiling 与 tiling key 注册。 主要改动 1. 标量 N 区间新增独立 tiling key:在 top_k_constant_var_simd.h 中新增 TOPK_GM_SCALAR_KEY_BASE(1000000)以及 TOPK_GM_SCALAR_N3_10_KEY、TOPK_GM_SCALAR_N11_18_KEY、TOPK_GM_SCALAR_N19_26_KEY、TOPK_GM_SCALAR_N27_32_KEY 与 TOPK_GM_SCALAR_N_PER_KEY(8),将 N 的取值域按每 8 个一组切分,使每个区间成为独立编译单元。 2. Host 侧 tiling key 计算:top_k_v2_tiling_arch35.cpp 的 TryTopKSmallAxisSort 改为按 lastAxis 计算 scalarKey 并传入 FillTopKDirectTiling,替代原先的 dataTypeKey,由 host 决定走哪个 N 区间 key。 3. Kernel 入口按 tiling key 分发 N 组:top_k_v2_apt.cpp 为四个 scalar 区间 key 注册 TILING_KEY_IS 与 KERNEL_TASK_TYPE(..., KERNEL_TYPE_MIX_AIV_1_0),并新增 GenerateTopKScalarGroup / TryGenerateTopKScalarN,从 TILING_KEY_VAR 反推 firstN 与 countN,在组内按 lastAxisNum 匹配后调用 DispatchTopKSimtGmScalarK。 4. 标量选择分发改为非递归展开:top_k_small_k_simt_gm_select.h 删除 DispatchTopKSimtGmScalarSelect / DispatchTopKSimtGmScalarK 的二分递归模板与 TryRunTopKSimtGmScalarSelect 运行时提前返回逻辑,改为按给定 N 用 std::make_index_sequence 展开 K 候选项,并以 || 折叠短路命中。 5. 排序与宽度/阈值分发改用折叠表达式:TopKSimtGmSortCandidates 拆出 TopKSimtGmExchangeCandidates 与 TopKSimtGmSortCandidateSteps,静态形状走 #pragma unroll 循环、非静态走索引序列折叠;DispatchTopKSimtGmWidth 与 DispatchTopKThresholdSimtGm 也由递归实例化改为 TryLaunchTopKSimtGmWidth / TryLaunchTopKThresholdSimtGm 的折叠表达式遍历。 6. Bitonic 路径的编译期裁剪:generateOpObject 中的 TOPK_DIRECT_MODE 分支被包进 if constexpr (!IS_BITONIC_SORT),避免 Bitonic 排序实例化时同时编译 direct GM 路径。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6919 | 8 days ago |
| TopkV2算子编译时长优化 Co-authored-by: caoyan_huawei<caoyan11@huawei.com> # message auto-generated for no-merge-commit merge: !6919 merge cy_topk_compile_1031 into master TopkV2算子编译时长优化 Created-by: caoyan_huawei Commit-by: caoyan_huawei Merged-by: cann-robot Description: 变更摘要 本 PR 旨在优化 TopkV2 算子在 arch35 平台上的编译时长。核心思路是把原本在单次编译中展开的、按 N/K 全量递归模板实例化的标量选择分发,改为按 N 区间拆分到多个独立的 CANN 编译单元(tiling key),并把多处递归模板展开改写为 std::index_sequence 配合折叠表达式实现;同时把标量 N 维度的分发职责从 kernel 侧运行时判断前移到 host tiling 与 tiling key 注册。 主要改动 1. 标量 N 区间新增独立 tiling key:在 top_k_constant_var_simd.h 中新增 TOPK_GM_SCALAR_KEY_BASE(1000000)以及 TOPK_GM_SCALAR_N3_10_KEY、TOPK_GM_SCALAR_N11_18_KEY、TOPK_GM_SCALAR_N19_26_KEY、TOPK_GM_SCALAR_N27_32_KEY 与 TOPK_GM_SCALAR_N_PER_KEY(8),将 N 的取值域按每 8 个一组切分,使每个区间成为独立编译单元。 2. Host 侧 tiling key 计算:top_k_v2_tiling_arch35.cpp 的 TryTopKSmallAxisSort 改为按 lastAxis 计算 scalarKey 并传入 FillTopKDirectTiling,替代原先的 dataTypeKey,由 host 决定走哪个 N 区间 key。 3. Kernel 入口按 tiling key 分发 N 组:top_k_v2_apt.cpp 为四个 scalar 区间 key 注册 TILING_KEY_IS 与 KERNEL_TASK_TYPE(..., KERNEL_TYPE_MIX_AIV_1_0),并新增 GenerateTopKScalarGroup / TryGenerateTopKScalarN,从 TILING_KEY_VAR 反推 firstN 与 countN,在组内按 lastAxisNum 匹配后调用 DispatchTopKSimtGmScalarK。 4. 标量选择分发改为非递归展开:top_k_small_k_simt_gm_select.h 删除 DispatchTopKSimtGmScalarSelect / DispatchTopKSimtGmScalarK 的二分递归模板与 TryRunTopKSimtGmScalarSelect 运行时提前返回逻辑,改为按给定 N 用 std::make_index_sequence 展开 K 候选项,并以 || 折叠短路命中。 5. 排序与宽度/阈值分发改用折叠表达式:TopKSimtGmSortCandidates 拆出 TopKSimtGmExchangeCandidates 与 TopKSimtGmSortCandidateSteps,静态形状走 #pragma unroll 循环、非静态走索引序列折叠;DispatchTopKSimtGmWidth 与 DispatchTopKThresholdSimtGm 也由递归实例化改为 TryLaunchTopKSimtGmWidth / TryLaunchTopKThresholdSimtGm 的折叠表达式遍历。 6. Bitonic 路径的编译期裁剪:generateOpObject 中的 TOPK_DIRECT_MODE 分支被包进 if constexpr (!IS_BITONIC_SORT),避免 Bitonic 排序实例化时同时编译 direct GM 路径。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6919 | 8 days ago |
| topk_fusion_pass Co-authored-by: jerry_gd<jerry.luo@huawei.com> # message auto-generated for no-merge-commit merge: !6207 merge TopKFusionPass into master topk_fusion_pass Created-by: jerry_gd Commit-by: jerry_gd Merged-by: cann-robot Description: ## 描述 本 PR 在 math/topk/op_graph/fusion_pass 下新增旧版 fe::TopKFusionPass 重构的 TopKFusionPass(新 PatternFusionPass 框架 + ES 接口),将 TopK/TopKV2 替换为 AICore 优化路径,并按 opp 算子信息库实况覆盖构建矩阵内全部芯片家族。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/4203 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 二级冒烟通过 - 相关topk的geir用例验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6207 | 10 days ago |
| sort|sort_with_index|top_k_v2算子适配ascend960dt/ascend960pr Co-authored-by: tujun6<tujun6@huawei.com> # message auto-generated for no-merge-commit merge: !6202 merge add_960_sort into master sort|sort_with_index|top_k_v2算子适配ascend960dt/ascend960pr Created-by: tujun6 Commit-by: tujun6 Merged-by: cann-robot Description: ## 描述 本 PR 为 sort/sort_with_index/top_k_v2 三个算子适配 ascend960dt/ascend960pr 平台,使其能够在这两个平台上编译和运行。主要改动: - **算子定义注册**:在 math/sort/op_host/sort_def.cpp、math/sort_with_index/op_host/sort_with_index_def.cpp、math/top_k_v2/op_host/top_k_v2_def.cpp 中为 ascend960dt/ascend960pr 增加 AICore 配置(复用 ascend950 的 aicoreConfig) - **编译入口**:三个算子的 CMakeLists.txt 中 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt、ascend960pr(tiling 目录 arch35) - **二进制 kernel 配置**:新增 op_host/config/ascend960dt|ascend960pr 下的 *_binary.json 与 *_simplified_key.ini - **二进制编译注册**:scripts/kernel/binary_config/ascendc_config.json 中扩展 Sort/SortWithIndex/TopKV2 的 compute_units 至 ascend960dt/ascend960pr,并补充对应编译选项 -mllvm -cce-aicore-dcci-before-kernel-end=false ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3587 ## 测试 - 本地 pre-commit 全量检查通过(trailing-whitespace、end-of-file-fixer、check-json、clang-format、codespell 等全部 hook) - OAT 合规扫描通过(oat-py 1.0.3,PR 全部 19 个文件,License 头与文件类型违规均为 0) - 二进制 kernel 编译与算子精度验证依赖 CI 流水线及 ascend960 平台环境 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6202 | 26 days ago |
| 产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 1 month ago |