| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 1 个月前 | |
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 | 1 个月前 | |
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 | 1 个月前 | |
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 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |