Level 2

ApplyColumnPivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ApplyColumnPivots(Matrix<F> &A, const Matrix<int> &p)
void ApplyColumnPivots(DistMatrix<F, U1, V1> &A, const DistMatrix<Int, U2, V2> &p)

ApplyInverseColumnPivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ApplyInverseColumnPivots(Matrix<F> &A, const Matrix<int> &p)
void ApplyInverseColumnPivots(DistMatrix<F, U1, V1> &A, const DistMatrix<Int, U2, V2> &p)

ApplyRowPivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ApplyRowPivots(Matrix<F> &A, const Matrix<int> &p)
void ApplyRowPivots(DistMatrix<F, U1, V1> &A, const DistMatrix<Int, U2, V2> &p)

ApplyInverseRowPivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ApplyInverseRowPivots(Matrix<F> &A, const Matrix<int> &p)
void ApplyInverseRowPivots(DistMatrix<F, U1, V1> &A, const DistMatrix<Int, U2, V2> &p)

ApplySymmetricPivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ApplySymmetricPivots(UpperOrLower uplo, Matrix<F> &A, const Matrix<int> &p, bool conjugate = false)
void ApplySymmetricPivots(UpperOrLower uplo, DistMatrix<F> &A, const DistMatrix<Int, VC, STAR> &p, bool conjugate = false)

ApplyInverseSymmetricPivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ApplyInverseSymmetricPivots(UpperOrLower uplo, Matrix<F> &A, const Matrix<int> &p, bool conjugate = false)
void ApplyInverseSymmetricPivots(UpperOrLower uplo, DistMatrix<F> &A, const DistMatrix<Int, VC, STAR> &p, bool conjugate = false)

ComposePivots

Note

This is not a standard BLAS routine, but it is BLAS-like.

void ComposePivots(const Matrix<int> &p, std::vector<int> &image, std::vector<int> &preimage)
void ComposePivots(const DistMatrix<Int, VC, STAR> &p, std::vector<int> &image, std::vector<int> &preimage)
void ComposePivots(const DistMatrix<Int, STAR, STAR> &p, std::vector<int> &image, std::vector<int> &preimage)
void ComposePivots(const Matrix<int> &p, int pivotOffset, std::vector<int> &image, std::vector<int> &preimage)
void ComposePivots(const DistMatrix<Int, STAR, STAR> &p, int pivotOffset, std::vector<int> &image, std::vector<int> &preimage)

FormPivotMeta

PivotMeta FormPivotMeta(mpi::Comm comm, int align, const std::vector<int> &image, const std::vector<int> &preimage)

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)
void Gemv(Orientation orientation, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &x, T beta, DistMatrix<T> &y)

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)
void Ger(T alpha, const DistMatrix<T> &x, const DistMatrix<T> &y, DistMatrix<T> &A)

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)
void Gerc(T alpha, const DistMatrix<T> &x, const DistMatrix<T> &y, DistMatrix<T> &A)

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)
void Geru(T alpha, const DistMatrix<T> &x, const DistMatrix<T> &y, DistMatrix<T> &A)

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)
void Hemv(UpperOrLower uplo, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &x, T beta, DistMatrix<T> &y)

Please see SetLocalSymvBlocksize<T>() and LocalSymvBlocksize<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)
void Her(UpperOrLower uplo, T alpha, const DistMatrix<T> &x, DistMatrix<T> &A)

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)
void Her2(UpperOrLower uplo, T alpha, const DistMatrix<T> &x, const DistMatrix<T> &y, DistMatrix<T> &A)

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, bool conjugate = false)
void Symv(UpperOrLower uplo, T alpha, const DistMatrix<T> &A, const DistMatrix<T> &x, T beta, DistMatrix<T> &y, bool conjugate = false)

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, bool conjugate = false)
void Syr(UpperOrLower uplo, T alpha, const DistMatrix<T> &x, DistMatrix<T> &A, bool conjugate = false)

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, bool conjugate = false)
void Syr2(UpperOrLower uplo, T alpha, const DistMatrix<T> &x, const DistMatrix<T> &y, DistMatrix<T> &A, bool conjugate = false)

Trmv

Not yet written. Please call Trmm() for now.

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)
void Trsv(UpperOrLower uplo, Orientation orientation, UnitOrNonUnit diag, const DistMatrix<F> &A, DistMatrix<F> &x)