[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59824] trunk/blender/extern/libmv/ third_party/ceres: Update Ceres to 1.7.0 release

Sergey Sharybin sergey.vfx at gmail.com
Thu Sep 5 12:48:44 CEST 2013


Revision: 59824
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59824
Author:   nazgul
Date:     2013-09-05 10:48:44 +0000 (Thu, 05 Sep 2013)
Log Message:
-----------
Update Ceres to 1.7.0 release

For Blender this release is interesting because of:

- Covariance estimation (not used in Blender yet, but now we
  might use it for keyframe selection instead of havingown
  implementation).

- Significant performance improvements to loss function and
  dense linear solvers and automatic differentiation.

  Unfortunately, didn't notice speedup of tracking itself,
  but camera reconstruction now happens around 2 times faster
  on my laptop,

- Better inner iteration step acceptance and stopping.

Modified Paths:
--------------
    trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt
    trunk/blender/extern/libmv/third_party/ceres/ChangeLog
    trunk/blender/extern/libmv/third_party/ceres/SConscript
    trunk/blender/extern/libmv/third_party/ceres/bundle.sh
    trunk/blender/extern/libmv/third_party/ceres/files.txt
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/autodiff_cost_function.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/autodiff_local_parameterization.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/ceres.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/cost_function.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/dynamic_autodiff_cost_function.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/autodiff.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/fixed_array.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/internal/variadic_evaluate.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/iteration_callback.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/jet.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/loss_function.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/numeric_diff_cost_function.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/problem.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/sized_cost_function.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/solver.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/types.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/blas.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_jacobi_preconditioner.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_jacobi_preconditioner.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_sparse_matrix.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_sparse_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_structure.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cgnr_solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cgnr_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_row_sparse_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/corrector.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/corrector.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cxsparse.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/cxsparse.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_qr_solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_qr_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_sparse_matrix.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dense_sparse_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dogleg_strategy.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/dogleg_strategy.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/graph_algorithms.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/implicit_schur_complement.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/implicit_schur_complement.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/iterative_schur_complement_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/line_search.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/line_search.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/line_search_direction.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/line_search_direction.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/line_search_minimizer.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_least_squares_problems.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_least_squares_problems.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/low_rank_inverse_hessian.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/low_rank_inverse_hessian.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/minimizer.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/parameter_block.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/parameter_block_ordering.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/parameter_block_ordering.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/preconditioner.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/preconditioner.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/problem.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/problem_impl.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/problem_impl.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/program_evaluator.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/residual_block.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_complement_solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_complement_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_eliminator.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_eliminator_impl.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/solver_impl.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/split.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/suitesparse.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/suitesparse.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/triplet_sparse_matrix.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/triplet_sparse_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/trust_region_minimizer.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/trust_region_strategy.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/types.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility_based_preconditioner.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/visibility_based_preconditioner.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/wall_time.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/wall_time.h

Added Paths:
-----------
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/c_api.h
    trunk/blender/extern/libmv/third_party/ceres/include/ceres/covariance.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/blas.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_crs_matrix.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_random_access_crs_matrix.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/c_api.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/compressed_col_sparse_matrix_utils.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/covariance.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/covariance_impl.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/covariance_impl.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/incomplete_lq_factorization.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/incomplete_lq_factorization.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/lapack.cc
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/lapack.h
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/small_blas.h

Removed Paths:
-------------
    trunk/blender/extern/libmv/third_party/ceres/internal/ceres/matrix_proto.h

Modified: trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt	2013-09-05 10:45:21 UTC (rev 59823)
+++ trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt	2013-09-05 10:48:44 UTC (rev 59824)
@@ -40,22 +40,28 @@
 
 set(SRC
 	internal/ceres/array_utils.cc
+	internal/ceres/blas.cc
 	internal/ceres/block_evaluate_preparer.cc
 	internal/ceres/block_jacobian_writer.cc
 	internal/ceres/block_jacobi_preconditioner.cc
+	internal/ceres/block_random_access_crs_matrix.cc
 	internal/ceres/block_random_access_dense_matrix.cc
 	internal/ceres/block_random_access_matrix.cc
 	internal/ceres/block_random_access_sparse_matrix.cc
 	internal/ceres/block_sparse_matrix.cc
 	internal/ceres/block_structure.cc
 	internal/ceres/canonical_views_clustering.cc
+	internal/ceres/c_api.cc
 	internal/ceres/cgnr_solver.cc
+	internal/ceres/compressed_col_sparse_matrix_utils.cc
 	internal/ceres/compressed_row_jacobian_writer.cc
 	internal/ceres/compressed_row_sparse_matrix.cc
 	internal/ceres/conditioned_cost_function.cc
 	internal/ceres/conjugate_gradients_solver.cc
 	internal/ceres/coordinate_descent_minimizer.cc
 	internal/ceres/corrector.cc
+	internal/ceres/covariance.cc
+	internal/ceres/covariance_impl.cc
 	internal/ceres/cxsparse.cc
 	internal/ceres/dense_normal_cholesky_solver.cc
 	internal/ceres/dense_qr_solver.cc
@@ -67,7 +73,9 @@
 	internal/ceres/generated/schur_eliminator_d_d_d.cc
 	internal/ceres/gradient_checking_cost_function.cc
 	internal/ceres/implicit_schur_complement.cc
+	internal/ceres/incomplete_lq_factorization.cc
 	internal/ceres/iterative_schur_complement_solver.cc
+	internal/ceres/lapack.cc
 	internal/ceres/levenberg_marquardt_strategy.cc
 	internal/ceres/linear_least_squares_problems.cc
 	internal/ceres/linear_operator.cc
@@ -111,10 +119,12 @@
 
 	include/ceres/autodiff_cost_function.h
 	include/ceres/autodiff_local_parameterization.h
+	include/ceres/c_api.h
 	include/ceres/ceres.h
 	include/ceres/conditioned_cost_function.h
 	include/ceres/cost_function.h
 	include/ceres/cost_function_to_functor.h
+	include/ceres/covariance.h
 	include/ceres/crs_matrix.h
 	include/ceres/dynamic_autodiff_cost_function.h
 	include/ceres/fpclassify.h
@@ -146,6 +156,7 @@
 	internal/ceres/block_evaluate_preparer.h
 	internal/ceres/block_jacobian_writer.h
 	internal/ceres/block_jacobi_preconditioner.h
+	internal/ceres/block_random_access_crs_matrix.h
 	internal/ceres/block_random_access_dense_matrix.h
 	internal/ceres/block_random_access_matrix.h
 	internal/ceres/block_random_access_sparse_matrix.h
@@ -156,11 +167,13 @@
 	internal/ceres/cgnr_linear_operator.h
 	internal/ceres/cgnr_solver.h
 	internal/ceres/collections_port.h
+	internal/ceres/compressed_col_sparse_matrix_utils.h
 	internal/ceres/compressed_row_jacobian_writer.h
 	internal/ceres/compressed_row_sparse_matrix.h
 	internal/ceres/conjugate_gradients_solver.h
 	internal/ceres/coordinate_descent_minimizer.h
 	internal/ceres/corrector.h
+	internal/ceres/covariance_impl.h
 	internal/ceres/cxsparse.h
 	internal/ceres/dense_jacobian_writer.h
 	internal/ceres/dense_normal_cholesky_solver.h
@@ -175,8 +188,10 @@
 	internal/ceres/graph_algorithms.h
 	internal/ceres/graph.h
 	internal/ceres/implicit_schur_complement.h
+	internal/ceres/incomplete_lq_factorization.h
 	internal/ceres/integral_types.h
 	internal/ceres/iterative_schur_complement_solver.h
+	internal/ceres/lapack.h
 	internal/ceres/levenberg_marquardt_strategy.h
 	internal/ceres/linear_least_squares_problems.h
 	internal/ceres/linear_operator.h
@@ -186,7 +201,6 @@
 	internal/ceres/line_search_minimizer.h
 	internal/ceres/low_rank_inverse_hessian.h
 	internal/ceres/map_util.h
-	internal/ceres/matrix_proto.h
 	internal/ceres/minimizer.h
 	internal/ceres/mutex.h
 	internal/ceres/parameter_block.h
@@ -206,6 +220,7 @@
 	internal/ceres/schur_eliminator_impl.h
 	internal/ceres/schur_jacobi_preconditioner.h
 	internal/ceres/scratch_evaluate_preparer.h
+	internal/ceres/small_blas.h
 	internal/ceres/solver_impl.h
 	internal/ceres/sparse_matrix.h
 	internal/ceres/sparse_normal_cholesky_solver.h
@@ -261,7 +276,7 @@
 	-DCERES_HAVE_PTHREAD
 	-DCERES_NO_SUITESPARSE
 	-DCERES_NO_CXSPARSE
-	-DCERES_NO_PROTOCOL_BUFFERS
+	-DCERES_NO_LAPACK
 	-DCERES_RESTRICT_SCHUR_SPECIALIZATION
 	-DCERES_HAVE_RWLOCK
 )

Modified: trunk/blender/extern/libmv/third_party/ceres/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/ChangeLog	2013-09-05 10:45:21 UTC (rev 59823)
+++ trunk/blender/extern/libmv/third_party/ceres/ChangeLog	2013-09-05 10:48:44 UTC (rev 59824)
@@ -1,717 +1,638 @@
-commit 36f4cd23b24391106e9f3c15b0f9bbcaafc47b20
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Sun Apr 21 09:42:26 2013 -0700
+commit 682cd3c27864ba6d67ca81890760a5f697f21d63
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Tue Sep 3 14:28:32 2013 -0700
 
-    Disable threads completely if OpenMP is not present.
+    Update version history with shared libs changes
     
-    This reduces the penalty paid by Mutex lock and unlock operations
-    in single threaded mode.
-    
-    Change-Id: I185380bde73fe87e901fc434d152d6c366ff1d5d
+    Change-Id: Iafd55087bc5eef4c15c3b544222147aa99df7690
 
-commit 24fb32b42683cf711a6683e3cff3540b16bb5019
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Sat Apr 20 09:02:06 2013 -0700
+commit 340d7c1415f144ca335ec1e87832c3f41d5d515b
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Tue Sep 3 13:50:03 2013 -0700
 
-    Add whole program optimization for Clang.
+    Update version history with miniglog fix
     
-    Also reorder the way CERES_CXX_FLAGS is being used for clarity.
-    
-    Change-Id: I2bbb90e770d30dd18ecae72939ea03b7fa11e6ae
+    Change-Id: Ic69f4994259e05fa88548b957146a1aac73b7af7
 
-commit 2b7497025096a681d7f0351081f83293398d62ef
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Fri Apr 19 19:52:58 2013 -0700
+commit ac061c0f2334868e671f26d24e34a14c77fac716
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Tue Sep 3 13:03:28 2013 -0700
 
-    Fix a bounds error in the pre-ordering code.
+    Cleanups in logging.h
     
-    Change-Id: I33c968bb075b60ad50374593302e08f42aeacf25
+    Thanks to Scott Ettinger for the patch this is based off of,
+    which restores the NDK build.
+    
+    Change-Id: I8036dc1388438a4940e6f4ae297162902afd8d3a
 
-commit 9189f4ea4bb2d71ea7f6b9d9bd3290415aee323d
+commit 0338f9a8e69582a550ef6d128e447779536d623c
 Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Fri Apr 19 17:09:49 2013 -0700
+Date:   Mon Sep 2 22:28:40 2013 -0700
 
-    Enable pre-ordering for SPARSE_NORMAL_CHOLESKY.
+    ITERATIVE_SCHUR works with no f-blocks.
     
-    Sparse Cholesky factorization algorithms use a fill-reducing
-    ordering to permute the columns of the Jacobian matrix. There
-    are two ways of doing this.
+    When the Schur complement is of size zero,
+    i.e. none of the parameter blocks interact
+    with each other, the ITERATIVE_SCHUR linear
+    solver crashes due to some checks that are
+    triggered in the SCHUR_JACOBI preconditioner.
     
-    1. Compute the Jacobian matrix in some order and then have the
-       factorization algorithm permute the columns of the Jacobian.
+    This patch adds logic to detect this condition
+    and to deal with it and adds tests that verify
+    the fix.
     
-    2. Compute the Jacobian with its columns already permuted.
+    Thanks to Soohyun Bae for reporting this bug.
     
-    The first option incurs a significant memory penalty. The
-    factorization algorithm has to make a copy of the permuted
-    Jacobian matrix.
-    
-    Starting with this change Ceres pre-permutes the columns of the
-    Jacobian matrix and generally speaking, there is no performance
-    penalty for doing so.
-    
-    In some rare cases, it is worth using a more complicated
-    reordering algorithm which has slightly better runtime
-    performance at the expense of an extra copy of the Jacobian
-    matrix. Setting Solver::Options::use_postordering to true
-    enables this tradeoff.
-    
-    This change also removes Solver::Options::use_block_amd
-    as an option. All matrices are ordered using their block
-    structure. The ability to order them by their scalar
-    sparsity structure has been removed.
-    
-    Here is what performance on looks like on some BAL problems.
-    
-    Memory
-    ======
-                                         HEAD         pre-ordering
-    16-22106                      137957376.0          113516544.0
-    49-7776                        56688640.0           46628864.0
-    245-198739                   1718005760.0         1383550976.0
-    257-65132                     387715072.0          319512576.0
-    356-226730                   2014826496.0         1626087424.0
-    744-543562                   4903358464.0         3957878784.0
-    1024-110968                   968626176.0          822071296.0
-    
-    Time
-    ====
-                                         HEAD         pre-ordering
-    16-22106                              3.8                  3.7
-    49-7776                               1.9                  1.8
-    245-198739                           82.6                 81.9
-    257-65132                            14.0                 13.4
-    356-226730                           98.8                 95.8
-    744-543562                          325.2                301.6
-    1024-110968                          42.1                 37.1
-    
-    Change-Id: I6b2e25f3fed7310f88905386a7898ac94d37467e
+    Change-Id: If29ddf32463cbb1960414fff0e29bbf0d2ee7989
 
-commit f7ed22efc3afee36aae71a4f7949b3d327b87f11
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Fri Apr 19 14:24:48 2013 -0700
+commit 263de47419167786c9ab6d93fa2f3e32e8e75fe1
+Author: Taylor Braun-Jones <taylor at braun-jones.org>
+Date:   Thu Aug 29 10:33:29 2013 -0400
 
-    Add the ability to order the Program using AMD.
+    Incorporate RHEL build fixes from Brian Pitts
     
-    This will allow CHOLMOD to compute the sparse
-    Cholesky factorization of J'J without making
-    a permuted copy of it.
+    CMake build fixed so that versioned shared libraries are installed
+    (along with .so symlinks)
     
-    Change-Id: I25d0e18f5957ab7fdce15c543234bb2f09db482e

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list