| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(prune): 新增 aclsparseLtSpMMAPrune 2:4 结构化稀疏剪枝算子 Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !117 merge feat/prune-standalone into master feat(prune): 新增 aclsparseLtSpMMAPrune 2:4 结构化稀疏剪枝算子 Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 新增 aclsparseLtSpMMAPrune 算子,对标 NVIDIA cuSPARSELt 的 cusparseLtSpMMAPrune,对稠密矩阵执行 2:4 结构化稀疏剪枝,输出与输入同型的稠密存储矩阵(被置零元素以 0 表示)。该算子是结构化稀疏矩阵乘法的前置步骤。 **核心特性:** - 剪枝对象由 Matmul 描述符中 matA/matB 的 sparsity 字段决定:matA 为 ACL_SPARSE_LT_SPARSITY_50_PERCENT 时剪枝矩阵 A(A-sparse),matB 为 ACL_SPARSE_LT_SPARSITY_50_PERCENT 时剪枝矩阵 B(B-sparse) - 支持两种剪枝算法:STRIP(逐分组剪枝)与 TILE(逐 tile 剪枝,4x4 tile 内行/列联合约束,90 种有效配置) - 支持 4 种数据类型:FP32 / FP16 / BF16 / INT8 - 支持转置路径:transA/transB 通过切换剪枝方向实现,转置写回已向量化(TransDataTo5HD) - 目标平台:Ascend 950PR / 950DT(arch35 / DAV_3510) **新增文件:** - sparseLt/prune/arch35/prune_host.cpp:Host 侧 Tiling 计算 + kernel launch(tiling by value,异步执行,无额外 device 存储) - sparseLt/prune/arch35/prune_kernel.cpp:Kernel 侧实现,STRIP/TILE 双算法 dispatch,沿行向量化(Cast+Abs+Mul keepMask)+ 沿列标量回退 - sparseLt/prune/arch35/prune_kernel.h:Kernel launcher 声明 - sparseLt/prune/README.md:算子文档 - sparseLt/shared/aclsparselt_internal.h:裁剪版共享内部头(TilingData 结构 + md_* helper + 常量宏) - sparseLt/shared/aclsparselt_host.cpp:共享平台查询函数(get_cube_core_num / get_ub_size) - test/prune/:完整测试工程(golden / param / npu_wrapper / test.cpp / csv) **接口签名:** c aclsparseStatus_t aclsparseLtSpMMAPrune( aclsparseLtConstHandle_t handle, aclsparseLtConstMatmulDescriptor_t* matmulDescr, const void* d_in, void* d_out, aclsparseLtPruneAlg_t pruneAlg, aclrtStream stream); ## 关联的Issue ## 测试 - GTest + CSV 驱动的精度 ST,覆盖 L0/L1/L2 分级 - prune 算子共 65 个测试用例:57 功能精度 + 7 异常路径 + 1 结构属性验证 - 覆盖 4 dtype × STRIP/TILE × 转置 × A-sparse/B-sparse × k奇数 × 非对齐shape - CPU golden 参考实现独立于 kernel(SpMMAPruneGolden) - 全量回归通过(ascend950)  ## 文档更新 - 新增 sparseLt/prune/README.md:算子使用文档 - 更新 docs/zh/api_list.md:追加 prune API 接口文档 - 更新 include/cann_ops_sparseLt.h:追加 SpMMAPrune 声明 + Const 类型定义 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!117 | 21 天前 | |
update readme and create | 7 个月前 | |
更新src/test多架构并存方式 Co-authored-by: rueenov11<zhuruyi@huawei.com> # message auto-generated for no-merge-commit merge: !21 merge fix_docs into master 更新src/test多架构并存方式 Created-by: rueenov11 Commit-by: rueenov11 Merged-by: cann-robot Description: ## 描述 本 PR 完善 ops-sparse 仓的多架构目录规范与测试构建机制,并同步更新相关文档,主要变更如下: 1. **构建配置**:在根 CMakeLists.txt 中补充 SOC → 架构目录映射(910B / 910_93 → arch22,950 → arch35,310P → arch20),并将 arch22 纳入 ARCH_SPECIFIC_DIRS。 2. **测试框架**:新增 cmake/test.cmake,提供 ops_sparse_add_test(),按 SOC_ARCH_DIRS 自动选择 test/${operator}/${arch_dir}/${operator}_test.cpp 编译,无匹配则跳过。 3. **测试目录调整**:将测试样例迁移至 arch 子目录: - test/spmv/arch22/spmv_test.cpp(910B) - test/spmm/arch35/spmm_test.cpp(950) 4. **文档更新**: - CONTRIBUTING.md:对齐贡献流程章节结构,补充多架构并存规则与 spmm 示例。 - docs/zh/install/dir_structure.md:更新目录树框架,反映 ${arch_dir}/ 组织方式。 - docs/QUICKSTART.md:适配新版 Spmv 实现路径与调试样例。 - README.md、test/spmv/README.md:更新样例路径引用。 ## 关联的Issue https://gitcode.com/cann/ops-sparse/issues/21 ## 测试  测试通过。 ## 文档更新 - 更新了 CONTRIBUTING.md - 更新了 docs/zh/install/dir_structure.md - 更新了 docs/QUICKSTART.md - 更新了 README.md - 更新了 test/spmv/README.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:多架构目录规范与测试构建机制完善(CMake + test 目录结构调整) See merge request: cann/ops-sparse!21 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 21 天前 | ||
| 7 个月前 | ||
| 2 个月前 |