Simplify integration tests. 1. Remove SolverConfig, this was a wrapper around Solver::Options. As we experiment with more Solver::Options, it became a hurdle. 2. Updated generate_bundle_adjustment_tests.py to use Solver::Options directly. 3. Update system_test to use Solver::Options. NOTE: generate_bundle_adjustment_tests.py changes are a bit gunky, but I tried to minimize the changes in this CL as I am going to introduce new test cases and that is going to significantly change this file. Change-Id: I34a2f51824b04ef368a5bbe54fbd7b281381909e
diff --git a/internal/ceres/generate_bundle_adjustment_tests.py b/internal/ceres/generate_bundle_adjustment_tests.py index dcac22a..b36cf66 100644 --- a/internal/ceres/generate_bundle_adjustment_tests.py +++ b/internal/ceres/generate_bundle_adjustment_tests.py
@@ -37,7 +37,9 @@ # Product of ORDERINGS, THREAD_CONFIGS, and SOLVER_CONFIGS is the full set of # tests to generate. ORDERINGS = ["kAutomaticOrdering", "kUserOrdering"] -THREAD_CONFIGS = ["SolverConfig", "ThreadedSolverConfig"] +SINGLE_THREADED = "1" +MULTI_THREADED = "4" +THREAD_CONFIGS = [SINGLE_THREADED, MULTI_THREADED] SOLVER_CONFIGS = [ # Linear solver Sparse backend Preconditioner @@ -70,8 +72,6 @@ CLUSTER_TRIDIAGONAL='clusttri', kAutomaticOrdering='auto', kUserOrdering='user', - SolverConfig='', # Omit references to threads for single threaded tests. - ThreadedSolverConfig='threads', ) COPYRIGHT_HEADER = ( @@ -121,12 +121,15 @@ TEST_F(BundleAdjustmentTest, %(test_class_name)s) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - %(thread_config)s( - %(linear_solver)s, - %(sparse_backend)s, - %(ordering)s, - %(preconditioner)s)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = %(num_threads)s; + options.linear_solver_type = %(linear_solver)s; + options.sparse_linear_algebra_library_type = %(sparse_backend)s; + options.preconditioner_type = %(preconditioner)s; + if (%(ordering)s) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal @@ -134,7 +137,6 @@ %(preprocessor_conditions_end)s """) - def camelcasify(token): """Convert capitalized underscore tokens to camel case""" return ''.join([x.lower().capitalize() for x in token.split('_')]) @@ -163,7 +165,7 @@ camelcasify(sparse_backend_tag), camelcasify(preconditioner_tag), ordering[1:], # Strip 'k' - 'Threads' if thread_config == 'ThreadedSolverConfig' else ''])) + 'Threads' if thread_config == MULTI_THREADED else ''])) # Initial template parameters (augmented more below). template_parameters = dict( @@ -171,7 +173,7 @@ sparse_backend=sparse_backend, preconditioner=preconditioner, ordering=ordering, - thread_config=thread_config, + num_threads=thread_config, test_class_name=test_class_name) # Accumulate appropriate #ifdef/#ifndefs for the solver's sparse backend. @@ -188,7 +190,7 @@ preprocessor_conditions_end.insert(0, '#endif // CERES_USE_EIGEN_SPARSE') # Accumulate appropriate #ifdef/#ifndefs for threading conditions. - if thread_config == 'ThreadedSolverConfig': + if thread_config == MULTI_THREADED: preprocessor_conditions_begin.append('#ifndef CERES_NO_THREADS') preprocessor_conditions_end.insert(0, '#endif // CERES_NO_THREADS') @@ -210,11 +212,13 @@ linear_solver, sparse_backend_tag, preconditioner_tag, - ordering, - thread_config] + ordering] if FILENAME_SHORTENING_MAP.get(x)) + if (thread_config == MULTI_THREADED): + filename_tag += '_threads' + filename = ('generated_bundle_adjustment_tests/ba_%s_test.cc' % - filename_tag.lower()) + filename_tag.lower()) with open(filename, 'w') as fd: fd.write(BUNDLE_ADJUSTMENT_TEST_TEMPLATE % template_parameters) @@ -245,4 +249,3 @@ for generated_file in generated_files: fd.write('ceres_test(%s)\n' % generated_file.split('/')[1].replace('_test.cc', '')) -
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc index 6c815da..2d3ea81 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
@@ -42,12 +42,15 @@ TEST_F(BundleAdjustmentTest, DenseSchur_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - DENSE_SCHUR, - NO_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = DENSE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc index 62032fe..311bceb 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, DenseSchur_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - DENSE_SCHUR, - NO_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = DENSE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc index 52e85f2..930f5f0 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
@@ -42,12 +42,15 @@ TEST_F(BundleAdjustmentTest, DenseSchur_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - DENSE_SCHUR, - NO_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = DENSE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc index 5b58564..cf8139a 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, DenseSchur_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - DENSE_SCHUR, - NO_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = DENSE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc index 2e85333..8c3b886 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
@@ -42,12 +42,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_Jacobi_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kAutomaticOrdering, - JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = JACOBI; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc index 3bfd7ba..4585201 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_Jacobi_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kAutomaticOrdering, - JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = JACOBI; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc index 2a20911..9b864e4 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
@@ -42,12 +42,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_Jacobi_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kUserOrdering, - JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = JACOBI; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc index 47bbaf5..6266bea 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_Jacobi_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kUserOrdering, - JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = JACOBI; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc index 6f0dcea..bc40f5d 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
@@ -42,12 +42,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SchurJacobi_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kAutomaticOrdering, - SCHUR_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = SCHUR_JACOBI; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc index 987d034..c55fa62 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SchurJacobi_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kAutomaticOrdering, - SCHUR_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = SCHUR_JACOBI; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc index 5f41d6c..cc7f334 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
@@ -42,12 +42,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SchurJacobi_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kUserOrdering, - SCHUR_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = SCHUR_JACOBI; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc index df14114..b8cd166 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SchurJacobi_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - NO_SPARSE, - kUserOrdering, - SCHUR_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = SCHUR_JACOBI; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc index ff064c3..cdb4fd0 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kAutomaticOrdering, - CLUSTER_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_JACOBI; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc index ca6c275..15ed6b1 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kAutomaticOrdering, - CLUSTER_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_JACOBI; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc index f425b51..dda9d62 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kUserOrdering, - CLUSTER_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_JACOBI; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc index 0d62b91..6ca9f7b 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kUserOrdering, - CLUSTER_JACOBI)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_JACOBI; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc index a598cca..6a40ef8 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kAutomaticOrdering, - CLUSTER_TRIDIAGONAL)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_TRIDIAGONAL; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc index d296e3b..6bd66bc 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kAutomaticOrdering, - CLUSTER_TRIDIAGONAL)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_TRIDIAGONAL; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc index 07776c1..ae12ce9 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kUserOrdering, - CLUSTER_TRIDIAGONAL)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_TRIDIAGONAL; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc index b428ad7..727d908 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - ITERATIVE_SCHUR, - SUITE_SPARSE, - kUserOrdering, - CLUSTER_TRIDIAGONAL)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = CLUSTER_TRIDIAGONAL; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc index 0684c65..3d3b642 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_CxSparse_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_NORMAL_CHOLESKY, - CX_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc index e810574..ae7f543 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_CxSparse_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_NORMAL_CHOLESKY, - CX_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc index 262c913..9f3d752 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_CxSparse_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_NORMAL_CHOLESKY, - CX_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc index 9ad0f20..366169c 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_CxSparse_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_NORMAL_CHOLESKY, - CX_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc index 63713fd..700bb50 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_EigenSparse_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_NORMAL_CHOLESKY, - EIGEN_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc index 02e9c74..e363297 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_EigenSparse_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_NORMAL_CHOLESKY, - EIGEN_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc index 3717c44..dd423f3 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_EigenSparse_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_NORMAL_CHOLESKY, - EIGEN_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc index 5f99a33..27dc821 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_EigenSparse_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_NORMAL_CHOLESKY, - EIGEN_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc index fa20b68..7155bd9 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_SuiteSparse_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_NORMAL_CHOLESKY, - SUITE_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc index 6963483..8991cca 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_SuiteSparse_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_NORMAL_CHOLESKY, - SUITE_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc index ab8615f..e4375c1 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_SuiteSparse_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_NORMAL_CHOLESKY, - SUITE_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc index 4833dbd..3c91c72 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseNormalCholesky_SuiteSparse_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_NORMAL_CHOLESKY, - SUITE_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc index 0318f95..d9b10e4 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_CxSparse_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_SCHUR, - CX_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc index e8657bb..f7dbc45 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_CxSparse_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_SCHUR, - CX_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc index 40943b3..27a673d 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_CxSparse_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_SCHUR, - CX_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc index b95c13e..9e5db38 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_CxSparse_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_SCHUR, - CX_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = CX_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc index 74b9fe0..bc8d66b 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_EigenSparse_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_SCHUR, - EIGEN_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc index 8f6279c..6910d87 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_EigenSparse_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_SCHUR, - EIGEN_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc index 3643e3d..d626481 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_EigenSparse_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_SCHUR, - EIGEN_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc index 8ae2343..218c35f 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_EigenSparse_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_SCHUR, - EIGEN_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc index 739c927..67fff21 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_SuiteSparse_AutomaticOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_SCHUR, - SUITE_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc index 3935811..f0dccb7 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_SuiteSparse_AutomaticOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_SCHUR, - SUITE_SPARSE, - kAutomaticOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kAutomaticOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc index 28f9fa1..eb67b49 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
@@ -44,12 +44,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_SuiteSparse_UserOrdering) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig( - SPARSE_SCHUR, - SUITE_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 1; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc index 1334ff7..c13cc4f 100644 --- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc +++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
@@ -45,12 +45,15 @@ TEST_F(BundleAdjustmentTest, SparseSchur_SuiteSparse_UserOrdering_Threads) { // NOLINT - RunSolverForConfigAndExpectResidualsMatch( - ThreadedSolverConfig( - SPARSE_SCHUR, - SUITE_SPARSE, - kUserOrdering, - IDENTITY)); + Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options(); + options.num_threads = 4; + options.linear_solver_type = SPARSE_SCHUR; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + options.preconditioner_type = IDENTITY; + if (kUserOrdering) { + options.linear_solver_ordering.reset(); + } + RunSolverForConfigAndExpectResidualsMatch(options); } } // namespace internal
diff --git a/internal/ceres/system_test.cc b/internal/ceres/system_test.cc index 7f26a98..5fb520f 100644 --- a/internal/ceres/system_test.cc +++ b/internal/ceres/system_test.cc
@@ -144,46 +144,57 @@ double PowellsFunction::kResidualTolerance = 1e-8; typedef SystemTest<PowellsFunction> PowellTest; -const bool kAutomaticOrdering = true; TEST_F(PowellTest, DenseQR) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(DENSE_QR, NO_SPARSE)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = DENSE_QR; + RunSolverForConfigAndExpectResidualsMatch(options); } TEST_F(PowellTest, DenseNormalCholesky) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(DENSE_NORMAL_CHOLESKY)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = DENSE_NORMAL_CHOLESKY; + RunSolverForConfigAndExpectResidualsMatch(options); } TEST_F(PowellTest, DenseSchur) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(DENSE_SCHUR)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = DENSE_SCHUR; + RunSolverForConfigAndExpectResidualsMatch(options); } TEST_F(PowellTest, IterativeSchurWithJacobi) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(ITERATIVE_SCHUR, NO_SPARSE, kAutomaticOrdering, JACOBI)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = ITERATIVE_SCHUR; + options.sparse_linear_algebra_library_type = NO_SPARSE; + options.preconditioner_type = JACOBI; + RunSolverForConfigAndExpectResidualsMatch(options); } #ifndef CERES_NO_SUITESPARSE TEST_F(PowellTest, SparseNormalCholeskyUsingSuiteSparse) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(SPARSE_NORMAL_CHOLESKY, SUITE_SPARSE, kAutomaticOrdering)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = SUITE_SPARSE; + RunSolverForConfigAndExpectResidualsMatch(options); } #endif // CERES_NO_SUITESPARSE #ifndef CERES_NO_CXSPARSE TEST_F(PowellTest, SparseNormalCholeskyUsingCXSparse) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(SPARSE_NORMAL_CHOLESKY, CX_SPARSE, kAutomaticOrdering)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = CX_SPARSE; + RunSolverForConfigAndExpectResidualsMatch(options); } #endif // CERES_NO_CXSPARSE #ifdef CERES_USE_EIGEN_SPARSE TEST_F(PowellTest, SparseNormalCholeskyUsingEigenSparse) { - RunSolverForConfigAndExpectResidualsMatch( - SolverConfig(SPARSE_NORMAL_CHOLESKY, EIGEN_SPARSE, kAutomaticOrdering)); + Solver::Options options = *PowellsFunction().mutable_solver_options(); + options.linear_solver_type = SPARSE_NORMAL_CHOLESKY; + options.sparse_linear_algebra_library_type = EIGEN_SPARSE; + RunSolverForConfigAndExpectResidualsMatch(options); } #endif // CERES_USE_EIGEN_SPARSE
diff --git a/internal/ceres/test_util.cc b/internal/ceres/test_util.cc index 3866eb5..5156856 100644 --- a/internal/ceres/test_util.cc +++ b/internal/ceres/test_util.cc
@@ -129,17 +129,15 @@ filename); } -SolverConfig ThreadedSolverConfig( - LinearSolverType linear_solver_type, - SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type, - bool use_automatic_ordering, - PreconditionerType preconditioner_type) { - const int kNumThreads = 4; - return SolverConfig(linear_solver_type, - sparse_linear_algebra_library_type, - use_automatic_ordering, - preconditioner_type, - kNumThreads); +std::string ToString(const Solver::Options& options) { + return StringPrintf( + "(%s, %s, %s, %s, %d)", + LinearSolverTypeToString(options.linear_solver_type), + SparseLinearAlgebraLibraryTypeToString( + options.sparse_linear_algebra_library_type), + options.linear_solver_ordering? "USER": "AUTOMATIC", + PreconditionerTypeToString(options.preconditioner_type), + options.num_threads); } } // namespace internal
diff --git a/internal/ceres/test_util.h b/internal/ceres/test_util.h index f8bfa3a..c4c17d5 100644 --- a/internal/ceres/test_util.h +++ b/internal/ceres/test_util.h
@@ -69,57 +69,7 @@ // local build/testing environment. std::string TestFileAbsolutePath(const std::string& filename); -// Struct used for configuring the solver. Used by end-to-end tests. -struct SolverConfig { - SolverConfig( - LinearSolverType linear_solver_type, - SparseLinearAlgebraLibraryType - sparse_linear_algebra_library_type = NO_SPARSE, - bool use_automatic_ordering = true, - PreconditionerType preconditioner_type = IDENTITY, - int num_threads = 1) - : linear_solver_type(linear_solver_type), - sparse_linear_algebra_library_type(sparse_linear_algebra_library_type), - use_automatic_ordering(use_automatic_ordering), - preconditioner_type(preconditioner_type), - num_threads(num_threads) { - } - - std::string ToString() const { - return StringPrintf( - "(%s, %s, %s, %s, %d)", - LinearSolverTypeToString(linear_solver_type), - SparseLinearAlgebraLibraryTypeToString( - sparse_linear_algebra_library_type), - use_automatic_ordering ? "AUTOMATIC" : "USER", - PreconditionerTypeToString(preconditioner_type), - num_threads); - } - - void UpdateOptions(Solver::Options* options) const { - options->linear_solver_type = linear_solver_type; - options->sparse_linear_algebra_library_type = - sparse_linear_algebra_library_type; - options->preconditioner_type = preconditioner_type; - options->num_threads = num_threads; - if (use_automatic_ordering) { - options->linear_solver_ordering.reset(); - } - } - - LinearSolverType linear_solver_type; - SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type; - bool use_automatic_ordering; - PreconditionerType preconditioner_type; - int num_threads; -}; - -SolverConfig ThreadedSolverConfig( - LinearSolverType linear_solver_type, - SparseLinearAlgebraLibraryType - sparse_linear_algebra_library_type = NO_SPARSE, - bool use_automatic_ordering = true, - PreconditionerType preconditioner_type = IDENTITY); +std::string ToString(const Solver::Options& options); // A templated test fixture, that is used for testing Ceres end to end // by computing a solution to the problem for a given solver @@ -127,7 +77,7 @@ // // It is assumed that the SystemTestProblem has an Solver::Options // struct that contains the reference Solver configuration. -template <class SystemTestProblem> +template <typename SystemTestProblem> class SystemTest : public::testing::Test { protected: virtual void SetUp() { @@ -138,15 +88,13 @@ &expected_final_residuals_); } - void RunSolverForConfigAndExpectResidualsMatch(const SolverConfig& config) { + void RunSolverForConfigAndExpectResidualsMatch(const Solver::Options& options) { LOG(INFO) << "Running solver configuration: " - << config.ToString(); - + << ToString(options); SystemTestProblem system_test_problem; - config.UpdateOptions(system_test_problem.mutable_solver_options()); std::vector<double> final_residuals; SolveAndEvaluateFinalResiduals( - *system_test_problem.mutable_solver_options(), + options, system_test_problem.mutable_problem(), &final_residuals);