咨询Trsm与Gemm的时间复杂度及FLOPs计算(基于cuBlas)
cuBLAS TRSM 精确FLOPs计算
TRSM(三角矩阵求解)是cuBLAS中用于求解三角线性方程组的操作,其精确FLOPs需根据操作模式、三角矩阵类型(单位/非单位对角、上/下三角)区分计算,以下是针对不同场景的精确计数(与GEMM的计数逻辑一致,包含alpha缩放的浮点操作):
核心定义
TRSM的两种核心形式:
- 左侧模式:
op(A) * X = alpha * B(A为n×n三角矩阵,B为n×m矩阵,X与B同维度) - 右侧模式:
X * op(A) = alpha * B(A为n×n三角矩阵,B为m×n矩阵,X与B同维度)op(A)表示A、A转置或A共轭转置,转置/共轭转置不改变FLOPs计数。
左侧模式(op(A)*X = alpha*B)
非单位对角三角矩阵(上/下三角)
- 若
alpha≠1:先对B做缩放,共m*n次浮点乘法 - 求解方程组阶段:每个X元素包含除法、乘法、减法操作,总运算数为
m*n²次 - 总FLOPs(alpha≠1):
m*n(n+1) - 总FLOPs(alpha=1):
m*n²
单位对角三角矩阵(上/下三角)
- 若
alpha≠1:先对B做缩放,共m*n次浮点乘法 - 求解方程组阶段:无除法操作,每个元素仅包含乘法和减法,总运算数为
m*n(n-1)次 - 总FLOPs(alpha≠1):
m*n² - 总FLOPs(alpha=1):
m*n(n-1)
右侧模式(X*op(A) = alpha*B)
非单位对角三角矩阵(上/下三角)
- 若
alpha≠1:先对B做缩放,共m*n次浮点乘法 - 求解方程组阶段:总运算数为
m²*n次 - 总FLOPs(alpha≠1):
m*n(m+1) - 总FLOPs(alpha=1):
m²*n
单位对角三角矩阵(上/下三角)
- 若
alpha≠1:先对B做缩放,共m*n次浮点乘法 - 求解方程组阶段:总运算数为
m*n(m-1)次 - 总FLOPs(alpha≠1):
m²*n - 总FLOPs(alpha=1):
m*n(m-1)
备注
以上为理论精确FLOPs,cuBLAS的优化实现可能存在少量操作差异,但该计数足以满足Roofline模型的性能评估需求。
内容的提问来源于stack exchange,提问作者TherLF
相关产品推荐
相关产品推荐

