| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Feat: 新增算子README开发模板与编译运行样例文档 Co-authored-by: zhanghua145<zhanghua25@mails.ucas.ac.cn> # message auto-generated for no-merge-commit merge: !52 merge feat/develop-docs-template into master Feat: 新增算子README开发模板与编译运行样例文档 Created-by: zhanghua145 Commit-by: zhanghua145 Merged-by: cann-robot Description: ## 变更说明 从 ops-blas 仓迁移算子 README 开发模板和编译运行样例文档到 ops-sparse 仓,并适配 sparse 仓的接口类型和规范。 关联 Issue: #91 ### 新增文件 - docs/zh/develop/readme_develop_guide.md:算子 README 模板 - docs/zh/develop/compile_and_run_example.md:编译与运行样例 ### 修改文件 - src/csrgeam2/README.md:修复编译运行样例链接路径 - src/nnz/README.md:修复编译运行样例链接路径 ### 模板适配要点 | 适配项 | blas 模板 | sparse 模板 | |--------|----------|------------| | 头文件 | cann_ops_blas.h | cann_ops_sparse.h | | 句柄类型 | aclblasHandle_t | aclsparseHandle_t | | 状态码 | ACLBLAS_STATUS_SUCCESS | ACL_SPARSE_STATUS_SUCCESS | | SOC 支持 | ascend910b, ascend910_93, ascend950 | 额外支持 ascend310p | | 安装产物 | cann_ops_blas.h, libops_blas.so | cann_ops_sparse.h, libops_sparse.so | | 示例接口 | aclblasSscal | aclsparseSnnz | ### sparse 专属新增 1. MatDescr 创建与销毁占位 2. PointerMode 设置占位 3. 多步调用流程说明(bufferSize -> Nnz -> Compute) 4. 支持的稀疏格式章节占位(CSR/COO/CSC) 5. 预期输出占位 6. cmake 最低版本对齐 sparse 仓要求(3.16) ### 与 sparse 仓规范对齐 - 返回值统一为 ACL_SPARSE_STATUS_SUCCESS - 交叉引用链接使用短路径 compile_and_run_example.md - 满足 sparse 仓 README 审查清单 9 项检查要求 ### 样例成功运行展示  See merge request: cann/ops-sparse!52 | 6 天前 | |
fix: 修复文档与仓库结构不一致问题,补充贡献指南 Co-authored-by: rueenov11<zhuruyi@huawei.com> # message auto-generated for no-merge-commit merge: !16 merge fix_docs into master fix: 修复文档与仓库结构不一致问题,补充贡献指南 Created-by: rueenov11 Commit-by: rueenov11 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 修复 README 目录结构与实际仓库不一致 - 移除内联的错误目录树( example 、 tests ),替换为指向独立目录结构文档的链接 - 新增说明:当前算子调用样例位于 test/ 目录下, examples/ 为预留目录 - 新建 docs/zh/install/dir_structure.md ,准确描述仓库真实目录层级 2. 修复 QuickStart 中路径描述错误 - sparse/src/spmv_kernel.cpp → src/spmv/spmv_kernel.cpp (共 2 处) 3. README 增加版本兼容说明 - 新增"🛠️环境准备"和"⬇️源码下载"章节,在 README 级别明确 CANN 版本配套关系 - 注明"本项目仅支持CANN 8.5.0及后续版本",并链接至 release 仓库 4. Python 依赖补充版本范围 - requirements.txt 中各包名补充经过验证的版本范围(如 numpy>=1.21,<2 、 protobuf>=3.20,<6 ) 5. 接口文档补充能力边界备注 - docs/zh/api_list.md 末尾新增"备注"章节,说明接口能力以当前实现版本为准,详细限制参考各算子 README 及头文件注释 6. 补充贡献指南 - 新建 CONTRIBUTING.md ,包含新算子贡献、Bug修复、算子优化、文档纠错等贡献场景的完整流程 - 交付件目录结构适配 ops-sparse 仓实际结构( src/${operator}/ 、 test/${operator}/ ) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-sparse/issues/7 https://gitcode.com/cann/ops-sparse/issues/10 https://gitcode.com/cann/ops-sparse/issues/14 https://gitcode.com/cann/ops-sparse/issues/15 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!16 | 1 个月前 | |
Refactor: 仓库目录结构重组,对齐 ops-blas 组织形式 Co-authored-by: zhanghua145<zhanghua25@mails.ucas.ac.cn> # message auto-generated for no-merge-commit merge: !54 merge refactor/dir-restructure into master Refactor: 仓库目录结构重组,对齐 ops-blas 组织形式 Created-by: zhanghua145 Commit-by: zhanghua145 Merged-by: cann-robot Description: ## 变更说明 对齐 ops-blas 仓库的目录组织形式,重组 ops-sparse 目录结构,为后续 sparseLt 功能扩展做好结构准备。 关联 Issue: #95 ### 目录变更 - src/ -> sparse/(git rename,保留完整 git history) - 新增 sparseLt/ 目录 + CMakeLists.txt(占位框架,对齐 blasLt/) - 删除 include/cann_ops_sparse_common.h(内容合并到 cann_ops_sparse.h + aclsparse_host_utils.h) - 新增 include/cann_ops_sparseLt.h(纯 C 框架,include cann_ops_sparse.h,预留 aclsparseLt API) ### 头文件变更 - cann_ops_sparse.h:保持纯 C,无新增 C++ 内容 - aclsparse_host_utils.h:新增 #include "cann_ops_sparse.h" 和 CHECK_ACL 宏(原 common.h 内容) - 源码中 #include "cann_ops_sparse_common.h" 全部替换为 #include "aclsparse_host_utils.h" ### 构建系统变更 - 根 CMakeLists.txt:add_subdirectory(sparse),新增 sparseLt 构建逻辑,install 规则更新 - cmake/test.cmake、test/*/CMakeLists.txt:src/ -> sparse/ 路径引用 - sparse/CMakeLists.txt:日志前缀 [src] -> [sparse] ### 验证 - ascend950 编译通过 - csrgeam2(64 cases)、nnz(29 cases)、spmm(7 cases)、gtsv_interleaved_batch全部测试通过,spmv并非失败,而是不支持arch35  - spmv 仅 arch22 实现,arch35 无源码属预期跳过 See merge request: cann/ops-sparse!54 | 6 天前 | |
Feat: 新增稀疏向量描述符与稀疏矩阵访问器接口 Co-authored-by: Zitao Wang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !50 merge add_sp_helper_api into master Feat: 新增稀疏向量描述符与稀疏矩阵访问器接口 Created-by: wangzitao_leo Commit-by: Zitao Wang Merged-by: cann-robot Description: ## 描述 本次 PR 新增 14 个稀疏向量描述符与稀疏矩阵访问器接口(含 const 变体共 18 个函数),补齐 ops-sparse 描述符管理 API 的覆盖度。 ### 新增接口 **稀疏向量描述符(9个接口,13 个函数):** - aclsparseCreateSpVec / aclsparseCreateConstSpVec — 创建稀疏向量描述符 - aclsparseDestroySpVec — 销毁稀疏向量描述符(接受 const 句柄) - aclsparseSpVecGet / aclsparseConstSpVecGet — 获取全部字段(size、nnz、indices、values、idxType、idxBase、valueType) - aclsparseSpVecGetIndexBase — 获取索引基值(接受 const 句柄) - aclsparseSpVecGetValues / aclsparseConstSpVecGetValues — 获取 values 指针 - aclsparseSpVecSetValues — 设置 values 指针 **稀疏矩阵访问器(5个接口,5 个函数):** - aclsparseSpMatGetFormat — 获取存储格式(接受 const 句柄) - aclsparseSpMatGetValues / aclsparseConstSpMatGetValues — 获取 values 指针 - aclsparseSpMatSetValues — 设置 values 指针 - aclsparseSpMatGetSize — 获取行数、列数、非零元素个数(接受 const 句柄) ### 新增内部结构体 - aclsparseSpVecDescr:包含 size、nnz、indices、values、idxType、idxBase、valueType 7 个字段,使用默认成员初始化器 ### 设计要点 - const-safe 设计:Destroy/GetIndexBase/GetFormat/GetSize 接受 const 句柄,GetValues/Get 提供 const 和非 const 两个版本,SetValues 仅接受非 const 句柄 - CreateConstSpVec 委托 CreateSpVec + const_cast,与现有 CreateConstDnVec 模式一致 - 复用已有 aclsparseSpMatDescr 结构体,SpMat 访问器无需修改结构体 - 纯主机端逻辑,不涉及 NPU kernel ## 关联的Issue [#89](https://gitcode.com/cann/ops-sparse/issues/89) ## 测试 本地完成单元测试,覆盖 32 个测试用例: **SpVec 测试(19个):** - CreateSpVec:正常创建、null 描述符、invalid size/nnz、nnz=0 - CreateConstSpVec:const 创建 + 字段验证 - DestroySpVec:正常销毁、null 销毁 - SpVecGet:全字段获取、null 输出参数、null 描述符 - ConstSpVecGet:const 版本字段获取 - SpVecGetIndexBase:BASE_ZERO / BASE_ONE、null 描述符 - SpVecGetValues / ConstSpVecGetValues:指针验证、null 描述符 - SpVecSetValues:设置后 Get 验证、null 描述符 - RoundTrip:Create → Get → SetValues → Get → Destroy 完整流程 **SpMat 测试(13个):** - GetFormat:CSR 格式验证、null 描述符 - GetValues / ConstGetValues:指针验证、null 描述符 - SetValues:设置后 Get 验证、null 描述符 - GetSize:行/列/nnz 验证、null 描述符、null 输出参数、部分 null 输出 - RoundTrip:CreateCsr → GetFormat → GetValues → SetValues → GetValues → Destroy 完整流程 测试结果:32 项测试全部通过。测试为纯主机端逻辑,不依赖 NPU 硬件。 ## 文档更新 - docs/zh/api_list.md:接口列表新增 10 行,接口详情新增 10 个小节(SpVec Create/Destroy/Get/GetIndexBase/GetValues/SetValues + SpMat GetFormat/GetValues/SetValues/GetSize) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!50 | 7 天前 |