尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CANN社区任务-SpSM算子开发

CANN社区任务-SpSM算子开发
📅 发布时间:2026/7/5 18:27:33

7月社区任务-SpSM算子开发任务书

【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions

基础信息

  • 技术标签:算子开发
  • 适配硬件:Ascend 950PR
  • 开源仓地址:https://gitcode.com/cann/ops-sparse
  • CANN 版本:算子开源仓指定版本
  • 开发语言:Ascend C + C++(aclsparse 接口)
  • 对标参考:cuSPARSE cusparseSpSM §6.6.12

任务概述

参考 cuSPARSESpSM(Sparse triangular Solve with Multiple right-hand sides),在昇腾 NPU 上实现稀疏三角求解:

$$ op(A) \cdot X = \alpha \cdot op(B) \quad\Rightarrow\quad X = \alpha \cdot op(A)^{-1} op(B) $$

或等价形式 $C = \alpha \cdot op(A)^{-1} op(B)$(cuSPARSE 以稠密matC存解)。

各参数含义说明:

  1. $A$:稀疏三角系数矩阵,仅支持上三角/下三角格式,存储格式为CSR;
  2. $op(\cdot)$:矩阵操作符,可选不转置op(A)=A或转置op(A)=A^T;
  3. $X$:方程组求解输出,稠密矩阵,与等价式中 $C$ 完全等同;
  4. $B$:多右端稠密输入矩阵,多列代表多组并行方程组;
  5. $\alpha$:全局浮点缩放标量,用于整体缩放计算结果;
  6. $A^{-1}$:稀疏三角矩阵的逆,算子内部通过三角回代间接求解,不生成显式逆矩阵。

验收口径:

  • C++:aclsparseSpSM*与 cuSPARSE 调用流程对齐(bufferSize预备 →analysis→solve;updateMatrix为可选数值更新路径)。

典型场景

图预条件、三角分解回代(ILU/IC 求解)、稀疏三角系统多 RHS 求解。


核心开发要求及验收标准

1. C++ 层接口(必选,对齐 cuSPARSE)

cuSPARSE SpSM 核心流程为bufferSize预备 →analysis→solve三步骤(另含描述符createDescr/destroyDescr与可选updateMatrix),须完整实现:

aclsparseStatus_t aclsparseSpSMCreateDescr(aclsparseSpSMDescr_t *spsmDescr); aclsparseStatus_t aclsparseSpSMDestroyDescr(aclsparseSpSMDescr_t spsmDescr); aclsparseStatus_t aclsparseSpSMGetBufferSize( aclsparseHandle_t handle, aclsparseOperation_t opA, aclsparseOperation_t opB, const void *alpha, aclsparseConstSpMatDescr_t matA, aclsparseConstDnMatDescr_t matB, aclsparseDnMatDescr_t matC, aclDataType computeType, aclsparseSpSMAlg_t alg, aclsparseSpSMDescr_t spsmDescr, size_t *bufferSize); aclsparseStatus_t aclsparseSpSMAnalysis( aclsparseHandle_t handle, aclsparseOperation_t opA, aclsparseOperation_t opB, const void *alpha, aclsparseConstSpMatDescr_t matA, aclsparseConstDnMatDescr_t matB, aclsparseDnMatDescr_t matC, aclDataType computeType, aclsparseSpSMAlg_t alg, aclsparseSpSMDescr_t spsmDescr, void *externalBuffer); aclsparseStatus_t aclsparseSpSMSolve( aclsparseHandle_t handle, aclsparseOperation_t opA, aclsparseOperation_t opB, const void *alpha, aclsparseConstSpMatDescr_t matA, aclsparseConstDnMatDescr_t matB, aclsparseDnMatDescr_t matC, aclDataType computeType, aclsparseSpSMAlg_t alg, aclsparseSpSMDescr_t spsmDescr); aclsparseStatus_t aclsparseSpSMUpdateMatrix( aclsparseHandle_t handle, aclsparseSpSMDescr_t spsmDescr, void *newValues, aclsparseSpSMUpdate_t updatePart);

格式:仅支持CSR(与 cuSPARSE 对齐)。

调用语义(与 cuSPARSE §6.6.12 一致):

  • bufferSize/analysis:matB、matC的values 指针可为 NULL(仅用于 workspace 估算与符号分析);描述符本身不可为 NULL;
  • solve:matB、matC须指向有效 values;
  • in-place:matB与matC可使用同一 values 设备指针(其余稠密描述符字段如order可独立设置)。

工程目录:

ops-sparse/src/spsm/

2. 数据类型支持

对标范围:对齐 cuSPARSE cusparseSpSM §6.6.12 官方 dtype 表。SpSM 为同精度:matAvalues、matB、matC、computeType四者 dtype 相同(cuSPARSE 文档无 Mixed-precision 小节)。

列含义:

  • A:稀疏三角系数矩阵matA的 values;
  • B:稠密右端项matB(多 RHS);
  • C:稠密解matC;
  • computeType:实际计算精度。

稀疏格式与索引:

项目本任务
稀疏格式CSR
索引int32(INDEX_32I)
fill / diagLOWER/UPPER、UNIT/NON_UNIT(映射 cuSPARSE fill/diag 属性)

SpSM 为全新算子(ops-sparse 仓当前无src/spsm/),aclsparseSpSM*+ Kernel 均须从零交付。

2.1 dtype 组合
A / B / C / computeTypecuSPARSE 枚举状态
fp32CUDA_R_32F待实现

alpha标量 dtype 与computeType一致(为float32)。

验收:须覆盖 ACLaclsparseSpSM*(bufferSize / analysis / solve)+updateMatrix全链路。

3. 算子约束

  1. analysis 与 solve 间不得修改 matA 结构、externalBuffer、spsmDescr(与 cuSPARSE 一致);
  2. updateMatrix仅更新数值、结构不变时可跳过 re-analysis(对标 cuSPARSE);
  3. solve 阶段 bit-wise 确定性(cuSPARSE 保证);
  4. 多 RHS:matB/matC为[m, nrhs]稠密矩阵;
  5. in-place:matB与matC可共用同一 values 指针(cuSPARSE 支持);
  6. bufferSize/analysis:matB/matC的 values 可为 NULL;solve须提供有效 values;描述符不可为 NULL。

4. 功能验收用例

编号场景参考
TC-01下三角 unit_diag=FalsecuSPARSE CSR sample
TC-02上三角 + transpose自行构造
TC-03nrhs=1 与 nrhs>1自行构造
TC-04updateMatrix 后 re-solvecuSPARSE
TC-05matB/matC in-place(同一 values 指针)cuSPARSE
TC-06bufferSize/analysis 阶段 matB/matC values 为 NULLcuSPARSE

5. 性能要求

对标cuSPARSE SpSM(A100),NPU 性能须达到 GPU 参考实现的1.0 倍及以上(即 ≥1.0×)。

固定参考用例(必测 3 组;在NVIDIA A100上实测 cuSPARSE 耗时填入「GPU 参考耗时」,取多次运行avg,analysis 一次性开销可单独报告,作为 NPU 验收基准):

编号场景mnnznrhsdtypeGPU 参考耗时 (μs)达标要求
01下三角多 RHS 基础 solve25627258fp322203NPU ≥ 1.0×
02updateMatrix 后 re-solve12813224fp322291NPU ≥ 1.0×
03analysis 阶段 NULL values12813274fp322014NPU ≥ 1.0×

泛化覆盖范围(另抽 200 组用例;由下列维度组合抽样或网格扫描生成,须附完整用例列表;solve 阶段性能达标 ≥1.0×):

维度覆盖范围
矩阵规模m:10²~10⁵;nnz与m成比例(平均度约 5~50)
多 RHSnrhs:1、8、32、128
三角属性下三角 / 上三角;unit_diagTrue / False;transTrue / False 等组合须纳入 200 组抽样
稀疏结构随机三角 CSR
更新路径updateMatrix后 re-solve 至少 5 组(数值变、结构不变)
in-place / NULL valuesmatB/matC 共用 values 至少 5 组;bufferSize/analysis 阶段 NULL values 至少 5 组
边界m=1;nrhs=1;近奇异对角(条件数偏大样本 5 组,仅功能验收)

6. 精度要求

《生态算子开源精度标准》+ AscendOpTest + ATK 双标杆L2(2 / 1.2 / 1.2)。

真值:以cuSPARSE CPU 标杆或双精度参考为准。

7. 接口分层

aclsparseSpSM*(必选) → Ascend C Kernel(必选)

8. 验收交付件

1, 自测用例、测试结果报告、测试步骤指导文档

2, 算子代码的私仓邀请链接、代码仓路径、分支、算子目录

9. PR 合入路径

https://gitcode.com/cann/ops-sparse/tree/master/src/spsm

环境获取

  1. 开源仓提供100小时免费时长,请不使用时及时关闭,用时耗尽前请务必保存相关资料,建议及时提交备份。
  2. 使用 hidevlab notebook 算力。
  3. 如需额外环境资源,请联系昇腾小助手。

特别注意事项

  1. SpSManalysis 缓存是性能关键,须在文档中说明复用条件;
  2. 新增接口需对齐 cuSPARSE 风格;
  3. 三角性、对角类型须在描述符层显式设置(映射 cuSPARSE fill/diag 属性);
  4. 设计文档按社区模板;
  5. README 含aclsparse C++调用示例;
  6. 自验证报告含 aclsparse 测试、AscendOpTest/ATK 日志。

【免费下载链接】cann-ops-competitions本仓库用于 CANN 开源社区各类竞赛、开源课题、社区任务等课题发布、开发者作品提交和展示。项目地址: https://gitcode.com/cann/cann-ops-competitions

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

  • Axure中文界面终极指南:3分钟完成完整汉化安装
  • Weather Extension for Andromeda
  • activerecord-multi-tenant 性能优化:10 个提升多租户查询效率的终极技巧 [特殊字符]

最新新闻

  • 如何用markitdown实现智能图像处理:OCR识别与AI描述生成完全指南
  • httpcache性能优化:内存管理和缓存淘汰策略的终极指南
  • activerecord-multi-tenant 社区与支持:如何参与贡献和获取帮助
  • 终极指南:如何使用MobaXterm中文版快速管理远程服务器
  • GESP学习相关书籍(2026.07)
  • 国家中小学智慧教育平台电子课本下载工具:3步轻松获取离线教材PDF

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号