[Bf-blender-cvs] [c1004b1] master: Libmv: Update Ceres to latest upstream

Sergey Sharybin noreply at git.blender.org
Thu Oct 9 11:40:46 CEST 2014


Commit: c1004b1b77ee6de90afedbccf4ce6f54c056ec5b
Author: Sergey Sharybin
Date:   Thu Oct 9 11:29:20 2014 +0200
Branches: master
https://developer.blender.org/rBc1004b1b77ee6de90afedbccf4ce6f54c056ec5b

Libmv: Update Ceres to latest upstream

just to be sure we're dealing with the latest git version when troubleshooting
one annoying OSX issue..

===================================================================

M	extern/libmv/third_party/ceres/ChangeLog
M	extern/libmv/third_party/ceres/bundle.sh
M	extern/libmv/third_party/ceres/include/ceres/gradient_problem_solver.h
M	extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc

===================================================================

diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog
index 6f92154..b4f78ee 100644
--- a/extern/libmv/third_party/ceres/ChangeLog
+++ b/extern/libmv/third_party/ceres/ChangeLog
@@ -1,3 +1,78 @@
+commit 0435246de5f45e69b2c97d244ed61bedd340215a
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Wed Oct 8 18:12:53 2014 -0700
+
+    Add seene to users.rst
+    
+    Change-Id: If40726775a3d4b234b6e10517fe9943d122a3384
+
+commit fdf32b315f39553639f0becf078ad4eec763a10e
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Wed Oct 8 16:04:32 2014 -0700
+
+    Fix some errant tabs.
+    
+    Change-Id: Iaf1906eaade49467ba282656cf0a10879d258b1f
+
+commit 6768b3586a027bb850c0a50e2a27380f5d80142a
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Wed Oct 8 12:48:16 2014 -0700
+
+    Minor cleanups in preparation for a release.
+    
+    1. Fix the release script to ignore the version.h checking.
+    2. Fix some ceres documentation formatting errors.
+    
+    Change-Id: I3fd6b85e771b242f463d6a36c3efd8d691f9242f
+
+commit 7b6bd1cd31aa0b8cb7fb97600c1b9999846e3152
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Thu Oct 2 16:16:26 2014 -0700
+
+    Documentation update.
+    
+    1. Complete restructuring of the documentation to account for
+       GradientProblemSolver.
+    2. Update the version history to account for changes since 1.9.0.
+    3. Add links and document the various examples that ship with ceres.
+    4. Documentation for GradientProblem GradientProblemSolver.
+    
+    Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27
+
+commit b7d321f505e936b6c09aeb43ae3f7b1252388a95
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Fri Oct 3 15:47:59 2014 -0700
+
+    Relax the warning/error handing in GCC.
+    
+    Thanks to Matthew Woehlke for suggesting this.
+    
+    Change-Id: Iae754465c086b0841a7816df1a36781371d0dc9a
+
+commit 94c6e7d27b5d48d81ab54ed9cdcbc55c3c099311
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Wed Oct 1 15:55:13 2014 -0700
+
+    Improve multithreading when using inner iterations.
+    
+    Inner iterations by default would use problems where the evaluator
+    was configured to use exactly one thread for doing the evaluation.
+    This is fine when there are multiple inner iteration problems
+    being executed concurrently, but every now and then there are
+    problem decompositions where there is just one parameter block
+    in the current independent set and it touches every single
+    residual block. In such cases it is essential that the evaluator
+    be configured to use multiple threads.
+    
+    We now pay attention to the size of the independent set and
+    dynamically configure the number of threads being used by the
+    outer loop and the evaluator loop.
+    
+    Thanks to William Rucklidge for reporting this issue and providing
+    a test problem to debug.
+    
+    Change-Id: Iaff9a4ab6d2658cf7b61ea213575d23aab604e3b
+
 commit 9e11cd16d09403b9270e621e839d5948b6a74b8d
 Author: Sameer Agarwal <sameeragarwal at google.com>
 Date:   Mon Sep 29 14:27:58 2014 -0700
@@ -596,76 +671,3 @@ Date:   Thu Jun 5 21:30:13 2014 -0700
        solve.
     
     Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a
-
-commit bd90384226a7f8629467f72fc410a9e8086a2dff
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Mon Aug 18 11:27:06 2014 -0700
-
-    Lint comments from William Rucklidge.
-    
-    Also some minor refactoring of the trust_region_preprocessor_test.cc
-    
-    Change-Id: Ica28002254c95722faf93a7ef35bf3deab557f0b
-
-commit 3150321db4a0cb1bb4894961a030d95dacae3591
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Tue Aug 12 22:46:51 2014 -0700
-
-    Preprocessor for the LineSearchMinimizer.
-    
-    Change-Id: Ieb5dfe1c0b96ef323c1130edd0c3a8a8b2c644cc
-
-commit f7da411ef0d0067e269629887d64cdb769368800
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Thu Aug 7 14:30:33 2014 -0700
-
-    Preprocessor for the TrustRegionMinimizer.
-    
-    1. Base class for preprocessors.
-    2. A preprocessor for problems that will be solved using
-       the trust region minimizer.
-    3. Added sanity tests to the program reordering options
-       for Schur type linear solvers.
-    4. Tests for the TrustRegionPreprocessor.
-    
-    Change-Id: I88cd926f0053bbbf2bd6b11e03ec55b8bf473cf1
-
-commit 54893ba523106e38ab06eb72fb5d8748685c7797
-Author: Alex Stewart <alexs.mac at gmail.com>
-Date:   Mon Aug 11 19:04:18 2014 +0100
-
-    Add missing #include of <limits> for loss functions.
-    
-    Change-Id: Id632451429e03031a1533a9be795270debc70706
-
-commit 4a2a888905fd1ce7203e45df15762d52740bb240
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Thu Aug 7 11:48:03 2014 -0700
-
-    Change ownership of pointers in Minimizer::Options.
-    
-    This is a intermediate change to clean things up
-    in preparation for a broader refactoring of the SolverImpl.
-    
-    Essentially we are replacing raw pointers in Minimizer::Options
-    with shared_ptr objects. For now this only makes things a bit
-    more complicated looking inside solver_impl.cc, but going
-    forward this will lead to considerable simplifications in
-    tracking ownership of various pointers.
-    
-    Change-Id: I21db8fc6763c29b0d15e834d7c968a0f514042a0
-
-commit 0d4e3bd664d442b700fee2895c7a8ac37717dc08
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Thu Aug 7 12:19:10 2014 -0700
-
-    GradientCheckingProblem's parameter blocks are initialized correctly.
-    
-    Ensure that when a new problem object is constructed for validing
-    gradients, the parameter blocks have their data pointers point to
-    the user's parameter blocks.
-    
-    We used to do this inside solver_impl.cc, but doing this at
-    construction is the right thing to do.
-    
-    Change-Id: I3bfdc89bb0027c8d67cde937e8f2fa385d89c30c
diff --git a/extern/libmv/third_party/ceres/bundle.sh b/extern/libmv/third_party/ceres/bundle.sh
index 51a463a..14ce2c5 100755
--- a/extern/libmv/third_party/ceres/bundle.sh
+++ b/extern/libmv/third_party/ceres/bundle.sh
@@ -143,7 +143,7 @@ if(WITH_LIBMV_SCHUR_SPECIALIZATIONS)
 ${generated_sources}
 	)
 else()
-	add_definitions-DCERES_RESTRICT_SCHUR_SPECIALIZATION)
+	add_definitions(-DCERES_RESTRICT_SCHUR_SPECIALIZATION)
 endif()
 
 if(WIN32)
diff --git a/extern/libmv/third_party/ceres/include/ceres/gradient_problem_solver.h b/extern/libmv/third_party/ceres/include/ceres/gradient_problem_solver.h
index 484d88e..db706f7 100644
--- a/extern/libmv/third_party/ceres/include/ceres/gradient_problem_solver.h
+++ b/extern/libmv/third_party/ceres/include/ceres/gradient_problem_solver.h
@@ -72,7 +72,6 @@ class CERES_EXPORT GradientProblemSolver {
       max_line_search_step_expansion = 10.0;
       max_num_iterations = 50;
       max_solver_time_in_seconds = 1e9;
-      num_threads = 1;
       function_tolerance = 1e-6;
       gradient_tolerance = 1e-10;
       logging_type = PER_MINIMIZER_ITERATION;
@@ -224,10 +223,6 @@ class CERES_EXPORT GradientProblemSolver {
     // Maximum time for which the minimizer should run for.
     double max_solver_time_in_seconds;
 
-    // Number of threads used by Ceres for evaluating the cost and
-    // jacobians.
-    int num_threads;
-
     // Minimizer terminates when
     //
     //   (new_cost - old_cost) < function_tolerance * old_cost;
@@ -251,13 +246,6 @@ class CERES_EXPORT GradientProblemSolver {
     // is sent to STDOUT.
     bool minimizer_progress_to_stdout;
 
-    // If true, the user's parameter blocks are updated at the end of
-    // every Minimizer iteration, otherwise they are updated when the
-    // Minimizer terminates. This is useful if, for example, the user
-    // wishes to visualize the state of the optimization every
-    // iteration.
-    bool update_state_every_iteration;
-
     // Callbacks that are executed at the end of each iteration of the
     // Minimizer. An iteration may terminate midway, either due to
     // numerical failures or because one of the convergence tests has
@@ -309,10 +297,10 @@ class CERES_EXPORT GradientProblemSolver {
     // Sum total of all time spent inside Ceres when Solve is called.
     double total_time_in_seconds;
 
-    // Time (in seconds) spent evaluating the residual vector.
+    // Time (in seconds) spent evaluating the cost.
     double cost_evaluation_time_in_seconds;
 
-    // Time (in seconds) spent evaluating the jacobian matrix.
+    // Time (in seconds) spent evaluating the gradient.
     double gradient_evaluation_time_in_seconds;
 
     // Number of parameters in the probem.
diff --git a/extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc b/extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc
index 1d55458..0d8adee 100644
--- a/extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc
+++ b/extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc
@@ -1,5 +1,5 @@
 // Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2012 Google Inc. All rights reserved.
+// Copyright 2014 Google Inc. All rights reserved.
 // http://code.google.com/p/ceres-solver/
 //
 // Redistribution and use in source and binary forms, with or without
@@ -140,15 +140,24 @@ void CoordinateDescentMinimizer::Minimize(
   }
 
   for (int i = 0; i < independent_set_offsets_.size() - 1; ++i) {
-    // No point paying the price for an OpemMP call if the set if of
+    const int num_problems =
+        independent_set_offsets_[i + 1] - independent_set_offsets_[i];
+    // No point paying the price for an OpemMP call if the set is of
     // size zero.
-    if (independent_set_offsets_[i] ==  independent_set_offsets_[i + 1]) {
+    if (num_problems == 0) {
       continue;
     }
 
+#ifdef CERES_USE_OPENMP
+    const int num_inner_iteration_threads =
+        min(options.num_threads, num_problems);
+    evaluator_options_.num_threads =
+        max(1, options.num_threads / num_inner_iteration_threads);
+
     // The parameter blocks in each independent set can be optimized
     // in parallel, since they do not

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list