| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
根据markdownlint规范修正md写作问题和link失效 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !6398 merge master into master 根据markdownlint规范修正md写作问题和link失效 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 根据markdownlint规范修正md写作问题和link失效 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2272](https://gitcode.com/cann/ops-math/issues/2272) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 所有md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6398 | 6 天前 | |
算子资料修改后同步修改example Co-authored-by: FelixTang7<tangyanfeng@huawei.com> # message auto-generated for no-merge-commit merge: !5542 merge md into master 算子资料修改后同步修改example Created-by: FelixTang7 Commit-by: FelixTang7 Merged-by: cann-robot Description: ## 描述 部分算子资料有误,修改算子文档后同步对example进行修改 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3040 ## 测试 文档修改,无需测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5542 | 1 个月前 | |
refactor: 为公共op_api头文件增加math后缀 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !5839 merge refactor/math-prefix-common-headers into master refactor: 为公共op_api头文件增加math后缀 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 ops-math/common/inc/op_api 中的 level2_base.h、level2_base_caculation.h、op_api_def.h 名称缺少仓库标识。在软件包合并交付或公共 include 目录集成时,存在被其他仓库同名文件覆盖,或因 include 路径顺序产生误引用的风险。 本 MR 参考同目录已有的 op_resource_math.h 命名,为三个公共头文件增加 _math 后缀,并通过兼容转发头分阶段迁移现有引用。 ## 修改内容 - 新增 level2_base_math.h、level2_base_caculation_math.h、op_api_def_math.h,作为带仓库标识的正式实现; - 原 level2_base.h、level2_base_caculation.h、op_api_def.h 保留为轻量兼容转发头,避免未迁移代码立即失效; - 新头文件之间的内部依赖统一使用 _math 后缀路径; - 更新 classify_rule.yaml,让 level2_base_math.h 继承原组件及 UT 覆盖率分类; - 将 89 处旧头文件引用迁移到新名称: - level2_base.h:20 处; - level2_base_caculation.h:9 处; - op_api_def.h:60 处; - 当前 MR 共修改 81 个文件,新增 434 行、删除 384 行。 为减少无关格式变化和后续合并冲突,本次未迁移会触发额外 clang-format、尾部空白或 EOF 修复,或组合触发既有 UT 隔离问题的文件。这些文件将拆分到后续 MR 逐步处理。 ## 剩余迁移 当前仓内仍有 67 处旧引用,分布在 65 个唯一文件中,继续通过兼容转发头工作: - level2_base.h:24 个文件; - level2_base_caculation.h:2 个文件; - op_api_def.h:41 个文件。 待旧引用分批迁移完成后,再结合实际打包和安装规则移除兼容转发头。本 MR 不移除旧头文件,也不声明已完成最终软件包去重。 ## 关联的 Issue 关联并在合入后关闭 #3243: https://gitcode.com/cann/ops-math/issues/3243 ## 测试 已完成: - 对本轮新增的 69 个纯引用替换文件逐行检查,80 组增删均仅修改目标 include,无其他代码或格式变化; - 额外纳入 aclnn_log10.cpp 和 aclnn_logdet.cpp,每个文件最终均为 3 行新增、3 行删除,低于 10 行修改阈值;math/sin/op_api/aclnn_sin.cpp 因聚合 UT 存在平台状态泄漏暂缓迁移; - 在 CANN 9.0.0 容器执行完整 pre-commit,尾部空白、EOF、clang-format、codespell 和 OAT 等检查全部通过; - 在 CANN 9.0.0 容器执行 bash build.sh --opapi -j32,全量构建通过; - 成功生成 build/libopapi_math.so,SHA-256:abaa8f8408979d931a8dad09f8e06875722fc42bbdddc72aaf9f14944bc163ea; - classify_rule.yaml 可正常解析,三个旧文件继续作为兼容转发头使用。 ## 文档更新 不涉及用户文档变更。 ## 类型标签 - [ ] Bug 修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:代码重构 See merge request: cann/ops-math!5839 | 14 天前 | |
sort/sort_with_index/top_k_v2/kth_value err msg整改 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !3943 merge master into master sort/sort_with_index/top_k_v2/kth_value err msg整改 Created-by: wuxiyuan Commit-by: wuxiyuan;ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将 sort、sort_with_index、top_k_v2、kth_value 四个算子中的通用 OP_LOGE 调用替换为结构化错误日志宏,使错误信息包含参数名、实际值、期望值等结构化字段,便于问题定位。 涉及算子 - sort - sort_with_index - top_k_v2 - kth_value 涉及文件 - math/kth_value/op_host/arch35/kth_value_tiling_arch35.cpp - math/kth_value/op_host/kth_value_infershape.cpp - math/sort/op_graph/sort_graph_infer.cpp - math/sort/op_host/arch35/sort_tiling.cpp - math/sort/op_host/arch35/sort_tiling_arch35.cpp - math/sort/op_host/arch35/sort_tiling_common.cpp - math/sort_with_index/op_host/arch35/sort_with_index_tiling.cpp - math/sort_with_index/op_host/sort_with_index_infershape.cpp - math/top_k_v2/op_graph/top_k_v2_graph_infer.cpp - math/top_k_v2/op_host/arch35/sort_with_index_tiling.h - math/top_k_v2/op_host/arch35/top_k_v2_tiling_arch35.cpp - math/top_k_v2/op_host/top_k_v2_infershape.cpp ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2191 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已完成自验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Err Msg整改 See merge request: cann/ops-math!3943 | 3 个月前 | |
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 | 7 天前 | |
fix(sort): eliminate arch35 vector loop warnings Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !6341 merge master into master fix(sort): eliminate arch35 vector loop warnings Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 Sort arch35 非末轴小轴路径在源码编译时产生的 5 条 vector-loop 告警。TF 编译日志中反馈这些告警,本机使用修改前源码和 CANN bisheng 已复现:循环边界类型应为 uint16_t,且非整倍数步长可能使 tripcount 计算不准确。 本次修改涉及两个 kernel 头文件: - common/non_last_small_axis_base.h:在 vector scope 外计算 uint16_t 类型的 axis 块数与 inner 边界;将按向量长度递增的循环改为单位步长的块计数循环,保留最后一个有效尾块。 - sort_non_last_small_axis.h:将输出 indices/values 的 axis 循环边界预先转换为 uint16_t;补齐整数类型与数学 helper 的直接头文件依赖。 在当前 Host tiling 约束(axis≤2048、inner chunk≤64)内,转换不会截断。设轴长为 L、向量长度为 V,原循环访问 0,V,2V,…<L,新循环执行 ceil(L/V) 次并计算 axisBase=r*V;每块有效长度仍为 min(V,L-axisBase)。两版访问序列、mask 和地址相同,排序算法、tiling 选择、buffer 布局及同步保持原有行为。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3572 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - **告警复现与消除**:修改前复现原始 5 条告警;修改后代表模板通过 -Werror=cce-compat 编译,Sort release binary 的 22 个 dtype 组合完整编译成功、编译告警为 0。 - **性能与越界检查**:使用 sort ST用例集,仅比较实际进入本次改动分支的 sch9/sch10,共 86 个用例、11 种输入 dtype;两版性能采集及越界检查均通过。设备为 Ascend950DT_9574,同一 builtin host tiling,仅切换 kernel 二进制;相同 seed、预热设置与采样次数,每例取预热后 30 次设备执行耗时的中位数。 | 路径 | 用例数 | 改动版耗时变化中位数 | 耗时比几何平均变化 | |---|---:|---:|---:| | sch9 | 49 | +0.41% | +0.78% | | sch10 | 37 | +0.28% | +1.18% | | 合计 | 86 | +0.36% | +0.95% | 首轮整体变化处于约 1% 的正常波动范围。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 消除编译告警 See merge request: cann/ops-math!6341 | 7 天前 | |
perf(sort): 优化归并、非末轴排序及索引输出 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !5672 merge master into master perf(sort): 优化归并、非末轴排序及索引输出 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 优化 Sort 在多行归并、非末轴小轴及 UB 可容纳整行的大轴场景中的执行开销,保持稳定排序、升降序及 values/indices 语义。 - 引入公共 ping-pong 归并,减少阶段间回拷;在适用路径批量归并多行,并优化多核末轮归并。 - 按实际 UB 布局统一选择整行归并路径,优化非末轴批次规划、NDDMA 搬运与向量化索引输出。 - 对 RegBase 平台排序轴后全为单例维的输入,通过 Reshape 消除冗余转置;其他输入沿用原路径。 - 同步 TopKV2 依赖模板,补充 NaN、正负零、尾块及稳定索引看护。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3230 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - Ascend950PR_9579 :Sort kernel 395 条、正负零逐位比较 18 条、Sort ACLNN 40 条、TopKV2 受影响用例 177 条,合计 **630 条精度全部通过**,Sort 同时比较 values 和 indices。 - 相对前一版已验证实现,设备耗时异常项复测后未确认稳定超过 5% 且超过 0.5 μs 的劣化 - 二级冒烟通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5672 | 1 个月前 | |
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 | 7 天前 | |
产品名变更 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 | 30 天前 |
Sort
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:将输入tensor中的元素根据指定维度进行升序/降序排序,并且返回对应的排序结果值和索引值。
-
计算公式:
y1=sort(x,axis,descending,stable)y1 = \operatorname{sort}(x, \text{axis}, \text{descending}, \text{stable}) y1=sort(x,axis,descending,stable)
y2=argsort(x,axis,descending,stable)y2 = \operatorname{argsort}(x, \text{axis}, \text{descending}, \text{stable}) y2=argsort(x,axis,descending,stable)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待进行排序的输入tensor。 | FLOAT16、FLOAT32、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、BFLOAT16 | ND |
| y1 | 输出 | 表示tensor在指定维度上排序的结果值,与x具有相同的类型和格式。 | FLOAT16、FLOAT32、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64、BFLOAT16 | ND |
| y2 | 输出 | 表示排序后每个元素在原tensor中的索引。 | INT32、INT64 | ND |
| axis | 属性 | 指定排序的维度,默认为-1(最后一维)。 | INT | - |
| descending | 属性 | 是否降序排序,true为降序,false为升序,默认为false。 | BOOL | - |
| stable | 属性 | 是否稳定排序,true为稳定排序,false为非稳定排序,默认为false。 | BOOL | - |
| y2_dtype | 属性 | y2的数据类型,默认为DT_INT32。 | Type | - |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_sort | 通过aclnnSort接口方式调用Sort算子。 |
| aclnn调用 | test_aclnn_argsort | 通过aclnnArgsort接口方式调用Sort算子。 |