[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56199] trunk/blender/extern/libmv/ third_party/ceres: Update Ceres to current upstream version
Sergey Sharybin
sergey.vfx at gmail.com
Mon Apr 22 11:25:42 CEST 2013
Revision: 56199
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56199
Author: nazgul
Date: 2013-04-22 09:25:37 +0000 (Mon, 22 Apr 2013)
Log Message:
-----------
Update Ceres to current upstream version
This brings a fixes for threading issue in BLAS
making BA step more robust (there were some in-detemrinacy
caused by this threading issue).
Also brings some optimizations, which does not directly
affect on blender.
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/files.txt
trunk/blender/extern/libmv/third_party/ceres/include/ceres/ceres.h
trunk/blender/extern/libmv/third_party/ceres/include/ceres/dynamic_autodiff_cost_function.h
trunk/blender/extern/libmv/third_party/ceres/include/ceres/jet.h
trunk/blender/extern/libmv/third_party/ceres/include/ceres/problem.h
trunk/blender/extern/libmv/third_party/ceres/include/ceres/solver.h
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/blas.h
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_sparse_matrix.cc
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/iterative_schur_complement_solver.cc
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/linear_solver.h
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/minimizer.h
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/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_eliminator.h
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/schur_eliminator_impl.h
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_normal_cholesky_solver.cc
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/visibility_based_preconditioner.cc
Added Paths:
-----------
trunk/blender/extern/libmv/third_party/ceres/include/ceres/autodiff_local_parameterization.h
Modified: trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt 2013-04-22 06:16:03 UTC (rev 56198)
+++ trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt 2013-04-22 09:25:37 UTC (rev 56199)
@@ -110,6 +110,7 @@
internal/ceres/wall_time.cc
include/ceres/autodiff_cost_function.h
+ include/ceres/autodiff_local_parameterization.h
include/ceres/ceres.h
include/ceres/conditioned_cost_function.h
include/ceres/cost_function.h
Modified: trunk/blender/extern/libmv/third_party/ceres/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/ChangeLog 2013-04-22 06:16:03 UTC (rev 56198)
+++ trunk/blender/extern/libmv/third_party/ceres/ChangeLog 2013-04-22 09:25:37 UTC (rev 56199)
@@ -1,3 +1,323 @@
+commit 36f4cd23b24391106e9f3c15b0f9bbcaafc47b20
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Sun Apr 21 09:42:26 2013 -0700
+
+ Disable threads completely if OpenMP is not present.
+
+ This reduces the penalty paid by Mutex lock and unlock operations
+ in single threaded mode.
+
+ Change-Id: I185380bde73fe87e901fc434d152d6c366ff1d5d
+
+commit 24fb32b42683cf711a6683e3cff3540b16bb5019
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Sat Apr 20 09:02:06 2013 -0700
+
+ Add whole program optimization for Clang.
+
+ Also reorder the way CERES_CXX_FLAGS is being used for clarity.
+
+ Change-Id: I2bbb90e770d30dd18ecae72939ea03b7fa11e6ae
+
+commit 2b7497025096a681d7f0351081f83293398d62ef
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Fri Apr 19 19:52:58 2013 -0700
+
+ Fix a bounds error in the pre-ordering code.
+
+ Change-Id: I33c968bb075b60ad50374593302e08f42aeacf25
+
+commit 9189f4ea4bb2d71ea7f6b9d9bd3290415aee323d
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Fri Apr 19 17:09:49 2013 -0700
+
+ Enable pre-ordering for SPARSE_NORMAL_CHOLESKY.
+
+ Sparse Cholesky factorization algorithms use a fill-reducing
+ ordering to permute the columns of the Jacobian matrix. There
+ are two ways of doing this.
+
+ 1. Compute the Jacobian matrix in some order and then have the
+ factorization algorithm permute the columns of the Jacobian.
+
+ 2. Compute the Jacobian with its columns already permuted.
+
+ 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
+
+commit f7ed22efc3afee36aae71a4f7949b3d327b87f11
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Fri Apr 19 14:24:48 2013 -0700
+
+ Add the ability to order the Program using AMD.
+
+ This will allow CHOLMOD to compute the sparse
+ Cholesky factorization of J'J without making
+ a permuted copy of it.
+
+ Change-Id: I25d0e18f5957ab7fdce15c543234bb2f09db482e
+
+commit c8f07905d76d9ac6fb8d7b9b02e180aa2fa0ab32
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Fri Apr 19 08:01:04 2013 -0700
+
+ Refactor SolverImpl::CreateReducedProgram.
+
+ Break up CreateReducedProgram into smaller functions in
+ preparation for more sophisticated ordering strategies.
+
+ Change-Id: Ic3897522574fde770646d747fe383f5dbd7a6619
+
+commit 2560b17b7cdda1de28c18049c95e6c3188dbde93
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Fri Apr 19 08:19:11 2013 -0700
+
+ SuiteSparse cleanup.
+
+ 1. CreateSparseMatrixTransposeView now returns a struct instead
+ of a pointer.
+
+ 2. Add AnalyzeCholeskyWithNaturalOrdering.
+
+ Change-Id: If27a5502949c3994edd95be0d25ec7a0d1fa1ae1
+
+commit 7823cf23c765450b79f11ac31fc8a16f875c0d84
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Thu Apr 18 16:13:56 2013 -0700
+
+ Fix a typo in problem.h
+
+ Thanks as usual to William Rucklidge.
+
+ Change-Id: If6e8628841ee7fa8978ec56918a80d60b4ff660e
+
+commit 3d9546963d7c8c5f5dfb12a2df745f4996fd2ec5
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Thu Apr 18 14:54:55 2013 -0700
+
+ Add the ability to query the Problem about parameter blocks.
+
+ Change-Id: Ieda1aefa28e7a1d18fe6c8d1665882e4d9c274f2
+
+commit 69ebad42ebfc212339a22c6f06a12ec5a3368098
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Wed Apr 17 15:38:00 2013 -0700
+
+ Change Minimizer::Options::min_trust_region_radius to double.
+
+ This was accidentally an int, which was setting the minimum
+ trust region radius to zero and effectively disabling a convergence
+ test based on it.
+
+ (Thanks to Sergey Sharybin for providing a reproduction for this)
+
+ Change-Id: Id0b9e246bcfee074954a5dc6a3a2342adab56c16
+
+commit e6707b2411b9a823b6c748f9f9d0b22225d767bb
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Tue Apr 16 15:44:23 2013 -0700
+
+ Lint fixes from William Rucklidge.
+
+ Change-Id: I57a6383bb875b24083cd9b7049333292d26f718c
+
+commit c7e69beb52c2c47182eaf8295025a668d0eefd80
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Tue Apr 16 09:39:16 2013 -0700
+
+ Add a missing mutex lock in the SchurEliminator. This
+ was lost somewhere along in the BLAS based refactoring.
+
+ Change-Id: I90b94fa9c3a8ea1b900a18f76ef6a7d0dbf24318
+
+commit faa72ace9abea24877173158bfec451d5b46597e
+Author: Joydeep Biswas <joydeep.biswas at gmail.com>
+Date: Mon Apr 15 17:34:43 2013 -0400
+
+ Update to compile with stricter gcc checks.
+
+ Change-Id: Iecb37cbe7201a4d4f42b21b427fa1d35d0183b1b
+
+commit 487250eb27256a41d38c5037bdac9a09a3160edb
+Author: Sameer Agarwal <sameeragarwal at google.com>
+Date: Fri Apr 5 14:20:37 2013 -0700
+
+ Minor cleanups.
+
+ 1. Further BLAS and heap allocation cleanups in schur_eliminator_impl.h
+ 2. Modularize blas.h using macros.
+ 3. Lint cleanups from William Rucklidge.
+ 4. Small changes to jet.h
+ 5. ResidualBlock now uses blas.h
+
+ Performance improvements:
+
+ For static and dynamic sized blocks, the peformance is not changed much.
+
+ -use_quaternions -ordering user -linear_solver sparse_schur
+
+ master change
+ problem: 16-22106
+ gcc 3.4 3.3
+ clang 2.8 2.7
+
+ problem: 49-7776
+ gcc 1.7 1.7
+ clang 1.4 1.4
+
+ problem: 245-198739
+ gcc 80.1 79.6
+ clang 80.6 76.2
+
+ problem: 257-65132
+ gcc 12.2 12.0
+ clang 10.4 10.2
+
+ problem: 356-226730
+ gcc 99.0 96.8
+ clang 88.9 88.3
+
+ problem: 744-543562
+ gcc 361.5 356.2
+ clang 352.7 343.5
+
+ problem: 1024-110968
+ gcc 45.9 45.6
+ clang 42.6 42.1
+
+ However, performance when using local parameterizations is
+ significantly improved due to residual_block.cc using blas.h
+
+ -use_quaternions -use_local_parameterization -ordering user -linear_solver sparse_schur
+
+ master change
+ problem: 16-22106
+ gcc 3.6 3.3
+ clang 3.5 2.8
+
+ problem: 49-7776
+ gcc 1.8 1.6
+ clang 1.7 1.4
+
+ problem: 245-198739
+ gcc 79.7 76.1
+ clang 79.7 73.0
+
+ problem: 257-65132
+ gcc 12.8 11.9
+ clang 12.3 9.8
+
+ problem: 356-226730
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list