已关闭
[Requirement|需求建议]: 新增 Ascend 950 aclsparseXcsrsort 接口 #111
陈思创建于  7月21日关闭于  11 天前
陈思
陈思成员
7月21日 创建

Backgroud(背景信息)

需要为 Ascend 950(arch35)提供 CSR 行内列索引排序能力,包括 workspace 大小查询和
排序执行接口。执行接口应对每个 CSR 行的 csrColInd 进行原地稳定升序排序,
使 P 按相同排列同步重排,并保持 csrRowPtr 不变。

Origin(信息来源)

ops-sparse 仓库 CSRSORT 接口开发任务,对应分支 feat/aclsparse-xcsrsort

Benefit / Necessity (价值/作用)

  • 提供 CSR 每行列索引的稳定升序排序能力,覆盖 base-0 和 base-1 索引。
  • 通过同步重排 P,让调用方可使用该排列对其他与非零元素关联的数据执行
    后续处理。
  • 对多行 CSR 按累计 nnz 均衡分核,并通过多 run 排序与稳定归并处理超过
    单次 UB 容量的长行。

Design(设计方案)

  1. 在公共头文件中新增 aclsparseXcsrsort_bufferSizeExtaclsparseXcsrsort 两个 C 接口,
    前者返回 2 * nnz * sizeof(int32_t) workspace 大小,后者使用 handle 中的 stream
    异步执行排序。
  2. Host 侧完成维度、指针和 index base 校验;根据 AIV 核数和 UB 容量动态计算
    启动核数、单 run 规模、归并分片规模和 Sort 临时空间。
  3. arch35 Kernel 按累计 nnz 均衡分核,将分割点对齐到完整 CSR 行边界;各核的
    csrColIndP 和 workspace 区间互不重叠,无需核间同步。短行在 UB 内完成
    单 run 排序;长行先对多个 run 分别排序,再使用 merge-path co-rank 二分定位输出
    分片,将对齐前缀与有效数据批量搬入 TQue,对 csrColInd/P 两字段执行稳定二路
    归并,中间结果在原数组和 GM workspace 之间 ping-pong。
  4. 增加 CPU golden 与 GTest 用例,覆盖基本语义、稳定性、索引基值、空行、多核非均匀
    行分布、长行多 run、runSize 边界、csrRowPtr 不变、workspace 对齐及异常参数,
    并更新 API 文档、README 和设计文档。Ascend 950 构建验证通过,设备完整回归 27/27 通过。

关联 PR:https://gitcode.com/cann/ops-sparse/merge_requests/72

likedislike
陈思陈思成员
7月21日 添加了label:requirement
陈思
陈思成员
7月21日 评论:

/assign @chensi79

likedislike
CANN-robotCANN-robot成员
7月21日 将 chensi79 设为负责人
zhuzhiming成员
11 天前 评论:

已完成

likedislike
Zzhuzhiming成员
11 天前 issue状态由 进行中 改变为 已完成
Zzhuzhiming成员
11 天前 关闭了 issue
CANN-robotCANN-robot成员
11 天前 添加了label:resolved