| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(arch35): 新增 aclsparseXcoosort COO 排序算子 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !62 merge feat/aclsparse-xcoosort into master feat(arch35): 新增 aclsparseXcoosort COO 排序算子 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 新增面向 Ascend950(arch35 / dav-3510)的 aclsparseXcoosort COO 坐标稳定排序能力。 - 新增 workspace 查询、ByRow 和 ByColumn 三个接口; - 原地重排 COO row/col,并输出排列数组 P; - 采用两趟 LSB RADIX_SORT 实现双键稳定排序; - nnz > 2048 时按 UB 容量生成多核 run,并通过 GM ping-pong、merge-path 完成稳定归并; - 适配主线目录重组,将实现集成到 sparse/coosort; ## 关联的Issue 关联 Issue:https://gitcode.com/cann/ops-sparse/issues/102 ## 测试 已通过: bash build.sh --ops=coosort --soc=ascend950 ops_sparseLt、ops_sparse、coosort_test 均构建成功。  readme示例代码执行成功  ## 文档更新 新增 coosort README,包含接口说明、约束、支持平台和调用示例;更新公共头文件接口声明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!62 | 3 小时前 | |
feat: add aclsparseSgtsvInterleavedBatch operator for Ascend950 (arch35) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !46 merge aclsparseSgtsvInterleavedBatch into master feat: add aclsparseSgtsvInterleavedBatch operator for Ascend950 (arch35) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 Ascend 950PR / Ascend 950DT(arch35)新增 aclsparseSgtsvInterleavedBatch 算子实现,支持批量求解多个独立的三对角线性方程组 **A^(k) · x^(k) = b^(k)**。 改动原因: - ops-sparse 库此前缺少三对角线性方程组直接求解器,无法覆盖科学计算 / PDE 离散化 / 隐式时间积分等场景的高频需求 - 需对齐 NVIDIA cuSPARSE cusparseSgtsvInterleavedBatch 的接口语义,补齐 CANN Ascend 950 系列稀疏计算能力 改动方法: - 新增对外接口 aclsparseSgtsvInterleavedBatch(主接口)与 aclsparseSgtsvInterleavedBatch_bufferSizeExt(workspace 查询),定义于 include/cann_ops_sparse.h - 基于 SIMT 模型实现 kernel(src/gtsv_interleaved_batch/arch35/):每 block 64 线程,每线程独立处理 1 个 batch;线程局部状态保持在寄存器中,跨行依赖不经过 workspace GM 读写 - 采用 Thomas 算法(algo=0),workspace 仅存 d'[i] 供 backward 阶段使用,b'[i] 原位覆写到 x - 重构测试框架(新增 test/frame/ 公共组件:csv_loader、test_common、test_main),适配 CSV 数据驱动的算子测试 - 新增完整算子文档 src/gtsv_interleaved_batch/README.md ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> - #88 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 新增 test/gtsv_interleaved_batch/ 测试用例,基于 CSV 数据驱动(gtsv_interleaved_batch_test.csv),覆盖 m=1 / 多 batch / 边界值等场景 - 提供 golden 参考实现(gtsv_interleaved_batch_golden.h)对比 NPU 计算结果 - 在 Ascend 950 上验证正确性(详见 README 预期输出样例)  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 新增 src/gtsv_interleaved_batch/README.md:包含算子概述、接口函数原型、参数说明、约束条件、调用示例及预期输出 - 更新 include/cann_ops_sparse.h:新增 aclsparseSgtsvInterleavedBatch 与 _bufferSizeExt 接口声明及 Doxygen 注释 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!46 | 8 天前 | |
Feat: 新增 aclsparseSgpsvInterleavedBatch 五对角批量求解接口(Ascend950/arch35) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge aclsparseSgpsvInterleavedBatch into master Feat: 新增 aclsparseSgpsvInterleavedBatch 五对角批量求解接口(Ascend950/arch35) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 新增 aclsparseSgpsvInterleavedBatch 接口,实现面向 Ascend950(arch35)的五对角批次线性方程组求解。 **算子功能**:批量求解五对角线性方程组 A^(k) · x^(k) = b^(k),其中 A^(k) 为 m×m 五对角矩阵,由 5 条对角线(ds, dl, d, du, dw)定义,数据布局为 row-major interleaved。 **目标芯片**:Ascend950(A5 架构,arch35) **编程模型**:SIMT — 每线程处理 1 个 batch 的完整 m 行扫描,batch 间无数据依赖,通过 grid-stride 支持 batchCount 超过硬件核心数的场景。 **算法**:QR 分解 **接口列表**: - aclsparseSgpsvInterleavedBatch — 求解接口(FP32) - aclsparseSgpsvInterleavedBatch_bufferSizeExt — 工作区大小查询接口 ## 关联 Issue: <!-- Issue 提交后补充链接,格式:[#N](https://gitcode.com/cann/ops-sparse/issues/N) --> https://gitcode.com/cann/ops-sparse/issues/96 ## 测试 **测试框架**:GTest + CSV 参数化 **测试用例**:共 54 条,全部通过 - 正向用例:35条(L0 12 条 + L1 24 条) - 异常用例:19 条(nullptr / 非法参数 / 对齐错误等)  ## 文档更新 - **新增** src/gpsv_interleaved_batch/README.md — 算子接口文档(概述、接口签名、参数说明、约束、调用示例、LU 算法附录) - **修改** include/cann_ops_sparse.h — 追加 gpsv section 接口声明 - **新增** test/frame/fill.h — 追加约 100 行 Pentadiag 矩阵生成器(五对角填充 helper) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!55 | 5 天前 | |
Feat: 新增 aclsparseSgpsvInterleavedBatch 五对角批量求解接口(Ascend950/arch35) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge aclsparseSgpsvInterleavedBatch into master Feat: 新增 aclsparseSgpsvInterleavedBatch 五对角批量求解接口(Ascend950/arch35) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 新增 aclsparseSgpsvInterleavedBatch 接口,实现面向 Ascend950(arch35)的五对角批次线性方程组求解。 **算子功能**:批量求解五对角线性方程组 A^(k) · x^(k) = b^(k),其中 A^(k) 为 m×m 五对角矩阵,由 5 条对角线(ds, dl, d, du, dw)定义,数据布局为 row-major interleaved。 **目标芯片**:Ascend950(A5 架构,arch35) **编程模型**:SIMT — 每线程处理 1 个 batch 的完整 m 行扫描,batch 间无数据依赖,通过 grid-stride 支持 batchCount 超过硬件核心数的场景。 **算法**:QR 分解 **接口列表**: - aclsparseSgpsvInterleavedBatch — 求解接口(FP32) - aclsparseSgpsvInterleavedBatch_bufferSizeExt — 工作区大小查询接口 ## 关联 Issue: <!-- Issue 提交后补充链接,格式:[#N](https://gitcode.com/cann/ops-sparse/issues/N) --> https://gitcode.com/cann/ops-sparse/issues/96 ## 测试 **测试框架**:GTest + CSV 参数化 **测试用例**:共 54 条,全部通过 - 正向用例:35条(L0 12 条 + L1 24 条) - 异常用例:19 条(nullptr / 非法参数 / 对齐错误等)  ## 文档更新 - **新增** src/gpsv_interleaved_batch/README.md — 算子接口文档(概述、接口签名、参数说明、约束、调用示例、LU 算法附录) - **修改** include/cann_ops_sparse.h — 追加 gpsv section 接口声明 - **新增** test/frame/fill.h — 追加约 100 行 Pentadiag 矩阵生成器(五对角填充 helper) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!55 | 5 天前 | |
feat(arch35): 新增面向arch35的aclsparseSgtsv2Nopivot Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !64 merge aclsparseSgtsv2Nopivot into master feat(arch35): 新增面向arch35的aclsparseSgtsv2Nopivot Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 新增 aclsparseSgtsv2Nopivot 接口,用于求解三对角线性方程组(无选主元),支持多个右端项(Multiple RHS)。采用 SIMT 编程模型的 Thomas 消去法。 ### 实现要点 - 每 thread 直接读写 GM,处理一个 RHS 列(前向消去 + 后向回代) - 多核沿 RHS 列数 n 维度分布(grid-stride),numBlocks 按 ceil(n / 32) 计算 - workspace 大小:m × n × sizeof(float),128 字节对齐 - 数据布局:dl/d/du 为 [m],B 为 column-major [ldb × n] ### 变更文件 | 文件 | 说明 | |------|------| | include/cann_ops_sparse.h | 新增 aclsparseSgtsv2Nopivot 和 _bufferSizeExt 接口声明 | | sparse/gtsv2_nopivot/arch35/*.cpp/*.h | 算子源码(host + kernel + tiling) | | sparse/gtsv2_nopivot/README.md | 算子 README(接口签名、参数说明、调用示例) | | test/gtsv2_nopivot/* | ST 测试(29 计算 + 15 异常用例) | ## 关联的Issue https://gitcode.com/cann/ops-sparse/issues/104 ## 测试 - 全部通过:44/44(29 计算 + 15 异常),GTest + CSV 参数化框架 - 计算用例覆盖:m=3~16384, n=1~100000, ldb=m 和 ldb>m, 多种对角线构造(对角占优/单位阵/常数对角/随机对角) - 异常用例覆盖:handle/nullptr/m/n/ldb 违规 15 种场景 - 验证方式:MERE_MARE 模式,FP64 Thomas 算法作为 golden 参考 ## 文档更新 - 新增 sparse/gtsv2_nopivot/README.md ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!64 | 3 小时前 | |
feat: 新增 aclsparseSgtsv2StridedBatch 算子(支持 Ascend 950) Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !57 merge aclsparseSgtsv2StridedBatch into master feat: 新增 aclsparseSgtsv2StridedBatch 算子(支持 Ascend 950) Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 新增 aclsparseSgtsv2StridedBatch 算子,批量求解三对角线性方程组 A^(i) y^(i) = x^(i)。 - **算法**:Cyclic Reduction 紧凑化变体,无选主元;两级架构——外层 GM 分块 CR + 内层 UB CR - **架构**:arch35 (Ascend950/DAV_3510),SIMD AIV only,KERNEL_TYPE_AIV_ONLY - **精度**:FP32(S 前缀),MERE_MARE 模式,MERE < 1.22e-4,MARE < 1.22e-3 - **支持范围**:m ∈ [3, 2^30] - 纯 UB 路径(m ≤ 2048):全数据驻留 UB,bufferSizeExt 返回 0 - 外层 GM 分块 CR 路径(2048 < m ≤ 2^30):外层在 GM 中按 tile 逐层归约到 2048 后,走内层 UB CR;workspace 按 batch 隔离(≈40×m_pad 字节/batch),经 bufferSizeExt 查询 - m 上限 2^30 为 int32 batchStride ≥ m_pad 契约的天花板(非算法上限),实际上限受 GM 内存约束 **接口**(Legacy API 体系,扁平参数): - aclsparseSgtsv2StridedBatch — 主接口,原地求解 y 覆盖 x - aclsparseSgtsv2StridedBatch_bufferSizeExt — workspace 大小查询 **关键设计**: - 多核按 batchCount 切分(base + remainder 均摊),单 batch 不跨核,核数通过 GetAivCoreCount() 动态获取 - Gather/Scatter Vector API,偏移表预计算跨 batch 复用 - 外层 GM 分块 CR:tile 化依赖分析(输出 j 仅依赖偶 2j/2j+2、奇 2j+1),单缓冲 staging + PipeBarrier 保证跨 pipe 同步 - 内外层衔接点恒为 2048(2^11):内层几何参数为常量(m_pad=2048、11 层归约),UB 占用与 m 规模解耦 ## 关联的Issue https://gitcode.com/cann/ops-sparse/issues/98 ## 测试 **测试通过率:95/95(100%)**(Ascend950PR 实机) | 类别 | 数量 | 说明 | |------|------|------| | L0 基础用例 | 11 | m=4/8/16/64/128/256,well_cond/diag_dom/const_diag | | L1 边界/多样性/批量压力用例 | 40 | 非 2 幂、batchCount=0、stride padding、mixed_sign/extreme_val/singular、batchCount=100~100000 | | L1 m 无上限外层 GM 分块 CR 用例 | 15 | m=4095/4097/5000/8192/65536/65537/1000003,含 m==m_pad 直读分支、多 batch 隔离、stride padding | | 异常用例 E1-E27 | 29 | 参数校验 + pBuffer 对齐 + bufferSizeExt 语义 + m>2^30 拒绝 | **Golden 参考**:Thomas 算法(TDMA)FP64 **精度偏差说明**:用例 L1_m1000003(mPad=2^20,20 层 CR 归约)MARE 判据为 15×2^-13(其余 94 条均为 10×2^-13,MERE 判据不变)。原因:无选主元 CR 在 20 层归约深度下的固有 FP32 噪声,3/1000003 个近零相消分量(|golden|≈1e-4)相对误差 1.6e-3、绝对误差仅 1~3 ulp(O(1) 解尺度);与 kernel 同公式同次序的 CPU FP32 CR 参考在相同索引复现相同 outlier(2/3 逐位一致),证明误差源自算法而非实现。 **性能(Gather/Scatter 优化,ACL Event)**: | m | batchCount | 耗时 (μs) | |---|-----------|-----------| | 64 | 10,000 | 35,900 | | 256 | 10,000 | 46,513 | | 1024 | 10,000 | 57,735 | 外层 GM 分块 CR 路径为带宽受限设计(≈32×m_pad floats GM 流量/batch),大 m 用例已在 ST 中完成功能验证。 ## 文档更新 - sparse/gtsv2_strided_batch/README.md:算子说明 + 纯 UB / 外层 GM 分块 CR 两种调用示例(示例已提取编译并在 Ascend950PR 实机运行验证,输出与文档一致) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 代码重构 - [ ] 文档更新 - [ ] 其他 ## 自查清单 - [x] 代码通过编译 - [x] 测试用例全部通过(95/95) - [x] 已添加/更新相关文档 - [x] 提交信息符合规范 See merge request: cann/ops-sparse!57 | 3 小时前 | |
Feat: 新增 aclsparseSgpsvInterleavedBatch 五对角批量求解接口(Ascend950/arch35) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge aclsparseSgpsvInterleavedBatch into master Feat: 新增 aclsparseSgpsvInterleavedBatch 五对角批量求解接口(Ascend950/arch35) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 新增 aclsparseSgpsvInterleavedBatch 接口,实现面向 Ascend950(arch35)的五对角批次线性方程组求解。 **算子功能**:批量求解五对角线性方程组 A^(k) · x^(k) = b^(k),其中 A^(k) 为 m×m 五对角矩阵,由 5 条对角线(ds, dl, d, du, dw)定义,数据布局为 row-major interleaved。 **目标芯片**:Ascend950(A5 架构,arch35) **编程模型**:SIMT — 每线程处理 1 个 batch 的完整 m 行扫描,batch 间无数据依赖,通过 grid-stride 支持 batchCount 超过硬件核心数的场景。 **算法**:QR 分解 **接口列表**: - aclsparseSgpsvInterleavedBatch — 求解接口(FP32) - aclsparseSgpsvInterleavedBatch_bufferSizeExt — 工作区大小查询接口 ## 关联 Issue: <!-- Issue 提交后补充链接,格式:[#N](https://gitcode.com/cann/ops-sparse/issues/N) --> https://gitcode.com/cann/ops-sparse/issues/96 ## 测试 **测试框架**:GTest + CSV 参数化 **测试用例**:共 54 条,全部通过 - 正向用例:35条(L0 12 条 + L1 24 条) - 异常用例:19 条(nullptr / 非法参数 / 对齐错误等)  ## 文档更新 - **新增** src/gpsv_interleaved_batch/README.md — 算子接口文档(概述、接口签名、参数说明、约束、调用示例、LU 算法附录) - **修改** include/cann_ops_sparse.h — 追加 gpsv section 接口声明 - **新增** test/frame/fill.h — 追加约 100 行 Pentadiag 矩阵生成器(五对角填充 helper) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!55 | 5 天前 | |
feat: add aclsparseSgtsvInterleavedBatch operator for Ascend950 (arch35) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !46 merge aclsparseSgtsvInterleavedBatch into master feat: add aclsparseSgtsvInterleavedBatch operator for Ascend950 (arch35) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 Ascend 950PR / Ascend 950DT(arch35)新增 aclsparseSgtsvInterleavedBatch 算子实现,支持批量求解多个独立的三对角线性方程组 **A^(k) · x^(k) = b^(k)**。 改动原因: - ops-sparse 库此前缺少三对角线性方程组直接求解器,无法覆盖科学计算 / PDE 离散化 / 隐式时间积分等场景的高频需求 - 需对齐 NVIDIA cuSPARSE cusparseSgtsvInterleavedBatch 的接口语义,补齐 CANN Ascend 950 系列稀疏计算能力 改动方法: - 新增对外接口 aclsparseSgtsvInterleavedBatch(主接口)与 aclsparseSgtsvInterleavedBatch_bufferSizeExt(workspace 查询),定义于 include/cann_ops_sparse.h - 基于 SIMT 模型实现 kernel(src/gtsv_interleaved_batch/arch35/):每 block 64 线程,每线程独立处理 1 个 batch;线程局部状态保持在寄存器中,跨行依赖不经过 workspace GM 读写 - 采用 Thomas 算法(algo=0),workspace 仅存 d'[i] 供 backward 阶段使用,b'[i] 原位覆写到 x - 重构测试框架(新增 test/frame/ 公共组件:csv_loader、test_common、test_main),适配 CSV 数据驱动的算子测试 - 新增完整算子文档 src/gtsv_interleaved_batch/README.md ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> - #88 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 新增 test/gtsv_interleaved_batch/ 测试用例,基于 CSV 数据驱动(gtsv_interleaved_batch_test.csv),覆盖 m=1 / 多 batch / 边界值等场景 - 提供 golden 参考实现(gtsv_interleaved_batch_golden.h)对比 NPU 计算结果 - 在 Ascend 950 上验证正确性(详见 README 预期输出样例)  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 新增 src/gtsv_interleaved_batch/README.md:包含算子概述、接口函数原型、参数说明、约束条件、调用示例及预期输出 - 更新 include/cann_ops_sparse.h:新增 aclsparseSgtsvInterleavedBatch 与 _bufferSizeExt 接口声明及 Doxygen 注释 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!46 | 8 天前 | |
fix: 修复 SpMV 值类型、SpMM INT8 溢出/dtype 分发及测试代码缺陷 (#55 #39 #40 #43 #44) Co-authored-by: rueenov11<zhuruyi@huawei.com> # message auto-generated for no-merge-commit merge: !36 merge fix/open-bugs into master fix: 修复 SpMV 值类型、SpMM INT8 溢出/dtype 分发及测试代码缺陷 (#55 #39 #40 #43 #44) Created-by: rueenov11 Commit-by: rueenov11 Merged-by: cann-robot Description: ## 描述 本 PR 修复 zhanghua 在 master 分支上遗留的 5 个缺陷,覆盖 SpMV host、SpMM kernel 及 SpMM 测试代码。改动均为缺陷修复,不改变对外 API 签名: - **#55 SpMV 矩阵值类型取错来源**:kernel 中 ValT 同时用于 csrValGm(矩阵非零值)与 xVecGm(稠密向量 x),但 host 侧原从 xInner->valueType 推导值类型,语义应取自稀疏矩阵。改为 valType = matInner->valueType,并新增矩阵值类型与向量 x 类型一致性校验,不一致时返回 ACL_SPARSE_STATUS_NOT_SUPPORTED。 - **#44 Fp32→Fp16 转换未做就近偶数舍入**:spmm_test.cpp 的 Fp32ToFp16Bits 对规格化与次规格化路径均为直接截断,与硬件 IEEE 754 round-to-nearest-even 不一致,可能引入伪精度误差。重写为 RNE(含半 ULP 判定、奇偶进位、进位自然溢出到指数域),并补充 NaN/Inf 语义保留。 - **#43 测试代码引用未定义宏/未声明变量**:spmm_test.cpp 使用了不存在的 CHECK_ACL_SPARSE 宏,且 sparseRet 未声明,导致编译失败。将三处(FP32/FP16/INT8 用例)统一还原为 fail-fast 的 CHECK_RET 写法并正确声明 sparseRet。 - **#39 INT8 输出 int32 溢出回绕**:SpMM kernel 的 INT8 输出路径中 alpha*acc + beta*C 全程 int32 运算,溢出时静默回绕。改为在 int64 中计算后饱和到 [INT32_MIN, INT32_MAX] 再写回。 - **#40 未知 dtype 静默按 int8 处理**:spmm_kernel_launch 的 else 分支对任意未知 dataType 直接启动 int8 kernel;SpmmDataTypeFromAcl 对未知类型静默返回 FP32。改为显式判断 SPMM_DTYPE_INT8,未知 dtype 打印错误并拒绝启动;新增 SPMM_DTYPE_INVALID 哨兵值使该错误分支可达(防御性纵深,host 侧 IsSupportedSpmmDtypeCombo 仍为第一道校验)。 ## 关联的Issue 关联 Issue #55 #44 #43 #39 #40 ## 测试 - 4 个改动文件通过静态检查,无 linter 报错。 - #44:将新的 Fp32ToFp16Bits 与编译器原生 __fp16(RNE)转换对拍,采样 4400 万个 fp32 值,0 处不一致。 - #55:核对 spmv_test 用例中矩阵与向量 x 使用同一 valDt,改动后计算行为等价、一致性校验恒通过,不影响既有用例结果。 - #39:确认现有测试数值范围(int8 值 ∈ [-5,5]、小 nnz)下不触发 int32 溢出,饱和逻辑仅在越界时生效。 - 建议在完整 CANN 环境执行 bash build.sh --ops=spmv,spmm --run 做最终回归确认。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-sparse!36 | 12 天前 | |
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 | 7 天前 | |
fix: build.sh --run 将不支持当前架构的算子标记为 skipped 而非 failed (#93) Co-authored-by: zhanghua145<zhanghua25@mails.ucas.ac.cn> # message auto-generated for no-merge-commit merge: !56 merge fix/skip-unsupported-ops into master fix: build.sh --run 将不支持当前架构的算子标记为 skipped 而非 failed (#93) Created-by: zhanghua145 Commit-by: zhanghua145 Merged-by: cann-robot Description: ## 修复内容 修复 #93 :build.sh --run 在测试二进制不存在时,将不支持当前架构的算子标记为 failed 而非 skipped,导致测试汇总误报失败。 ### 原因分析 - spmv 仅在 src/spmv/arch22/ 下有实现,ascend950(arch35)无对应源码 - CMake 构建阶段已正确跳过 spmv,但 build.sh 的 --run 逻辑在发现测试二进制不存在时直接判定为 failed ### 修复方案(参考 ops-blas 仓的 skip 机制) 1. cmake/test.cmake:跳过算子时写入 skipped_tests.list 2. test/CMakeLists.txt:初始化 skipped_tests.list 3. build.sh:读取 skip 清单,新增 SKIPPED_OPS 和 print_skip,汇总新增 Skipped 行 ### 验证结果 bash build.sh --run --soc=ascend950 Test Summary: Passed: 4 - csrgeam2 gtsv_interleaved_batch nnz spmm Skipped: 1 - spmv (not supported on ascend950) Failed: 0 See merge request: cann/ops-sparse!56 | 7 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 小时前 | ||
| 8 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 3 小时前 | ||
| 3 小时前 | ||
| 5 天前 | ||
| 8 天前 | ||
| 12 天前 | ||
| 7 天前 | ||
| 7 天前 |