Permutations¶
Permutation vectors¶
In order to represent arbitrary permutations, Elemental recently switched from LAPACK-style pivot sequence representations to general permutation vectors, where entry i of the permutation vector p contains the column index of the nonzero entry in row i of the corresponding permutation matrix.
PermuteCols¶
-
void
PermuteCols
(Matrix<T> &A, const Matrix<int> &perm)¶
-
void
PermuteCols
(Matrix<T> &A, const Matrix<int> &perm, const Matrix<int> &invPerm)¶
PermuteRows¶
-
void
PermuteRows
(Matrix<T> &A, const Matrix<int> &perm)¶
-
void
PermuteRows
(Matrix<T> &A, const Matrix<int> &perm, const Matrix<int> &invPerm)¶
PermutationMeta¶
-
type
PermutationMeta
¶ -
int
align
¶
-
std::vector<int>
sendCounts
¶
-
std::vector<int>
sendDispls
¶
-
std::vector<int>
sendIdx
¶
-
std::vector<int>
sendRanks
¶
-
std::vector<int>
recvCounts
¶
-
std::vector<int>
recvDispls
¶
-
std::vector<int>
recvIdx
¶
-
std::vector<int>
recvRanks
¶
-
int
TotalSend
() const¶
-
int
TotalRecv
() const¶
-
void
ScaleUp
(int length)¶
-
void
ScaleDown
(int length)¶
-
int
Pivot sequences¶
These routines make use of LAPACK-style pivot sequence vectors, where the pivot sequence vector p implies the sequence of swaps \((0,p_0)\), \((1,p_1)\), ..., \((n-1,p_{n-1})\). Elemental used to follow this convention when returning permutations from factorizations, but clearly this representation is somewhat restrictive, as routines which perform multiple swaps for each pivot (e.g., some variants of Bunch-Kaufman) cannot be handled.
ApplyColPivots¶
-
void
ApplyColPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyColPivots
(DistMatrix<T, U1, V1> &A, const DistMatrix<int, U2, V2> &pivots)¶
ApplyInverseColPivots¶
-
void
ApplyInverseColPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyInverseColPivots
(DistMatrix<T, U1, V1> &A, const DistMatrix<int, U2, V2> &pivots)¶
ApplyRowPivots¶
-
void
ApplyRowPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyRowPivots
(DistMatrix<T, U1, V1> &A, const DistMatrix<int, U2, V2> &pivots)¶
ApplyInverseRowPivots¶
-
void
ApplyInverseRowPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyInverseRowPivots
(DistMatrix<T, U1, V1> &A, const DistMatrix<int, U2, V2> &pivots)¶
ApplySymmetricPivots¶
-
void
ApplySymmetricPivots
(UpperOrLower uplo, Matrix<T> &A, const Matrix<int> &pivots, bool conjugate = false)¶
-
void
ApplySymmetricPivots
(UpperOrLower uplo, DistMatrix<T> &A, const DistMatrix<int, UPerm, STAR> &pivots, bool conjugate = false)¶
ApplyInverseSymmetricPivots¶
-
void
ApplyInverseSymmetricPivots
(UpperOrLower uplo, Matrix<T> &A, const Matrix<int> &pivots, bool conjugate = false)¶
-
void
ApplyInverseSymmetricPivots
(UpperOrLower uplo, DistMatrix<T> &A, const DistMatrix<int, UPerm, STAR> &pivots, bool conjugate = false)¶
Converting pivot sequences to permutations¶
PivotsToPermutation¶
-
void
PivotsToPermutation
(const Matrix<int> &pivots, Matrix<int> &perm, int offset = 0)¶
PivotsToInversePermutation¶
-
void
PivotsToInversePermutation
(const Matrix<int> &pivots, Matrix<int> &invPerm, int offset = 0)¶