[Bf-blender-cvs] [de6c1c9] master: Update Ceres to latest upstream version

Sergey Sharybin noreply at git.blender.org
Thu Nov 28 14:46:44 CET 2013


Commit: de6c1c9287849a6d3688ac4d67c8cc21f0c4cd31
Author: Sergey Sharybin
Date:   Thu Nov 28 19:06:35 2013 +0600
http://developer.blender.org/rBde6c1c9287849a6d3688ac4d67c8cc21f0c4cd31

Update Ceres to latest upstream version

- A richer Problem API.
- DynamicNumericDiffCostFunction.
- Faster ITERATIVE_SCHUR solver.
- Faster SCHUR_JACOBI preconditioner.
- Faster Jacobian evaluation.
- Faster visibility based preconditioning using single linkage clustering.

Also re-wrote rules for unordered collections detection,
should work on all platforms and compilers now :)

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

M	SConstruct
M	extern/libmv/third_party/ceres/CMakeLists.txt
M	extern/libmv/third_party/ceres/ChangeLog
M	extern/libmv/third_party/ceres/SConscript
M	extern/libmv/third_party/ceres/bundle.sh
M	extern/libmv/third_party/ceres/files.txt
M	extern/libmv/third_party/ceres/include/ceres/autodiff_cost_function.h
M	extern/libmv/third_party/ceres/include/ceres/ceres.h
M	extern/libmv/third_party/ceres/include/ceres/dynamic_autodiff_cost_function.h
A	extern/libmv/third_party/ceres/include/ceres/dynamic_numeric_diff_cost_function.h
M	extern/libmv/third_party/ceres/include/ceres/internal/autodiff.h
M	extern/libmv/third_party/ceres/include/ceres/internal/fixed_array.h
M	extern/libmv/third_party/ceres/include/ceres/internal/macros.h
M	extern/libmv/third_party/ceres/include/ceres/internal/numeric_diff.h
M	extern/libmv/third_party/ceres/include/ceres/iteration_callback.h
M	extern/libmv/third_party/ceres/include/ceres/jet.h
M	extern/libmv/third_party/ceres/include/ceres/numeric_diff_cost_function.h
M	extern/libmv/third_party/ceres/include/ceres/numeric_diff_functor.h
M	extern/libmv/third_party/ceres/include/ceres/ordered_groups.h
M	extern/libmv/third_party/ceres/include/ceres/problem.h
M	extern/libmv/third_party/ceres/include/ceres/rotation.h
M	extern/libmv/third_party/ceres/include/ceres/solver.h
M	extern/libmv/third_party/ceres/include/ceres/types.h
M	extern/libmv/third_party/ceres/internal/ceres/block_jacobi_preconditioner.cc
A	extern/libmv/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.cc
A	extern/libmv/third_party/ceres/internal/ceres/block_random_access_diagonal_matrix.h
M	extern/libmv/third_party/ceres/internal/ceres/block_random_access_sparse_matrix.h
M	extern/libmv/third_party/ceres/internal/ceres/canonical_views_clustering.cc
M	extern/libmv/third_party/ceres/internal/ceres/canonical_views_clustering.h
M	extern/libmv/third_party/ceres/internal/ceres/cgnr_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/collections_port.h
M	extern/libmv/third_party/ceres/internal/ceres/conjugate_gradients_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/coordinate_descent_minimizer.cc
M	extern/libmv/third_party/ceres/internal/ceres/corrector.cc
M	extern/libmv/third_party/ceres/internal/ceres/covariance_impl.cc
M	extern/libmv/third_party/ceres/internal/ceres/cxsparse.cc
M	extern/libmv/third_party/ceres/internal/ceres/dense_normal_cholesky_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/dense_qr_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/dogleg_strategy.cc
M	extern/libmv/third_party/ceres/internal/ceres/generate_eliminator_specialization.py
A	extern/libmv/third_party/ceres/internal/ceres/generate_partitioned_matrix_view_specializations.py
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_2.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_3.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_4.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_2_d.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_3.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_4.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_9.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_3_d.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_3.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_4.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_4_d.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_2_d_d.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_2.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_3.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_4.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_4_4_d.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/partitioned_matrix_view_d_d_d.cc
A	extern/libmv/third_party/ceres/internal/ceres/generated/schur_eliminator_2_d_d.cc
M	extern/libmv/third_party/ceres/internal/ceres/gradient_checking_cost_function.cc
M	extern/libmv/third_party/ceres/internal/ceres/implicit_schur_complement.cc
M	extern/libmv/third_party/ceres/internal/ceres/implicit_schur_complement.h
M	extern/libmv/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/lapack.cc
M	extern/libmv/third_party/ceres/internal/ceres/lapack.h
M	extern/libmv/third_party/ceres/internal/ceres/levenberg_marquardt_strategy.cc
M	extern/libmv/third_party/ceres/internal/ceres/line_search.cc
M	extern/libmv/third_party/ceres/internal/ceres/line_search_direction.cc
M	extern/libmv/third_party/ceres/internal/ceres/line_search_minimizer.cc
M	extern/libmv/third_party/ceres/internal/ceres/linear_solver.h
M	extern/libmv/third_party/ceres/internal/ceres/low_rank_inverse_hessian.cc
M	extern/libmv/third_party/ceres/internal/ceres/minimizer.h
M	extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.cc
M	extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.h
A	extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view_impl.h
M	extern/libmv/third_party/ceres/internal/ceres/polynomial.cc
M	extern/libmv/third_party/ceres/internal/ceres/polynomial.h
M	extern/libmv/third_party/ceres/internal/ceres/preconditioner.h
M	extern/libmv/third_party/ceres/internal/ceres/problem.cc
M	extern/libmv/third_party/ceres/internal/ceres/problem_impl.cc
M	extern/libmv/third_party/ceres/internal/ceres/problem_impl.h
D	extern/libmv/third_party/ceres/internal/ceres/runtime_numeric_diff_cost_function.cc
D	extern/libmv/third_party/ceres/internal/ceres/runtime_numeric_diff_cost_function.h
M	extern/libmv/third_party/ceres/internal/ceres/schur_complement_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/schur_complement_solver.h
M	extern/libmv/third_party/ceres/internal/ceres/schur_eliminator.cc
M	extern/libmv/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.cc
M	extern/libmv/third_party/ceres/internal/ceres/schur_jacobi_preconditioner.h
A	extern/libmv/third_party/ceres/internal/ceres/single_linkage_clustering.cc
A	extern/libmv/third_party/ceres/internal/ceres/single_linkage_clustering.h
M	extern/libmv/third_party/ceres/internal/ceres/solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc
M	extern/libmv/third_party/ceres/internal/ceres/solver_impl.h
M	extern/libmv/third_party/ceres/internal/ceres/sparse_normal_cholesky_solver.cc
M	extern/libmv/third_party/ceres/internal/ceres/stringprintf.cc
M	extern/libmv/third_party/ceres/internal/ceres/suitesparse.cc
M	extern/libmv/third_party/ceres/internal/ceres/suitesparse.h
M	extern/libmv/third_party/ceres/internal/ceres/trust_region_minimizer.cc
M	extern/libmv/third_party/ceres/internal/ceres/trust_region_strategy.h
M	extern/libmv/third_party/ceres/internal/ceres/types.cc
M	extern/libmv/third_party/ceres/internal/ceres/visibility_based_preconditioner.cc
M	extern/libmv/third_party/ceres/internal/ceres/visibility_based_preconditioner.h

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

diff --git a/SConstruct b/SConstruct
index edf9cda..197a51f 100644
--- a/SConstruct
+++ b/SConstruct
@@ -285,6 +285,9 @@ if 'cudakernels' in B.targets:
     env['WITH_BF_CYCLES_CUDA_BINARIES'] = True
     env['WITH_BF_PYTHON'] = False
 
+# Configure paths for automated configuration test programs
+env['CONFIGUREDIR'] = os.path.abspath(os.path.normpath(os.path.join(env['BF_BUILDDIR'], "sconf_temp")))
+env['CONFIGURELOG'] = os.path.abspath(os.path.normpath(os.path.join(env['BF_BUILDDIR'], "config.log")))
 
 #############################################################################
 ###################    Automatic configuration for OSX     ##################
diff --git a/extern/libmv/third_party/ceres/CMakeLists.txt b/extern/libmv/third_party/ceres/CMakeLists.txt
index 56fd4c2..a05c424 100644
--- a/extern/libmv/third_party/ceres/CMakeLists.txt
+++ b/extern/libmv/third_party/ceres/CMakeLists.txt
@@ -46,6 +46,7 @@ set(SRC
 	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_diagonal_matrix.cc
 	internal/ceres/block_random_access_matrix.cc
 	internal/ceres/block_random_access_sparse_matrix.cc
 	internal/ceres/block_sparse_matrix.cc
@@ -70,6 +71,7 @@ set(SRC
 	internal/ceres/dogleg_strategy.cc
 	internal/ceres/evaluator.cc
 	internal/ceres/file.cc
+	internal/ceres/generated/partitioned_matrix_view_d_d_d.cc
 	internal/ceres/generated/schur_eliminator_d_d_d.cc
 	internal/ceres/gradient_checking_cost_function.cc
 	internal/ceres/implicit_schur_complement.cc
@@ -97,11 +99,11 @@ set(SRC
 	internal/ceres/program.cc
 	internal/ceres/residual_block.cc
 	internal/ceres/residual_block_utils.cc
-	internal/ceres/runtime_numeric_diff_cost_function.cc
 	internal/ceres/schur_complement_solver.cc
 	internal/ceres/schur_eliminator.cc
 	internal/ceres/schur_jacobi_preconditioner.cc
 	internal/ceres/scratch_evaluate_preparer.cc
+	internal/ceres/single_linkage_clustering.cc
 	internal/ceres/solver.cc
 	internal/ceres/solver_impl.cc
 	internal/ceres/sparse_matrix.cc
@@ -127,6 +129,7 @@ set(SRC
 	include/ceres/covariance.h
 	include/ceres/crs_matrix.h
 	include/ceres/dynamic_autodiff_cost_function.h
+	include/ceres/dynamic_numeric_diff_cost_function.h
 	include/ceres/fpclassify.h
 	include/ceres/gradient_checker.h
 	include/ceres/internal/autodiff.h
@@ -158,6 +161,7 @@ set(SRC
 	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_diagonal_matrix.h
 	internal/ceres/block_random_access_matrix.h
 	internal/ceres/block_random_access_sparse_matrix.h
 	internal/ceres/block_sparse_matrix.h
@@ -206,6 +210,7 @@ set(SRC
 	internal/ceres/parameter_block.h
 	internal/ceres/parameter_block_ordering.h
 	internal/ceres/partitioned_matrix_view.h
+	internal/ceres/partitioned_matrix_view_impl.h
 	internal/ceres/polynomial.h
 	internal/ceres/preconditioner.h
 	internal/ceres/problem_impl.h
@@ -214,12 +219,12 @@ set(SRC
 	internal/ceres/random.h
 	internal/ceres/residual_block.h
 	internal/ceres/residual_block_utils.h
-	internal/ceres/runtime_numeric_diff_cost_function.h
 	internal/ceres/schur_complement_solver.h
 	internal/ceres/schur_eliminator.h
 	internal/ceres/schur_eliminator_impl.h
 	internal/ceres/schur_jacobi_preconditioner.h
 	internal/ceres/scratch_evaluate_preparer.h
+	internal/ceres/single_linkage_clustering.h
 	internal/ceres/small_blas.h
 	internal/ceres/solver_impl.h
 	internal/ceres/sparse_matrix.h
@@ -238,6 +243,22 @@ set(SRC
 
 #if(FALSE)
 #	list(APPEND SRC
+#		internal/ceres/generated/partitioned_matrix_view_2_2_2.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_2_3.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_2_4.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_2_d.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_3_3.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_3_4.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_3_9.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_3_d.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_4_3.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_4_4.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_4_d.cc
+#		internal/ceres/generated/partitioned_matrix_view_2_d_d.cc
+#		internal/ceres/generated/partitioned_matrix_view_4_4_2.cc
+#		internal/ceres/generated/partitioned_matrix_view_4_4_3.cc
+#		internal/ceres/generated/partitioned_matrix_view_4_4_4.cc
+#		internal/ceres/generated/partitioned_matrix_view_4_4_d.cc
 #		internal/ceres/generated/schur_eliminator_2_2_2.cc
 #		internal/ceres/generated/schur_eliminator_2_2_3.cc
 #		internal/ceres/generated/schur_eliminator_2_2_4.cc
@@ -249,6 +270,7 @@ set(SRC
 #		internal/ceres/generated/schur_eliminator_2_4_3.cc
 #		internal/ceres/generated/schur_eliminator_2_4_4.cc
 #		internal/ceres/generated/schur_eliminator_2_4_d.cc
+#		internal/ceres/generated/schur_eliminator_2_d_d.cc
 #		internal/ceres/generated/schur_eliminator_4_4_2.cc
 #		internal/ceres/generated/schur_eliminator_4_4_3.cc
 #		internal/ceres/generated/schur_eliminator_4_4_4.cc
@@ -287,23 +309,18 @@ if(WITH_OPENMP)
 	)
 endif()
 
-if(MSVC10)
-	add_definitions(
-		-D"CERES_HASH_NAMESPACE_START=namespace std {"
-		-D"CERES_HASH_NAMESPACE_END=}"
-	)
+include(CheckIncludeFileCXX)
+CHECK_INCLUDE_FILE_CXX(unordered_map UNORDERED_MAP_IN_STD_NAMESPACE)
+if(UNORDERED_MAP_IN_STD_NAMESPACE)
+	ADD_DEFINITIONS(-DCERES_STD_UNORDERED_MAP)
 else()
-	add_definitions(
-		-D"CERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {"
-		-D"CERES_HASH_NAMESPACE_END=}}"
-	)
-endif()
-
-if(APPLE)
-	if(CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.5")
-		add_definitions(
-			-DCERES_NO_TR1
-		)
+	CHECK_INCLUDE_FILE_CXX("tr1/unordered_map" UNORDERED_MAP_IN_TR1_NAMESPACE)
+	if(UNORDERED_MAP_IN_TR1_NAMESPACE)
+		ADD_DEFINITIONS(-DCERES_TR1_UNORDERED_MAP)
+	else()
+		MESSAGE("-- Unable to find <unordered_map> or <tr1/unordered_map>. ")
+		MESSAGE("-- Replacing unordered_map/set with map/set (warning: slower!)")
+		ADD_DEFINITIONS(-DCERES_NO_UNORDERED_MAP)
 	endif()
 endif()
 
diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog
index 6bb3306..2bd4206 100644
--- a/extern/libmv/third_party/ceres/ChangeLog
+++ b/extern/libmv/third_party/ceres/ChangeLog
@@ -1,638 +1,684 @@
-commit 682cd3c27864ba6d67ca81890760a5f697f21d63
-Author: Keir Mierle <mierle at gmail.com>
-Date:   Tue Sep 3 14:28:32 2013 -0700
-
-    Update version history with shared libs changes
-    
-    Change-Id: Iafd55087bc5eef4c15c3b544222147aa99df7690
-
-commit 340d7c1415f144ca335ec1e87832c3f41d5d515b
-Author: Keir Mierle <mierle at gmail.com>
-Date:   Tue Sep 3 13:50:03 2013 -0700
-
-    Update version history with miniglog fix
-    
-    Change-Id: Ic69f4994259e05fa88548b957146a1aac73b7af7
-
-commit ac061c0f2334868e671f26d24e34a14c77fac716
-Author: Keir Mierle <mierle at gmail.com>
-Date:   Tue Sep 3 13:03:28 2013 -0700
+commit 33e01b9c5e1416fe29c55ac0332cdca21c053c83
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Wed Nov 27 10:24:03 2013 -0800
 
-    Cleanups in logging.h
+    Rename LinearSolverTerminationType enums.
     
-    Thanks to Scott Ettinger for the patch this is based off of,
-    which restores the NDK build.
+    This increases clarity, drops redundant enums and makes things
+    cleaner all around.
     
-    Change-Id: I8036dc1388438a4940e6f4ae297162902afd8d3a
+    Change-Id: I761f195ddf17ea6bd8e4e55bf5a72863660c4c3b
 
-commit 0338f9a8e69582a550ef6d128e447779536d623c
+commit 068437eb89d495d905465544ccd442efef457b04
 Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Mon Sep 2 22:28:40 2013 -0700
+Date:   Wed Nov 27 07:05:57 2013 -0800
 
-    ITERATIVE_SCHUR works with no f-blocks.
-    
-    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.
+    Pipe minimizer termination messages to Solver::Summary.
     
-    This patch adds logic to detect this condition
-    and to deal with it and adds tests that verify
-    the fix.
+    All minimizer termination messages are now available as
+    Solver::Summary::error.
     
-    Thanks to Soohyun Bae for reporting this bug.
+    This is part of the ongoing refactoring or
     
-    Change-Id: If29ddf32463cbb1960414fff0e29bbf0d2ee7989
+    Change-Id: I4514c3c042645bbd1471bcde9bd3dbf81d9ee8b0
 
-commit 263de47419167786c9ab6d93fa2f3e32e8e75fe1
-Author: Taylor Braun-Jones <taylor at braun-jones.org>
-Date:   Thu Aug 29 10:33:29 2013 -0400
+commit 89a592f410fb6f80c03dea84b6b9f1a10bea36c1
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date:   Tue Nov 26 11:35:49 2013 -0800
 
-    Incorporate RHEL build fixes from Brian Pitts
+    LinearSolver::Summary::status -> LinearSolver::Summary::message.
     
-    CMake build fixed so that versioned shared libraries are installed
-    (along with .so symlinks)
+    And a bunch of minor lint cleanups as they showed up.
     
-    Change-Id: Ibbaea9d37d17754cb8c3cd36fc17d015ca7d2a57
+    Change-Id: I430a6b05710923c72daf6a5df4dfcd16fbf44b3a
 
-commit 6b4131993ec0db6c850bb2ae07ba8793dbab3e39
+commit b16e118b96c55451c0d8556f3c5b52ad36b69cac
 Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Mon Aug 26 00:02:50 2013 -0700
+Date:   Mon Nov 25 05:47:43 2013 -0800
 
-    Update spec file
+    Better error checking and reporting for linear solvers.
     
-    Change-Id: Id6426d7cad41cde2cbab411964ac013d724a066c
-
-commit c24a4ec6fb6202d1f6a576f211b99fbe9c9906ef
-Author: Sameer Agarwal <sameeragarwal at google.com>
-Date:   Fri Aug 23 06:49:22 2013 -0700
-
-    Cmake refactoring
+    A lot of error checking cruft has accumulated over the years
+    in the various linear solvers. This change makes the error reporting
+    more robust and consistent across the various solvers.
     
-    1. Use CMake FindLAPACK and FindBLAS Modules.
-    2. Remove SEARCH_HEADERS and SEARCH_LIBS and replace them with
-    CMAKE variables. This

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list