SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
|
\(C = A^{-1} B\) or \(C = B A^{-1}\) where \(A\) is triangular More...
Functions | |
template<typename scalar_t > | |
void | slate::trsm (blas::Side side, scalar_t alpha, TriangularMatrix< scalar_t > &A, Matrix< scalar_t > &B, Options const &opts) |
Distributed parallel triangular matrix-matrix solve. | |
template<typename scalar_t > | |
void | slate::trsmA (blas::Side side, scalar_t alpha, TriangularMatrix< scalar_t > &A, Matrix< scalar_t > &B, Options const &opts) |
Distributed parallel triangular matrix-matrix solve. | |
template<typename scalar_t > | |
void | slate::trsmB (blas::Side side, scalar_t alpha, TriangularMatrix< scalar_t > &A, Matrix< scalar_t > &B, Options const &opts) |
Distributed parallel triangular matrix-matrix solve. | |
\(C = A^{-1} B\) or \(C = B A^{-1}\) where \(A\) is triangular
void slate::trsm | ( | blas::Side | side, |
scalar_t | alpha, | ||
TriangularMatrix< scalar_t > & | A, | ||
Matrix< scalar_t > & | B, | ||
Options const & | opts | ||
) |
Distributed parallel triangular matrix-matrix solve.
Solves one of the triangular matrix equations
\[ A X = \alpha B, \]
or
\[ X A = \alpha B, \]
where alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix. The matrix X overwrites B. The matrices can be transposed or conjugate-transposed beforehand, e.g.,
auto AT = slate::transpose( A ); slate::trsm( Side::Left, alpha, AT, B );
Complexity (in real): \(m^{2} n\) flops.
scalar_t | One of float, double, std::complex<float>, std::complex<double>. |
[in] | side | Whether A appears on the left or on the right of X:
|
[in] | alpha | The scalar alpha. |
[in] | A |
|
[in,out] | B | On entry, the m-by-n matrix B. On exit, overwritten by the result X. |
[in] | opts | Additional options, as map of name = value pairs. Possible options:
|
void slate::trsmA | ( | blas::Side | side, |
scalar_t | alpha, | ||
TriangularMatrix< scalar_t > & | A, | ||
Matrix< scalar_t > & | B, | ||
Options const & | opts | ||
) |
Distributed parallel triangular matrix-matrix solve.
Solves one of the triangular matrix equations
\[ A X = \alpha B, \]
or
\[ X A = \alpha B, \]
where alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix. The matrix X overwrites B. The matrices can be transposed or conjugate-transposed beforehand, e.g.,
auto AT = slate::transpose( A ); slate::trsmA( Side::Left, alpha, AT, B );
Note: The original trsm computes the solution where B is located. The trsmA is a variant of trsm where the computation is performed where A is located using temporary tiles to represent B, followed by a reduction to get the result into the given B. This approach is well suited in the case of a few right-hand side since it would require less communication.
scalar_t | One of float, double, std::complex<float>, std::complex<double>. |
[in] | side | Whether A appears on the left or on the right of X:
|
[in] | alpha | The scalar alpha. |
[in] | A |
|
[in,out] | B | On entry, the m-by-n matrix B. On exit, overwritten by the result X. |
[in] | opts | Additional options, as map of name = value pairs. Possible options:
|
void slate::trsmB | ( | blas::Side | side, |
scalar_t | alpha, | ||
TriangularMatrix< scalar_t > & | A, | ||
Matrix< scalar_t > & | B, | ||
Options const & | opts | ||
) |
Distributed parallel triangular matrix-matrix solve.
Solves one of the triangular matrix equations
\[ A X = \alpha B, \]
or
\[ X A = \alpha B, \]
where alpha is a scalar, B is an m-by-n matrix and A is a unit or non-unit, upper or lower triangular matrix. The matrix X overwrites B. The matrices can be transposed or conjugate-transposed beforehand, e.g.,
auto AT = slate::transpose( A ); slate::trsm( Side::Left, alpha, AT, B );
scalar_t | One of float, double, std::complex<float>, std::complex<double>. |
[in] | side | Whether A appears on the left or on the right of X:
|
[in] | alpha | The scalar alpha. |
[in] | A |
|
[in,out] | B | On entry, the m-by-n matrix B. On exit, overwritten by the result X. |
[in] | opts | Additional options, as map of name = value pairs. Possible options:
|