Level 3¶
Gemm¶
General matrix-matrix multiplication: updates \(C := \alpha \mbox{op}_A(A) \mbox{op}_B(B) + \beta C\), where \(\mbox{op}_A(M)\) and \(\mbox{op}_B(M)\) can each be chosen from \(M\), \(M^T\), and \(M^H\).
-
void
Gemm
(Orientation orientationOfA, Orientation orientationOfB, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C)¶
-
void
Gemm
(Orientation orientationOfA, Orientation orientationOfB, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, T beta, DistMatrix<T> &C)¶
Hemm¶
Hermitian matrix-matrix multiplication: updates
\(C := \alpha A B + \beta C\), or
\(C := \alpha B A + \beta C\), depending upon whether side is set to
LEFT
or RIGHT
, respectively. In both of these types of updates,
\(A\) is implicitly Hermitian and only the triangle specified by uplo is
accessed.
-
void
Hemm
(LeftOrRight side, UpperOrLower uplo, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C)¶
-
void
Hemm
(LeftOrRight side, UpperOrLower uplo, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, T beta, DistMatrix<T> &C)¶
Her2k¶
Hermitian rank-2K update: updates
\(C := \alpha (A B^H + B A^H) + \beta C\), or
\(C := \alpha (A^H B + B^H A) + \beta C\), depending upon whether
orientation is set to NORMAL
or ADJOINT
, respectively. Only the
triangle of \(C\) specified by the uplo parameter is modified.
-
void
Her2k
(UpperOrLower uplo, Orientation orientation, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C)¶
-
void
Her2k
(UpperOrLower uplo, Orientation orientation, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, T beta, DistMatrix<T> &C)¶
Please see SetLocalTrr2kBlocksize<T>()
and LocalTrr2kBlocksize<T>()
in the
Tuning parameters section for information on tuning the distributed
Her2k()
.
Herk¶
Hermitian rank-K update: updates
\(C := \alpha A A^H + \beta C\), or
\(C := \alpha A^H A + \beta C\), depending upon whether orientation is
set to NORMAL
or ADJOINT
, respectively. Only the triangle of \(C\)
specified by the uplo parameter is modified.
-
void
Herk
(UpperOrLower uplo, Orientation orientation, T alpha, const Matrix<T> &A, T beta, Matrix<T> &C)¶
-
void
Herk
(UpperOrLower uplo, Orientation orientation, T alpha, const DistMatrix<T> &A, T beta, DistMatrix<T> &C)¶
Please see SetLocalTrrkBlocksize<T>()
and LocalTrrkBlocksize<T>()
in the Tuning parameters
section for information on tuning the distributed Herk()
.
Symm¶
Symmetric matrix-matrix multiplication: updates
\(C := \alpha A B + \beta C\), or
\(C := \alpha B A + \beta C\), depending upon whether side is set to
LEFT
or RIGHT
, respectively. In both of these types of updates,
\(A\) is implicitly symmetric and only the triangle specified by uplo
is accessed.
-
void
Symm
(LeftOrRight side, UpperOrLower uplo, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C, bool conjugate = false)¶
-
void
Symm
(LeftOrRight side, UpperOrLower uplo, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, T beta, DistMatrix<T> &C, bool conjugate = false)¶
Syr2k¶
Symmetric rank-2K update: updates
\(C := \alpha (A B^T + B A^T) + \beta C\), or
\(C := \alpha (A^T B + B^T A) + \beta C\), depending upon whether
orientation is set to NORMAL
or TRANSPOSE
, respectively. Only the
triangle of \(C\) specified by the uplo parameter is modified.
-
void
Syr2k
(UpperOrLower uplo, Orientation orientation, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C)¶
-
void
Syr2k
(UpperOrLower uplo, Orientation orientation, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, T beta, DistMatrix<T> &C)¶
Please see SetLocalTrr2kBlocksize<T>()
and LocalTrr2kBlocksize<T>()
in the
Tuning parameters section for information on tuning the distributed
Syr2k()
.
Syrk¶
Symmetric rank-K update: updates
\(C := \alpha A A^T + \beta C\), or
\(C := \alpha A^T A + \beta C\), depending upon whether orientation is
set to NORMAL
or TRANSPOSE
, respectively. Only the triangle of \(C\)
specified by the uplo parameter is modified.
-
void
Syrk
(UpperOrLower uplo, Orientation orientation, T alpha, const Matrix<T> &A, T beta, Matrix<T> &C)¶
-
void
Syrk
(UpperOrLower uplo, Orientation orientation, T alpha, const DistMatrix<T> &A, T beta, DistMatrix<T> &C)¶
Please see SetLocalTrrkBlocksize<T>()
and LocalTrrkBlocksize<T>()
in the Tuning parameters
section for information on tuning the distributed Syrk()
.
Trmm¶
Triangular matrix-matrix multiplication: performs
\(C := \alpha \mbox{op}(A) B\), or
\(C := \alpha B \mbox{op}(A)\), depending upon whether side was chosen
to be LEFT
or RIGHT
, respectively. Whether \(A\) is treated as
lower or upper triangular is determined by uplo, and \(\mbox{op}(A)\)
can be any of \(A\), \(A^T\), and \(A^H\) (and diag determines
whether \(A\) is treated as unit-diagonal or not).
-
void
Trmm
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, T alpha, const Matrix<T> &A, Matrix<T> &B)¶
-
void
Trmm
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, T alpha, const DistMatrix<T> &A, DistMatrix<T> &B)¶
Trr2k¶
Triangular rank-2k update: performs \(E := \alpha ( \mbox{op}(A) \mbox{op}(B) + \mbox{op}(C) \mbox{op}(D) ) + \beta E\), where only the triangle of E specified by uplo is modified, and \(\mbox{op}(X)\) is determined by orientationOfX, for each \(X \in \left\{A,B,C,D\right\}\).
Note
There is no corresponding BLAS routine, but it is a natural generalization of “symmetric” and “Hermitian” updates.
-
void
Trr2k
(UpperOrLower uplo, Orientation orientationOfA, Orientation orientationOfB, Orientation orientationOfC, Orientation orientationOfD, T alpha, const Matrix<T> &A, const Matrix<T> &B, const Matrix<T> &C, const Matrix<T> &D, T beta, Matrix<T> &E)¶
-
void
Trr2k
(UpperOrLower uplo, Orientation orientationOfA, Orientation orientationOfB, Orientation orientationOfC, Orientation orientationOfD, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, const DistMatrix<T> &C, const DistMatrix<T> &D, T beta, DistMatrix<T> &E)¶
Trrk¶
Triangular rank-k update: performs \(C := \alpha \mbox{op}(A) \mbox{op}(B) + \beta C\), where only the triangle of C specified by uplo is modified, and \(\mbox{op}(A)\) and \(\mbox{op}(B)\) are determined by orientationOfA and orientationOfB, respectively.
Note
There is no corresponding BLAS routine, but this type of update is frequently encountered, even in serial. For instance, the symmetric rank-k update performed during an LDL factorization is symmetric but one of the two update matrices is scaled by D.
-
void
Trrk
(UpperOrLower uplo, Orientation orientationOfA, Orientation orientationOfB, T alpha, const Matrix<T> &A, const Matrix<T> &B, T beta, Matrix<T> &C)¶
-
void
Trrk
(UpperOrLower uplo, Orientation orientationOfA, Orientation orientationOfB, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &B, T beta, DistMatrix<T> &C)¶
Trtrmm¶
Note
This routine loosely corresponds with the LAPACK routines ?lauum.
Symmetric/Hermitian triangular matrix-matrix multiply: performs \(L := L^T L\), \(L := L^H L\), \(U := U U^T\), or \(U := U U^H\), depending upon the choice of the orientation and uplo parameters.
-
void
Trtrmm
(Orientation orientation, UpperOrLower uplo, Matrix<T> &A)¶
-
void
Trtrmm
(Orientation orientation, UpperOrLower uplo, DistMatrix<T> &A)¶
Trdtrmm¶
Note
This is a modification of Trtrmm for LDL factorizations.
Symmetric/Hermitian triangular matrix-matrix multiply (with diagonal scaling): performs \(L := L^T D^{-1} L\), \(L := L^H D^{-1} L\), \(U := U D^{-1} U^T\), or \(U := U D^{-1} U^H\), depending upon the choice of the orientation and uplo parameters. Note that \(L\) and \(U\) are unit-diagonal and their diagonal is overwritten with \(D\).
-
void
Trdtrmm
(Orientation orientation, UpperOrLower uplo, Matrix<F> &A)¶
-
void
Trdtrmm
(Orientation orientation, UpperOrLower uplo, DistMatrix<F> &A)¶
Trsm¶
Triangular solve with multiple right-hand sides: performs
\(C := \alpha \mbox{op}(A)^{-1} B\), or
\(C := \alpha B \mbox{op}(A)^{-1}\), depending upon whether side was
chosen to be LEFT
or RIGHT
, respectively. Whether \(A\) is treated
as lower or upper triangular is determined by uplo, and \(\mbox{op}(A)\)
can be any of \(A\), \(A^T\), and \(A^H\) (and diag determines
whether \(A\) is treated as unit-diagonal or not).
-
void
Trsm
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, F alpha, const Matrix<F> &A, Matrix<F> &B)¶
-
void
Trsm
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, F alpha, const DistMatrix<F> &A, DistMatrix<F> &B)¶
Trstrm¶
Performs a triangular solve against a triangular matrix. Only the Left Lower Normal option is currently supported.
-
void
Trstrm
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, F alpha, const Matrix<F> &A, Matrix<F> &X, bool checkIfSingular = true)¶
-
void
Trstrm
(LeftOrRight side, UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, F alpha, const DistMatrix<F> &A, DistMatrix<F> &X, bool checkIfSingular = true)¶
Two-sided Trmm¶
Performs a two-sided triangular multiplication with multiple right-hand sides which preserves the symmetry of the input matrix, either \(A := L^H A L\) or \(A := U A U^H\).
-
void
TwoSidedTrmm
(UpperOrLower uplo, UnitOrNonUnit diag, Matrix<T> &A, const Matrix<T> &B)¶
-
void
TwoSidedTrmm
(UpperOrLower uplo, UnitOrNonUnit diag, DistMatrix<T> &A, const DistMatrix<T> &B)¶
Two-sided Trsm¶
Performs a two-sided triangular solves with multiple right-hand sides which preserves the symmetry of the input matrix, either \(A := L^{-1} A L^{-H}\) or \(A := U^{-H} A U^{-1}\).
-
void
TwoSidedTrsm
(UpperOrLower uplo, UnitOrNonUnit diag, Matrix<F> &A, const Matrix<F> &B)¶
-
void
TwoSidedTrsm
(UpperOrLower uplo, UnitOrNonUnit diag, DistMatrix<F> &A, const DistMatrix<F> &B)¶