已关闭
[Requirement|需求建议]: 新增 aclsparseXcoo2csr 算子 #114
yuyuanfeng创建于  7月25日关闭于  8月4日
yuyuanfeng
yuyuanfeng成员
7月25日 创建

背景(背景信息)

在稀疏矩阵计算中,COO(Coordinate)和 CSR(Compressed Sparse Row)是两种常用的稀疏矩阵存储格式。COO 转 CSR 行指针是格式转换的基础操作,上层稀疏计算框架(如稀疏矩阵乘法、三角求解等)在准备输入数据时普遍依赖该接口。当前仓库缺少该接口实现,需补充。

Origin(信息来源)

cann 开发者

价值/作用(Benefit / Necessity)

提供 COO 到 CSR 的格式转换能力,完善稀疏算子库的格式转换接口体系。该接口为上层应用(如科学计算、图计算、机器学习)处理稀疏矩阵数据提供基础支撑,是构建完整稀疏线性代数库的必要组件。

设计(Design)

基于 Ascend950(DAV_3510)架构的 SIMT 编程模型实现。算法分两阶段:

  1. 行计数阶段:遍历已排序的 COO 行索引数组,利用游程编码(RLE)局部计数策略,将相同行索引的连续出现合并为单次原子加操作,减少原子竞争。

  2. 前缀和阶段:当矩阵行数 m > 1024 时自动启用 3 阶段多核并行前缀和(局部前缀和 → 块间归约 → 偏移修正),将 O(m) 串行操作并行化到多核;m <= 1024 且 nnz <= 1024 时使用融合 kernel 单 block 完成全部计算。

支持 0-based/1-based 索引基址,完整处理 m=0、nnz=0 等边界场景。接口签名采用扁平直传参数模式(Legacy API 风格),仅操作 int32 索引数组,无浮点数据参与。

likedislike
yuyuanfengyuyuanfeng成员
7月25日 关联了pull request:feat: 新增 aclsparsecoo2csr 算子(COO 转 CSR 行指针,arch35/SIMT)
yuyuanfengyuyuanfeng成员
7月27日 修改标题为 “[Requirement|需求建议]: 新增 aclsparseXcoo2csr 算子(COO 转 CSR 行指针)”,原标题为“[Requirement|需求建议]: 新增 aclsparsecoo2csr 算子(COO 转 CSR 行指针)”
yuyuanfengyuyuanfeng成员
7月27日 修改标题为 “[Requirement|需求建议]: 新增 aclsparseXcoo2csr 算子”,原标题为“[Requirement|需求建议]: 新增 aclsparseXcoo2csr 算子(COO 转 CSR 行指针)”
wangzitao
wangzitao成员
8月3日 评论:

您好,感谢反馈,问题确认中。

likedislike
yuyuanfengyuyuanfeng成员
8月4日 issue状态由 进行中 改变为 已完成
yuyuanfengyuyuanfeng成员
8月4日 关闭了 issue
CANN-robotCANN-robot成员
8月4日 添加了label:resolved
2501_918391292501_91839129
21 天前 关联了pull request:feat(spmm/arch22): add torch.sparse.addmm NPU adapter (fp32 baseline path)