| Files | Last commit | Last update |
|---|---|---|
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 | 27 days ago | |
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 month ago |
| Files | Last commit | Last update |
|---|---|---|
| 27 days ago | ||
| 1 month ago |