BLAS Level-3 批量三角方程组求解接口 aclblasStrsmbatched 当前缺少 DAV_3510(ascend950)架构的支持。本次新增 arch35 实现,使 Strsmbatched 在 ascend950 上可用。
aclblasStrsmbatched
Strsmbatched 计算公式:
op(A_i) * X_i = alpha * B_i
X_i * op(A_i) = alpha * B_i
其中 A_i 为 batchCount 个三角矩阵(仅存储 UPPER 或 LOWER 一个三角),B_i 为普通矩阵,op(A) 可为 A / A^T / A^H。
实现采用与已有 aclblasStrsm 一致的 SIMT + tensor_api 混合架构:
aclblasStrsm
涉及新增文件:
blas/trsmbatched/arch35/strsmbatched_host.cpp
blas/trsmbatched/arch35/strsmbatched_kernel.cpp
blas/trsmbatched/arch35/strsmbatched_kernel.h
blas/trsmbatched/arch35/strsmbatched_tiling_data.h
blas/trsmbatched/README.md
test/trsmbatched/strsmbatched/arch35/strsmbatched_test.cpp
test/trsmbatched/strsmbatched/arch35/strsmbatched_npu_wrapper.h
test/trsmbatched/strsmbatched/arch35/strsmbatched_test.csv
test/trsmbatched/strsmbatched/strsmbatched_golden.h
test/trsmbatched/strsmbatched/strsmbatched_param.h
test/trsmbatched/strsmbatched/CMakeLists.txt
cann开发者
按列分配到 AIV 核,每核处理 colStart..colEnd 列:
__ubuf__ float aBlockUb[]
四层循环结构:核级 tile → MN tile → K chunk → L0 K split
unitFlag
Right TRSM: X * op(A) = alpha*B → 转置 → op(A)^T * X^T = alpha*B^T
X * op(A) = alpha*B
op(A)^T * X^T = alpha*B^T
op(A)^T * Bt = Bt
Backgroud(背景信息)
BLAS Level-3 批量三角方程组求解接口
aclblasStrsmbatched当前缺少 DAV_3510(ascend950)架构的支持。本次新增 arch35 实现,使 Strsmbatched 在 ascend950 上可用。Strsmbatched 计算公式:
op(A_i) * X_i = alpha * B_iX_i * op(A_i) = alpha * B_i其中 A_i 为 batchCount 个三角矩阵(仅存储 UPPER 或 LOWER 一个三角),B_i 为普通矩阵,op(A) 可为 A / A^T / A^H。
实现采用与已有
aclblasStrsm一致的 SIMT + tensor_api 混合架构:涉及新增文件:
blas/trsmbatched/arch35/strsmbatched_host.cpp— Host 侧入口(参数校验、Tiling 计算、路径选择、kernel 调度)blas/trsmbatched/arch35/strsmbatched_kernel.cpp— Kernel 侧实现(panel/scale/zero/extract/axpy/transpose/gemm 共 8 个 kernel)blas/trsmbatched/arch35/strsmbatched_kernel.h— kernel 声明blas/trsmbatched/arch35/strsmbatched_tiling_data.h— TilingData 结构体定义blas/trsmbatched/README.md— 算子文档test/trsmbatched/strsmbatched/arch35/strsmbatched_test.cpp— CSV 参数化精度 STtest/trsmbatched/strsmbatched/arch35/strsmbatched_npu_wrapper.h— H2D/D2H 测试 wrappertest/trsmbatched/strsmbatched/arch35/strsmbatched_test.csv— 58 条测试用例(含边界值和非法参数校验)test/trsmbatched/strsmbatched/strsmbatched_golden.h— golden 计算参考test/trsmbatched/strsmbatched/strsmbatched_param.h— 测试参数定义test/trsmbatched/strsmbatched/CMakeLists.txt— 构建配置Origin(信息来源)
cann开发者
Benefit / Necessity (价值/作用)
aclblasStrsmbatched在 ascend950 (DAV_3510) 上的缺失,完善 BLAS Level-3 batched 接口覆盖率aclblasStrsm路线保持一致Design(设计方案)
路径选择策略
Panel Solve Kernel (AIV-only, SIMT)
按列分配到 AIV 核,每核处理 colStart..colEnd 列:
__ubuf__ float aBlockUb[])Trailing Update GEMM Kernel (AIC-only, tensor_api)
四层循环结构:核级 tile → MN tile → K chunk → L0 K split
unitFlag控制累加/清零NoTrans vs Trans Trailing Update
Right 路径(Transpose 归约)
Right TRSM:
X * op(A) = alpha*B→ 转置 →op(A)^T * X^T = alpha*B^Top(A)^T * Bt = Bt(flip trans: N↔T,uplo 不变)Host 侧