Level 2¶
The prototypes for the following routines can be found at include/elemental/blas-like_decl.hpp, while the implementations are in include/elemental/blas-like/level2/.
Gemv¶
General matrix-vector multiply: \(y := \alpha \mbox{op}(A) x + \beta y\), where \(\mbox{op}(A)\) can be \(A\), \(A^T\), or \(A^H\). Whether or not \(x\) and \(y\) are stored as row vectors, they will be interpreted as column vectors.
- void Gemv(Orientation orientation, T alpha, const Matrix<T>& A, const Matrix<T>& x, T beta, Matrix<T>& y)¶
Serial implementation (templated over the datatype).
- void Gemv(Orientation orientation, T alpha, const DistMatrix<T>& A, const DistMatrix<T>& x, T beta, DistMatrix<T>& y)¶
Distributed implementation (templated over the datatype).
Ger¶
General rank-one update: \(A := \alpha x y^H + A\). \(x\) and \(y\) are free to be stored as either row or column vectors, but they will be interpreted as column vectors.
- void Ger(T alpha, const Matrix<T>& x, const Matrix<T>& y, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Ger(T alpha, const DistMatrix<T>& x, const DistMatrix<T>& y, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Gerc¶
This is the same as Ger(), but the name is provided because it exists in the BLAS.
- void Gerc(T alpha, const Matrix<T>& x, const Matrix<T>& y, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Gerc(T alpha, const DistMatrix<T>& x, const DistMatrix<T>& y, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Geru¶
General rank-one update (unconjugated): \(A := \alpha x y^T + A\). \(x\) and \(y\) are free to be stored as either row or column vectors, but they will be interpreted as column vectors.
- void Geru(T alpha, const Matrix<T>& x, const Matrix<T>& y, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Geru(T alpha, const DistMatrix<T>& x, const DistMatrix<T>& y, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Hemv¶
Hermitian matrix-vector multiply: \(y := \alpha A x + \beta y\), where \(A\) is Hermitian.
- void Hemv(UpperOrLower uplo, T alpha, const Matrix<T>& A, const Matrix<T>& x, T beta, Matrix<T>& y)¶
The serial implementation (templated over the datatype).
- void Hemv(UpperOrLower uplo, T alpha, const DistMatrix<T>& A, const DistMatrix<T>& x, T beta, DistMatrix<T>& y)¶
The distributed implementation (templated over the datatype).
Please see SetLocalHemvBlocksize<T>() and LocalHemvBlocksize<T>() in the Tuning parameters section for information on tuning the distributed Hemv().
Her¶
Hermitian rank-one update: implicitly performs \(A := \alpha x x^H + A\), where only the triangle of \(A\) specified by uplo is updated.
- void Her(UpperOrLower uplo, T alpha, const Matrix<T>& x, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Her(UpperOrLower uplo, T alpha, const DistMatrix<T>& x, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Her2¶
Hermitian rank-two update: implicitly performs \(A := \alpha ( x y^H + y x^H ) + A\), where only the triangle of \(A\) specified by uplo is updated.
- void Her2(UpperOrLower uplo, T alpha, const Matrix<T>& x, const Matrix<T>& y, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Her2(UpperOrLower uplo, T alpha, const DistMatrix<T>& x, const DistMatrix<T>& y, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Symv¶
Symmetric matrix-vector multiply: \(y := \alpha A x + \beta y\), where \(A\) is symmetric.
- void Symv(UpperOrLower uplo, T alpha, const Matrix<T>& A, const Matrix<T>& x, T beta, Matrix<T>& y)¶
The serial implementation (templated over the datatype).
- void Symv(UpperOrLower uplo, T alpha, const DistMatrix<T>& A, const DistMatrix<T>& x, T beta, DistMatrix<T>& y)¶
The distributed implementation (templated over the datatype).
Please see SetLocalSymvBlocksize<T>() and LocalSymvBlocksize<T>() in the Tuning parameters section for information on tuning the distributed Symv().
Syr¶
Symmetric rank-one update: implicitly performs \(A := \alpha x x^T + A\), where only the triangle of \(A\) specified by uplo is updated.
- void Syr(UpperOrLower uplo, T alpha, const Matrix<T>& x, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Syr(UpperOrLower uplo, T alpha, const DistMatrix<T>& x, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Syr2¶
Symmetric rank-two update: implicitly performs \(A := \alpha ( x y^T + y x^T ) + A\), where only the triangle of \(A\) specified by uplo is updated.
- void Syr2(UpperOrLower uplo, T alpha, const Matrix<T>& x, const Matrix<T>& y, Matrix<T>& A)¶
The serial implementation (templated over the datatype).
- void Syr2(UpperOrLower uplo, T alpha, const DistMatrix<T>& x, const DistMatrix<T>& y, DistMatrix<T>& A)¶
The distributed implementation (templated over the datatype).
Trsv¶
Triangular solve with a vector: computes \(x := \mbox{op}(A)^{-1} x\), where \(\mbox{op}(A)\) is either \(A\), \(A^T\), or \(A^H\), and \(A\) is treated an either a lower or upper triangular matrix, depending upon uplo. \(A\) can also be treated as implicitly having a unit-diagonal if diag is set to UNIT.
- void Trsv(UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, const Matrix<F>& A, Matrix<F>& x)¶
The serial implementation (templated over the datatype).
- void Trsv(UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, const DistMatrix<F>& A, DistMatrix<F>& x)¶
The distributed implementation (templated over the datatype).