| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(arch35): 新增 aclsparseXcscsort CSC 排序算子 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !80 merge feat/aclsparse-xcscsort into master feat(arch35): 新增 aclsparseXcscsort CSC 排序算子 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 对齐 cuSPARSE cusparseXcscsort 接口,新增 CSC 格式按列内行索引稳定升序排序算子,同步重排置换向量 P。为仓内 csrsort 的列向对偶:按 CSC 列(cscColPtr 划分)对每列的 cscRowInd 做稳定升序排序,P 同步重排。 ### 算法设计 - **多核切分**:以累计 nnz 加权分配列区间,FindColBoundary 二分定位列边界,不拆分单列 - **单 run 路径**(len <= runSize):UB 内 Sort<int32_t>(RADIX_SORT) + Gather P + CopyOut - **多 run 路径**(len > runSize):Phase1 切多 run 各自 Sort 写入 GM scratch + merge-path 稳定归并 - **pBuffer 128 字节对齐检查**(对齐 cuSPARSE 约束,csrsort 无此检查) - **workspace**:2*nnz*sizeof(int32_t),布局 [scratchRowInd(nnz), scratchP(nnz)] ### 与 csrsort 的对偶差异 | 差异项 | csrsort | cscsort | |--------|---------|---------| | 压缩维度指针 | csrRowPtr (m+1) | cscColPtr (n+1) | | 待排序索引 | csrColInd | cscRowInd | | 多核二分定位 | FindRowBoundary | FindColBoundary | | segment 区间 | [csrRowPtr[row], ...) | [cscColPtr[col], ...) | | pBuffer 对齐检查 | 不检查 | 检查 128 字节对齐 | ## 关联的Issue 无 ## 测试 - **功能测试**:39 用例(L0 冒烟 2 + L1 功能 12 + L2 边界异常 16 + 白盒 9),全部 PASS - **精度标准**:int32 exact match,稳定性验证通过 - **白盒覆盖**:可测分支 40/40 = 100% - **性能对比**:与 csrsort 同规模 ±1% 以内,无回归 - **编译环境**:CANN 9.0.0 / Ascend950PR ## 文档更新 - 新增 sparse/cscsort/README.md:算子使用文档(接口、参数、约束、调用示例、算法说明) - 修改 docs/zh/api_list.md:登记 cscsort 接口并补充详情章节 - 修改 include/cann_ops_sparse.h:追加 aclsparseXcscsort* API 声明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 备注 csrgeam2 算子存在预存编译问题(aclrtMemsetD32Async 在 CANN 9.0.0 中未声明),与本 PR 无关,不影响 cscsort 的独立编译与测试。 See merge request: cann/ops-sparse!80 | 2 个月前 | |
feat(arch35): 新增 aclsparseXcscsort CSC 排序算子 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !80 merge feat/aclsparse-xcscsort into master feat(arch35): 新增 aclsparseXcscsort CSC 排序算子 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 对齐 cuSPARSE cusparseXcscsort 接口,新增 CSC 格式按列内行索引稳定升序排序算子,同步重排置换向量 P。为仓内 csrsort 的列向对偶:按 CSC 列(cscColPtr 划分)对每列的 cscRowInd 做稳定升序排序,P 同步重排。 ### 算法设计 - **多核切分**:以累计 nnz 加权分配列区间,FindColBoundary 二分定位列边界,不拆分单列 - **单 run 路径**(len <= runSize):UB 内 Sort<int32_t>(RADIX_SORT) + Gather P + CopyOut - **多 run 路径**(len > runSize):Phase1 切多 run 各自 Sort 写入 GM scratch + merge-path 稳定归并 - **pBuffer 128 字节对齐检查**(对齐 cuSPARSE 约束,csrsort 无此检查) - **workspace**:2*nnz*sizeof(int32_t),布局 [scratchRowInd(nnz), scratchP(nnz)] ### 与 csrsort 的对偶差异 | 差异项 | csrsort | cscsort | |--------|---------|---------| | 压缩维度指针 | csrRowPtr (m+1) | cscColPtr (n+1) | | 待排序索引 | csrColInd | cscRowInd | | 多核二分定位 | FindRowBoundary | FindColBoundary | | segment 区间 | [csrRowPtr[row], ...) | [cscColPtr[col], ...) | | pBuffer 对齐检查 | 不检查 | 检查 128 字节对齐 | ## 关联的Issue 无 ## 测试 - **功能测试**:39 用例(L0 冒烟 2 + L1 功能 12 + L2 边界异常 16 + 白盒 9),全部 PASS - **精度标准**:int32 exact match,稳定性验证通过 - **白盒覆盖**:可测分支 40/40 = 100% - **性能对比**:与 csrsort 同规模 ±1% 以内,无回归 - **编译环境**:CANN 9.0.0 / Ascend950PR ## 文档更新 - 新增 sparse/cscsort/README.md:算子使用文档(接口、参数、约束、调用示例、算法说明) - 修改 docs/zh/api_list.md:登记 cscsort 接口并补充详情章节 - 修改 include/cann_ops_sparse.h:追加 aclsparseXcscsort* API 声明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 备注 csrgeam2 算子存在预存编译问题(aclrtMemsetD32Async 在 CANN 9.0.0 中未声明),与本 PR 无关,不影响 cscsort 的独立编译与测试。 See merge request: cann/ops-sparse!80 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 |