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> &p)¶
-
void
PermuteCols
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &p)¶
-
void
PermuteCols
(Matrix<T> &A, const Matrix<int> &p, const Matrix<int> &pInv)¶
-
void
PermuteCols
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &p, const AbstractDistMatrix<int> &pInv)¶ Provide the inverse permutations so that they do not need to be internally computed and discarded.
PermuteRows¶
-
void
PermuteRows
(Matrix<T> &A, const Matrix<int> &p)¶
-
void
PermuteRows
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &p)¶
-
void
PermuteRows
(Matrix<T> &A, const Matrix<int> &p, const Matrix<int> &pInv)¶
-
void
PermuteRows
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &p, const AbstractDistMatrix<int> &pInv)¶ Provide the inverse permutations so that they do not need to be internally computed and discarded.
InversePermuteCols¶
-
void
InversePermuteCols
(Matrix<T> &A, const Matrix<int> &p)¶
-
void
InversePermuteCols
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &p)¶
InversePermuteRows¶
-
void
InversePermuteRows
(Matrix<T> &A, const Matrix<int> &p)¶
-
void
InversePermuteRows
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &p)¶
InvertPermutation¶
-
void
InvertPermutation
(const Matrix<int> &p, Matrix<int> &pInv)¶
-
void
InvertPermutation
(const AbstractDistMatrix<int> &p, AbstractDistMatrix<int> &pInv)¶ Compute the inverse permutation matrix in compressed (vector) form.
ExplicitPermutation¶
-
void
ExplicitPermutation
(const Matrix<int> &p, Matrix<int> &P)¶
-
void
ExplicitPermutation
(const AbstractDistMatrix<int> &p, AbstractDistMatrix<int> &P)¶ Return the full permutation matrix, P, represented by the permutation vector p.
PermutationParity¶
-
bool
PermutationParity
(const Matrix<int> &p)¶
-
bool
PermutationParity
(const AbstractDistMatrix<int> &p)¶ Return true if the given permutation is odd. The parity is determined in linear time by finding the decomposition of the inverse of the permutation as a product of transpositions.
PermutationMeta¶
-
type
PermutationMeta
¶ -
-
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)¶
-
PermutationMeta
(const AbstractDistMatrix<int> &p, const AbstractDistMatrix<int> &pInv)¶
-
std::vector<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
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &pivots)¶
ApplyInverseColPivots¶
-
void
ApplyInverseColPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyInverseColPivots
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &pivots)¶
ApplyRowPivots¶
-
void
ApplyRowPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyRowPivots
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &pivots)¶
ApplyInverseRowPivots¶
-
void
ApplyInverseRowPivots
(Matrix<T> &A, const Matrix<int> &pivots)¶
-
void
ApplyInverseRowPivots
(AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &pivots)¶
ApplySymmetricPivots¶
-
void
ApplySymmetricPivots
(UpperOrLower uplo, Matrix<T> &A, const Matrix<int> &pivots, bool conjugate = false)¶
-
void
ApplySymmetricPivots
(UpperOrLower uplo, AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &pivots, bool conjugate = false)¶
ApplyInverseSymmetricPivots¶
-
void
ApplyInverseSymmetricPivots
(UpperOrLower uplo, Matrix<T> &A, const Matrix<int> &pivots, bool conjugate = false)¶
-
void
ApplyInverseSymmetricPivots
(UpperOrLower uplo, AbstractDistMatrix<T> &A, const AbstractDistMatrix<int> &pivots, bool conjugate = false)¶
Converting pivot sequences to permutations¶
PivotsToPermutation¶
-
void
PivotsToPermutation
(const Matrix<int> &pivots, Matrix<int> &p, int offset = 0)¶
-
void
PivotsToPermutation
(const AbstractDistMatrix<int> &pivots, AbstractDistMatrix<int> &p, int offset = 0)¶