[Bf-blender-cvs] [a6ceb4a] master: Re-bundle new Ceres library

Sergey Sharybin noreply at git.blender.org
Mon Jan 13 14:17:38 CET 2014


Commit: a6ceb4a498dd74e855bc8a5a47120d9a1b8f879d
Author: Sergey Sharybin
Date:   Mon Jan 13 19:11:08 2014 +0600
https://developer.blender.org/rBa6ceb4a498dd74e855bc8a5a47120d9a1b8f879d

Re-bundle new Ceres library

- Fixes some harmless issues (in cases blender doesn't use Ceres yet)
- Fixes some compilation warnings

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

M	extern/libmv/third_party/ceres/ChangeLog
M	extern/libmv/third_party/ceres/include/ceres/cost_function.h
M	extern/libmv/third_party/ceres/include/ceres/cost_function_to_functor.h
M	extern/libmv/third_party/ceres/include/ceres/dynamic_numeric_diff_cost_function.h
M	extern/libmv/third_party/ceres/include/ceres/gradient_checker.h
M	extern/libmv/third_party/ceres/internal/ceres/block_structure.h
M	extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.cc
M	extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h
M	extern/libmv/third_party/ceres/internal/ceres/gradient_checking_cost_function.cc
M	extern/libmv/third_party/ceres/internal/ceres/low_rank_inverse_hessian.cc
M	extern/libmv/third_party/ceres/internal/ceres/low_rank_inverse_hessian.h
M	extern/libmv/third_party/ceres/internal/ceres/minimizer.h
M	extern/libmv/third_party/ceres/internal/ceres/mutex.h
M	extern/libmv/third_party/ceres/internal/ceres/polynomial.cc
M	extern/libmv/third_party/ceres/internal/ceres/problem_impl.cc
M	extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc
M	extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.h

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

diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog
index 854712f..e800155 100644
--- a/extern/libmv/third_party/ceres/ChangeLog
+++ b/extern/libmv/third_party/ceres/ChangeLog
@@ -1,3 +1,136 @@
+commit 80a53eebfd28bfc032cedbf7852d5c56eb1d5af5
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Thu Jan 9 12:40:54 2014 -0800
+
+    Faster LBFGS.
+    
+    1. Use column major storage for the various matrices used by
+    LowRankInverseHessian. Since all the operations are on columns.
+    
+    2. Use a circular buffer to keep track of history of the LBFGS updates
+    so that an update does not require copying the entire history. This
+    makes the updates O(1) rather than O(rank).
+    
+    The implementation has been checked against the denoising code
+    where it gives numerically identical results. The overhead of the
+    LBFGS code is now near negligible as compared to the gradient evaluation.
+    
+    On a sample problem
+    
+    before 1050ms after: 630ms
+    
+    Change-Id: I537ba506ac35fc4960b304c10d923a8dea2ae031
+
+commit f55780063620e7a3dcfe7e018d6488bf6a5b29da
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Wed Jan 8 10:43:31 2014 -0800
+
+    Reduce logging verbosity.
+    
+    When user specifies Solver::Options::logging_type = SILENT,
+    ensure that the minimizer does not log anything.
+    
+    Change-Id: I94e34dae504881ab36d4a66e6adb7a19a227363e
+
+commit 85561eee951c91e578984c6d3eecf0073acabb64
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Tue Jan 7 22:22:14 2014 -0800
+
+    Use int32 for parameter block sizes.
+    
+    CostFunction now uses int32 instead of int16
+    to store the size of its parameter blocks.
+    
+    This is an API breaking change.
+    
+    Change-Id: I032ea583bc7ea4b3009be25d23a3be143749c73e
+
+commit a7fda3317b1a97702750bea96ac3ef3d1a2afb49
+Author: Alex Stewart <alexs.mac at gmail.com>
+Date:   Mon Jan 6 10:25:42 2014 +0000
+
+    Fix typos in error messages in line search config checks.
+    
+    Change-Id: I3ae2ae58328e996598e3e32c12869d2b10109ef7
+
+commit f695322eb8c5ff118f0d27f68d46d557338e5db1
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Sat Jan 4 14:28:23 2014 -0800
+
+    Remove a compilation warning on windows.
+    
+    Only define NOMINMAX if it is not already defined.
+    
+    Thanks to Pierre Moulon for this fix.
+    
+    Change-Id: Ia5dc0f5ff2afe10e4c7e97a57f54297d82052b21
+
+commit b811041d78d80518db153ef3030bcbdbaf80df8d
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Thu Jan 2 15:19:17 2014 +0600
+
+    Code cleanup: fix no previous declaration warnings
+    
+    Moved some internally used functions into an anonymous namespace.
+    
+    Change-Id: Ie82df61b0608abac79ccc9f7b14e7f7e04ab733d
+
+commit f14f6bf9b7d3fbd2cab939cf4ad615b317e93c83
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Thu Dec 26 09:50:45 2013 -0800
+
+    Speed up SPARSE_NORMAL_CHOLESKY when using CX_SPARSE.
+    
+    When using sparse cholesky factorization to solve the linear
+    least squares problem:
+    
+      Ax = b
+    
+    There are two sources of computational complexity.
+    
+    1. Computing H = A'A
+    2. Computing the sparse Cholesky factorization of H.
+    
+    Doing 1. using CX_SPARSE is particularly expensive, as it uses
+    a generic cs_multiply function which computes the structure of
+    the matrix H everytime, reallocates memory and does not take
+    advantage of the fact that the matrix being computed is a symmetric
+    outer product.
+    
+    This change adds a custom symmetric outer product algorithm for
+    CompressedRowSparseMatrix.
+    
+    It has a symbolic phase, where it computes the sparsity structure
+    of the output matrix and a "program" which allows the actual
+    multiplication routine to determine exactly which entry in the
+    values array each term in the product contributes to.
+    
+    With these two bits of information, the outer product H = A'A
+    can be computed extremely fast without any reasoning about
+    the structure of H.
+    
+    Further gains in efficiency are made by exploiting the block
+    structure of A.
+    
+    With this change, SPARSE_NORMAL_CHOLESKY with CX_SPARSE as the
+    backend results in > 300% speedup for some problems.
+    
+    The symbolic analysis phase of the solver is a bit more expensive
+    now but the increased cost is made up in 3-4 iterations.
+    
+    Change-Id: I5e4a72b4d03ba41b378a2634330bc22b299c0f12
+
+commit d79f886eb87cb064e19eb12c1ad3d45bbed92198
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Mon Dec 30 07:39:10 2013 -0800
+
+    Refactor line search error checking code.
+    
+    Move the error checking code into its own function
+    so that it can be used in upcoming changes.
+    
+    Change-Id: Icf348e5a8bbe8f8b663f04fb8cfc9a2149b12f22
+
 commit 2b16b0080b6e673eaaf9ed478c9e971d9fcd65de
 Author: Sameer Agarwal <sameeragarwal at google.com>
 Date:   Fri Dec 20 15:22:26 2013 -0800
@@ -553,131 +686,3 @@ Date:   Tue Nov 5 13:10:27 2013 +0000
       information as to which sub-modules are missing.
     
     Change-Id: I6eed94af49263540b8f87917b75c41b8f49658a0
-
-commit 9ba0b352a282f08b1b6368a5690434407d7c81af
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Tue Nov 5 13:04:56 2013 -0800
-
-    Lint and other cleanups from William Rucklidge
-    
-    Change-Id: I7fb23c2db85f0f121204560b79f1966f3d584431
-
-commit 69bd65ff4368ce2841519f00ff48c5284c1743a3
-Author: Alex Stewart <alexs.mac at gmail.com>
-Date:   Mon Nov 4 23:01:14 2013 +0000
-
-    Downgrading warning messages when optional deps are not found.
-    
-    - Now when find_package() is called for a dependency without the
-      REQUIRED or QUIET qualifiers, we emit no priority (above STATUS, but
-      below WARNING) messages and continue.
-    
-    Change-Id: I8cdeda7a8f6c91d45fb7f24fb366244c6c9b66e1
-
-commit b0a8731fcdde31e6c37a54e8c1e1c00f853c0d5c
-Author: Alex Stewart <alexs.mac at gmail.com>
-Date:   Mon Nov 4 20:32:40 2013 +0000
-
-    Removing duplicate SuiteSparse found message.
-    
-    - Also flipping ordering of variables in
-      find_package_handle_standard_args() so that the automatically
-      generated message prints the include directories, not TRUE.
-    
-    Change-Id: I2bf62eacd5c96f27152e9542b9a74651243a584e
-
-commit 6fed9fe0de9d1737095c24e19ad8df9735b7e572
-Author: Alex Stewart <alexs.mac at gmail.com>
-Date:   Mon Nov 4 18:33:05 2013 +0000
-
-    Fix FindPackage scripts to emit warnings, not errors if not found.
-    
-    - Previously we used message priority: SEND_ERROR when a package was
-      not found and find_package() was called without QUIET or REQUIRED,
-      which emits an error message, and prevents generation, but continues
-      configuration.
-    - The fact SEND_ERROR induces an error message was confusing for users
-      as it implies that something bad has happened and they cannot
-      continue, when in fact we were disabling the option in question
-      and were thus able to continue, all they had to do was re-configure.
-    
-    - This commit also reorders the search lists for includes/libraries
-      so that we always search user installed locations (e.g. /usr/local)
-      before system installed locations.  Thus we will now always prefer
-      a user install to a system install if both are available, which is
-      likely to be the users desired intention.
-    
-    Change-Id: Ide84919f27d3373f31282f70c685720cd77a6723
-
-commit cada337149cbc4b9e6f2bae14593b87ecf8f1a5c
-Author: Alex Stewart <alexs.mac at gmail.com>
-Date:   Mon Nov 4 18:08:24 2013 +0000
-
-    Fixing CXSparse include directories statement.
-    
-    - Reported as issue #135:
-      https://code.google.com/p/ceres-solver/issues/detail?id=135.
-    - CXSPARSE_INCLUDE was the legacy include directory variable, since
-      the buildsystem updates we now use the CMake standard:
-      CXSPARSE_INCLUDE_DIRS.
-    
-    Change-Id: Iab0c2de14d524bb9e9da230bc574b5e6f09e1f31
-
-commit c71085ed326239dc2d318d848ded9a99e4e3c107
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Thu Oct 31 13:56:38 2013 -0700
-
-    Update to 1.8.0rc1.
-    
-    Change-Id: Iaa10fd5a20be2ef84aca0119306c44669d87cc5d
-
-commit 88a703f44ff0d6d5d4601584fa77f5ce853025f4
-Author: Petter Strandmark <petter.strandmark at gmail.com>
-Date:   Thu Oct 31 21:13:48 2013 +0100
-
-    Fix compilation in Visual C++ 2013.
-    
-    I had to fix the following things to make Ceres compile in 2013:
-     * Not link to 'm' (GNU math library).
-     * Excplicitly convert an std::ostream to bool.
-     * Include <algorithm> for std::max.
-    
-    Change-Id: I3ff65413baf8711364360d46dd71fd553fa63e72
-
-commit f06b9face5bfbbc2b338aa2460bee2298a3865c5
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Sun Oct 27 21:38:13 2013 -0700
-
-    Add support for multiple visibility clustering algorithms.
-    
-    The original visibility based preconditioning paper and
-    implementation only used the canonical views algorithm.
-    
-    This algorithm for large dense graphs can be particularly
-    expensive. As its worst case complexity is cubic in size
-    of the graph.
-    
-    Further, for many uses the SCHUR_JACOBI preconditioner
-    was both effective enough while being cheap. It however
-    suffers from a fatal flaw. If the camera parameter blocks
-    are split between two or more parameter blocks, e.g,
-    extrinsics and intrinsics. The preconditioner because
-    it is block diagonal will not capture the interactions
-    between them.
-    
-    Using CLUSTER_JACOBI or CLUSTER_TRIDIAGONAL will fix
-    this problem but as mentioned above this can be quite
-    expensive depending on the problem.
-    
-    This change extends the visibility based preconditioner
-    to allow for multiple clustering algorithms. And adds
-    a simple thresholded single linkage clustering algorithm
-    which allows you to construct versions of CLUSTER_JACOBI
-    and CLUSTER_TRIDIAGONAL preconditioners that are cheap
-    to construct and are more effective than SCHUR_JACOBI.
-    
-    Currently the

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list