mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
Multiple sparse linear algebra backends.
1. Added support for CXSparse - SparseNormalCholesky and SchurComplementSolver support SuiteSparse and CXSparse now. I am not sure I will add suport for visibility based preconditioning using CXSparse. Its not a high priority. 2. New enum SparseLinearAlgebraLibraryType which allows the user to indicate which sparse linear algebra library should be used. 3. Updated tests for SolverImpl and system_test. 4. Build system changes to automatically detect CXSparse and link to it by default -- just like SuiteSparse. 5. Minor bug fixes dealing in the cmake files and VBP. 6. Changed the order of the system test. 7. Deduped the unsymmetric linear solver test. Change-Id: I33252a103c87b722ecb7ed7b5f0ae7fd91249244
This commit is contained in:
+17
-4
@@ -67,11 +67,18 @@ class Solver {
|
||||
function_tolerance = 1e-6;
|
||||
gradient_tolerance = 1e-10;
|
||||
parameter_tolerance = 1e-8;
|
||||
#ifndef CERES_NO_SUITESPARSE
|
||||
linear_solver_type = SPARSE_NORMAL_CHOLESKY;
|
||||
#else
|
||||
|
||||
#if defined(CERES_NO_SUITESPARSE) && defined(CERES_NO_CXSPARSE)
|
||||
linear_solver_type = DENSE_QR;
|
||||
#endif // CERES_NO_SUITESPARSE
|
||||
#else
|
||||
linear_solver_type = SPARSE_NORMAL_CHOLESKY;
|
||||
#endif
|
||||
|
||||
sparse_linear_algebra_library = SUITE_SPARSE;
|
||||
#if defined(CERES_NO_SUITESPARSE) && !defined(CERES_NO_CXSPARSE)
|
||||
sparse_linear_algebra_library = CX_SPARSE;
|
||||
#endif
|
||||
|
||||
preconditioner_type = JACOBI;
|
||||
num_linear_solver_threads = 1;
|
||||
num_eliminate_blocks = 0;
|
||||
@@ -154,6 +161,12 @@ class Solver {
|
||||
// Type of preconditioner to use with the iterative linear solvers.
|
||||
PreconditionerType preconditioner_type;
|
||||
|
||||
// Ceres supports using multiple sparse linear algebra libraries
|
||||
// for sparse matrix ordering and factorizations. Currently,
|
||||
// SUITE_SPARSE and CX_SPARSE are the valid choices, depending on
|
||||
// whether they are linked into Ceres at build time.
|
||||
SparseLinearAlgebraLibraryType sparse_linear_algebra_library;
|
||||
|
||||
// Number of threads used by Ceres to solve the Newton
|
||||
// step. Currently only the SPARSE_SCHUR solver is capable of
|
||||
// using this setting.
|
||||
|
||||
Reference in New Issue
Block a user