[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