[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