Block sparsity-aware LDLT factorization algorithm. More...
#include <proxsuite-nlp/linalg/block-ldlt.hpp>
Public Types | |
| using | Scalar = _Scalar |
| using | Base = ldlt_base<Scalar> |
| using | DView = typename Base::DView |
| using | Traits = LDLT_Traits<MatrixXs, Eigen::Lower> |
| using | PermutationType |
| using | PermIdxType = Eigen::Matrix<isize, Eigen::Dynamic, 1> |
| using | BlockTriL = TriangularBlockMatrix<const MatrixXs, Eigen::UnitLower> |
| using | BlockTriU |
Public Types inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
| using | DView |
Public Member Functions | |
| BlockLDLT (isize size, SymbolicBlockMatrix const &structure) | |
| The constructor copies the input matrix. | |
| BlockLDLT (BlockLDLT const &other) | |
| void | computeStartIndices (const SymbolicBlockMatrix &in) |
| Compute indices indicating where blocks start. | |
| const SymbolicBlockMatrix & | structure () const |
| void | print_sparsity () const |
| bool | analyzePattern () |
| Analyze and factorize the block structure, if not done already. | |
| usize | nblocks () const |
| void | setBlockPermutation (isize const *new_perm=nullptr) |
| Calls updateBlockPermutationMatrix. | |
| auto | blockPermIndices () -> std::vector< isize > & |
| BlockLDLT & | findSparsifyingPermutation () |
| Find a sparsity-maximizing permutation of the blocks. This will also compute the symbolic factorization. | |
| const PermutationType & | permutationP () const |
| MatrixXs | reconstructedMatrix () const override |
| Traits::MatrixL | matrixL () const |
| Traits::MatrixU | matrixU () const |
| DView | vectorD () const override |
| template<typename Derived> | |
| bool | solveInPlace (Eigen::MatrixBase< Derived > &b) const |
| Solve for the right-hand side in-place. | |
| template<typename Rhs> | |
| Rhs::PlainObject | solve (const Eigen::MatrixBase< Rhs > &rhs) const |
| const MatrixXs & | matrixLDLT () const override |
| void | compute () |
| BlockLDLT & | compute (const ConstMatrixRef &mat) override |
Public Member Functions inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
| bool | solveInPlace (MatrixRef) const |
| Eigen::ComputationInfo | info () const |
| SignMatrix | sign () const |
Public Attributes | |
| Scalar | |
Public Attributes inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
| Scalar | |
Protected Member Functions | |
| BlockLDLT & | updateBlockPermutationMatrix (SymbolicBlockMatrix const &in) |
Protected Attributes | |
| MatrixXs | m_matrix |
| SymbolicBlockMatrix | m_structure |
| SymbolicBlockMatrix | m_struct_tr |
| PermutationType | m_permutation |
| std::vector< isize > | m_perm |
| std::vector< isize > | m_perm_inv |
| std::vector< isize > | m_iwork |
| std::vector< isize > | m_start_idx |
| Eigen::ComputationInfo | m_info |
| SignMatrix | m_sign |
Protected Attributes inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
| Eigen::ComputationInfo | m_info |
| SignMatrix | m_sign |
Additional Inherited Members | |
Static Public Member Functions inherited from proxsuite::nlp::linalg::ldlt_base< _Scalar > | |
| static DView | diag_view_impl (Mat &&mat) |
Block sparsity-aware LDLT factorization algorithm.
This struct owns the data of the SymbolicBlockMatrix given as input. The member function findSparsifyingPermutation() uses a heuristic (for now a brute-force search) to find a sparsity-maximizing permutation of the blocks in the input matrix. updateBlockPermutationMatrix() updates the permutation matrix according to the stored block-wise permutation indices.
Definition at line 197 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Scalar = _Scalar |
Definition at line 198 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Base = ldlt_base<Scalar> |
Definition at line 200 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::DView = typename Base::DView |
Definition at line 201 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Traits = LDLT_Traits<MatrixXs, Eigen::Lower> |
Definition at line 202 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::PermutationType |
Definition at line 203 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::PermIdxType = Eigen::Matrix<isize, Eigen::Dynamic, 1> |
Definition at line 205 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::BlockTriL = TriangularBlockMatrix<const MatrixXs, Eigen::UnitLower> |
Definition at line 206 of file block-ldlt.hpp.
| using proxsuite::nlp::linalg::BlockLDLT< _Scalar >::BlockTriU |
Definition at line 207 of file block-ldlt.hpp.
|
inline |
The constructor copies the input matrix.
| mat | and symbolic block pattern |
| structure. |
Definition at line 228 of file block-ldlt.hpp.
|
inline |
Definition at line 237 of file block-ldlt.hpp.
|
inline |
Definition at line 256 of file block-ldlt.hpp.
|
protected |
Definition at line 44 of file block-ldlt.hxx.
|
inline |
Compute indices indicating where blocks start.
Definition at line 249 of file block-ldlt.hpp.
|
inline |
Definition at line 266 of file block-ldlt.hpp.
|
inline |
Definition at line 267 of file block-ldlt.hpp.
|
inline |
Analyze and factorize the block structure, if not done already.
Definition at line 35 of file block-ldlt.hxx.
|
inline |
Definition at line 272 of file block-ldlt.hpp.
| void proxsuite::nlp::linalg::BlockLDLT< Scalar >::setBlockPermutation | ( | isize const * | new_perm = nullptr | ) |
Calls updateBlockPermutationMatrix.
Definition at line 14 of file block-ldlt.hxx.
|
inline |
Definition at line 277 of file block-ldlt.hpp.
| BlockLDLT< Scalar > & proxsuite::nlp::linalg::BlockLDLT< Scalar >::findSparsifyingPermutation | ( | ) |
Find a sparsity-maximizing permutation of the blocks. This will also compute the symbolic factorization.
Definition at line 26 of file block-ldlt.hxx.
|
inline |
Definition at line 283 of file block-ldlt.hpp.
|
overridevirtual |
Implements proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 62 of file block-ldlt.hxx.
|
inline |
Definition at line 287 of file block-ldlt.hpp.
|
inline |
Definition at line 291 of file block-ldlt.hpp.
|
inlineoverridevirtual |
Implements proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 295 of file block-ldlt.hpp.
| bool proxsuite::nlp::linalg::BlockLDLT< Scalar >::solveInPlace | ( | Eigen::MatrixBase< Derived > & | b | ) | const |
Solve for the right-hand side in-place.
TODO: fixcaching this variable somewhere w/ update to m_structure
Definition at line 74 of file block-ldlt.hxx.
|
inline |
Definition at line 304 of file block-ldlt.hpp.
|
inlineoverridevirtual |
Reimplemented from proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 310 of file block-ldlt.hpp.
|
inline |
Definition at line 312 of file block-ldlt.hpp.
|
inlineoverridevirtual |
Sets the input matrix to mat, performs the permutation and runs the algorithm.
Implements proxsuite::nlp::linalg::ldlt_base< _Scalar >.
Definition at line 322 of file block-ldlt.hpp.
| proxsuite::nlp::linalg::BlockLDLT< _Scalar >::Scalar |
Definition at line 199 of file block-ldlt.hpp.
|
protected |
Definition at line 212 of file block-ldlt.hpp.
|
protected |
Definition at line 213 of file block-ldlt.hpp.
|
protected |
Definition at line 214 of file block-ldlt.hpp.
|
protected |
Definition at line 215 of file block-ldlt.hpp.
|
protected |
Definition at line 218 of file block-ldlt.hpp.
|
protected |
Definition at line 219 of file block-ldlt.hpp.
|
protected |
Definition at line 220 of file block-ldlt.hpp.
|
protected |
Definition at line 221 of file block-ldlt.hpp.
|
protected |
Definition at line 48 of file ldlt-base.hpp.
|
protected |
Definition at line 49 of file ldlt-base.hpp.