commit | 1da72ac39e098f477601953784ee3467a593fe56 | [log] [tgz] |
---|---|---|
author | Sameer Agarwal <sameeragarwal@google.com> | Mon Aug 08 11:42:49 2022 -0700 |
committer | Sameer Agarwal <sameeragarwal@google.com> | Tue Aug 09 13:33:08 2022 +0000 |
tree | ca524f2664f250e5c994663840d386ea09633601 | |
parent | f62dccdb37f2104856c621bce7fd79e7c92d5a9b [diff] |
Refactor ConjugateGradientsSolver 1. Convert it from a class to a template function. Where the template parameter is "DenseVectorType". This allows us to have a single implementation of Conjugate Gradients without worrying about where the matrix and the vectors are stored or what their internal representation is. For the case of CPU based vectors, we abstract operations on Eigen vectors using eigen_vector_ops. 2. Introduce ConjugateGradientsLinearOperator which is templated on DenseVectorType. It is the matrix vector multiplication abstraction. 3. Port the tests and all usages of ConjugateGradientsSolver to this new implementation. 4. Introduce Eigen::Vector based RightMultiply and LeftMultiply methods into LinearOperator which by default delete to the bare pointer based interfaces. 5. Add an identity preconditioner. These changes are being made in preparation for adding a CUDA based CGNR solver. Change-Id: I9da36dc6c131856dd1a4aa7e645aaf12d25dd79b
Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. Ceres Solver can solve two kinds of problems.
Please see ceres-solver.org for more information.