已关闭
[Requirement|需求建议]: 新增aclsparseXcsr2coo接口 #110
yuyuanfeng创建于  7月21日关闭于  8月4日
yuyuanfeng
yuyuanfeng成员
7月21日 创建

需求背景

新增 csr2coo(CSR 行指针到 COO 行索引转换)算子,对齐 cuSPARSE cusparseXcsr2coo(Legacy API)。将 CSR 格式的压缩行偏移数组展开为 COO 格式的逐元素行索引数组。同时支持 CSC→COO 转换(传入列偏移数组)。

功能描述

API 签名

aclsparseStatus_t aclsparseXcsr2coo(aclsparseHandle_t handle,
                                    const int32_t *csrRowPtr,
                                    int64_t nnz,
                                    int64_t m,
                                    int32_t *cooRowInd,
                                    aclsparseIndexBase_t idxBase);

参数校验

  • handle 为 nullptr → NOT_INITIALIZED
  • nnz < 0 / m < 0 / m==0 且 nnz!=0 / idxBase 非0/1 / 指针为 nullptr / nnz 或 m 超过 INT32_MAX → INVALID_VALUE
  • stream 未设置时使用默认 stream(对齐 cuSPARSE)

约束

  • 索引类型:仅 INT32
  • csrRowPtr 须单调递增,非单调行跳过不报错
  • 无 workspace、无 GetBufferSize
  • 异步执行

实现状态

已实现,PR #71。

  • 81/81 测试通过(58 参数化 + 23 TEST_F)
  • msprof 性能实测通过
  • SIMT+SIMD 混合路径,多核余数分配法切分
likedislike
yuyuanfengyuyuanfeng成员
7月22日 修改标题为 “Feat: 新增面向Ascend950的aclsparseCsr2coo接口”,原标题为“## 需求背景”
yuyuanfengyuyuanfeng成员
7月22日 修改了issue 的描述
yuyuanfeng
yuyuanfeng成员
7月23日 评论:

PR 已完成:#71

实现摘要

  • Legacy API aclsparseCsr2coo,INT32 索引类型,支持 CSR→COO / CSC→COO
  • Host 9 项参数校验(含 nnz/m≤INT32_MAX);Kernel 边界校验与防御性 return
  • 向量化预计算 per-row nnz/start(Subs+Sub)+ Double Buffer
  • 67 测试全 PASS(53 参数化 + 14 异常/边界),位精确

参数校验补充
在原 V1-V7 基础上新增:

  • V8: nnz > INT32_MAX → INVALID_VALUE
  • V9: m > INT32_MAX → INVALID_VALUE

性能(Ascend950PR)

  • 超大行场景吞吐 210M nnz/s
  • 主瓶颈为标量 GetValue 循环(SCALAR BOUND 82-90%),属架构限制(每行输出长度不规则,无法完全向量化)

编译运行
bash build.sh --ops=csr2coo --soc=ascend950 --run

likedislike
yuyuanfengyuyuanfeng成员
7月27日 修改标题为 “Feat: 新增面向Ascend950的aclsparseXcsr2coo接口”,原标题为“Feat: 新增面向Ascend950的aclsparseCsr2coo接口”
yuyuanfengyuyuanfeng成员
7月27日 修改了issue 的描述
yuyuanfengyuyuanfeng成员
7月27日 修改了issue 的描述
yuyuanfengyuyuanfeng成员
7月27日 修改标题为 “[Requirement|需求建议]: 新增面向Ascend950的aclsparseXcsr2coo接口”,原标题为“Feat: 新增面向Ascend950的aclsparseXcsr2coo接口”
yuyuanfengyuyuanfeng成员
7月27日 修改标题为 “[Requirement|需求建议]: 新增aclsparseXcsr2coo接口”,原标题为“[Requirement|需求建议]: 新增面向Ascend950的aclsparseXcsr2coo接口”
yuyuanfengyuyuanfeng成员
8月4日 issue状态由 进行中 改变为 已完成
yuyuanfengyuyuanfeng成员
8月4日 关闭了 issue
CANN-robotCANN-robot成员
8月4日 添加了label:resolved