C 如何在blas中对TPTR进行转置?

C 如何在blas中对TPTR进行转置?,c,matrix,fortran,blas,C,Matrix,Fortran,Blas,如何在blas中对TPTR进行转置 我想解决: XA = B 但TPTR似乎只让我解决了: AX = B 或者,在TPTR中使用“转置”标志: A'X = B 其中,重新安排是: (A'X)' = B' X'A = B' 所以,我可以用它来解XA=B,但我必须首先自己手动地转置B,然后再次转置答案。我是否错过了一些避免转置的技巧?TPTRS不是BLAS例程;这是拉帕克的例行程序 如果A与B和X相比相对较小,那么将其解包成“正常”三角矩阵并使用BLAS例程TRSM是一个不错的选择,该例程采

如何在blas中对TPTR进行转置

我想解决:

XA = B
但TPTR似乎只让我解决了:

AX = B
或者,在TPTR中使用“转置”标志:

A'X = B
其中,重新安排是:

(A'X)' = B'
X'A = B'

所以,我可以用它来解XA=B,但我必须首先自己手动地转置B,然后再次转置答案。我是否错过了一些避免转置的技巧?

TPTRS不是BLAS例程;这是拉帕克的例行程序


如果A与B和X相比相对较小,那么将其解包成“正常”三角矩阵并使用BLAS例程TRSM是一个不错的选择,该例程采用“side”参数,允许您指定XA=B。如果A是mxm,B是nxm,则解包会增加m^2操作,与O(nm^2)相比,这将是一个较小的开销执行求解的操作。

A、B和X的尺寸是多少?未定义。A是一个正方形下三角矩阵。B和X都是矩形矩阵。所有的都是稠密的(当然,因为它是blas)。一般来说,A相对较小,而B和X又长又细。我不会称之为“技巧”,但你可以编写自己的矩阵解算器。是的,我几天前了解了TRSM,这正是我要寻找的解决方案,所以我会将此标记为答案。@HughPerkins:如果你的源A确实是打包的,请注意,使用TRSM不需要实例化完整的未打包表单。如果您想避免这样做,您可以选择一个适中的瓷砖尺寸(比如64x64)并打开每个瓷砖的包装,然后为对角瓷砖调用TRSM,为非对角瓷砖调用GEMM。不过,这可能不是你需要担心的事情;只是我最初并没有找到TSRM,而我发现的唯一一个函数,最初,需要打包的表单,然后我花了很多精力从我原始的、未打包的表单中获取;-)