Revision: 55802
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55802
Author: nazgul
Date: 2013-04-05 09:22:54 +0000 (Fri, 05 Apr 2013)
Log Message:
-----------
Bundle current master of ceres-solver
Thins brings up some speed improvements:
SPARSE_SCHUR is approx 1.3-1.5x times faster
ITERATIVE_SCHUR is approx 1.2x times faster
For blender this means camera solution go a bit
faster now. Would not have affect on tracking
speed.
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/jet.h
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/block_sparse_matrix.cc
trunk/blender/extern/libmv/third_party/ceres/internal/ceres/partitioned_matrix_view.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/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/internal/ceres/blas.h
Modified: trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt 2013-04-05
07:56:59 UTC (rev 55801)
+++ trunk/blender/extern/libmv/third_party/ceres/CMakeLists.txt 2013-04-05
09:22:54 UTC (rev 55802)
@@ -141,6 +141,7 @@
include/ceres/solver.h
include/ceres/types.h
internal/ceres/array_utils.h
+ internal/ceres/blas.h
internal/ceres/block_evaluate_preparer.h
internal/ceres/block_jacobian_writer.h
internal/ceres/block_jacobi_preconditioner.h
Modified: trunk/blender/extern/libmv/third_party/ceres/ChangeLog
===================================================================
--- trunk/blender/extern/libmv/third_party/ceres/ChangeLog 2013-04-05
07:56:59 UTC (rev 55801)
+++ trunk/blender/extern/libmv/third_party/ceres/ChangeLog 2013-04-05
09:22:54 UTC (rev 55802)
@@ -1,3 +1,185 @@
+commit 520d35ef22dbcb05e344451c03ae64304e524a06
+Author: Sameer Agarwal <[email protected]>
+Date: Thu Apr 4 08:16:02 2013 -0700
+
+ Further BLAS improvements.
+
+ 1. Switch to Eigen's implementation when all dimensions are fixed.
+ 2. Use lazyProduct for eigen matrix-vector product. This brings
+ eigen's performance on iterative_schur closer to what it used
+ to be before the last commit. There is however still an
+ improvement to be had by using the naive implementation when
+ the matrix and vector have dynamic dimensions.
+
+ BENCHMARK
+ HEAD
CHANGE
+
+ problem-16-22106-pre.txt
+ gcc-eigen sparse_schur 0.859 gcc-eigen sparse_schur
0.853
+ clang-eigen sparse_schur 0.848 clang-eigen sparse_schur
0.850
+ gcc-blas sparse_schur 0.956 gcc-blas sparse_schur
0.865
+ clang-blas sparse_schur 0.954 clang-blas sparse_schur
0.858
+ gcc-eigen iterative_schur 4.656 gcc-eigen
iterative_schur 3.271
+ clang-eigen iterative_schur 4.664 clang-eigen
iterative_schur 3.307
+ gcc-blas iterative_schur 2.598 gcc-blas
iterative_schur 2.620
+ clang-blas iterative_schur 2.554 clang-blas
iterative_schur 2.567
+
+ problem-49-7776-pre.txt
+ gcc-eigen sparse_schur 0.477 gcc-eigen sparse_schur
0.472
+ clang-eigen sparse_schur 0.475 clang-eigen sparse_schur
0.479
+ gcc-blas sparse_schur 0.521 gcc-blas sparse_schur
0.469
+ clang-blas sparse_schur 0.508 clang-blas sparse_schur
0.471
+ gcc-eigen iterative_schur 3.172 gcc-eigen
iterative_schur 2.088
+ clang-eigen iterative_schur 3.161 clang-eigen
iterative_schur 2.079
+ gcc-blas iterative_schur 1.701 gcc-blas
iterative_schur 1.720
+ clang-blas iterative_schur 1.708 clang-blas
iterative_schur 1.694
+
+ problem-245-198739-pre.txt
+ gcc-eigen sparse_schur 28.092 gcc-eigen sparse_schur
28.233
+ clang-eigen sparse_schur 28.148 clang-eigen sparse_schur
28.400
+ gcc-blas sparse_schur 30.919 gcc-blas sparse_schur
28.110
+ clang-blas sparse_schur 31.001 clang-blas sparse_schur
28.407
+ gcc-eigen iterative_schur 63.095 gcc-eigen
iterative_schur 43.694
+ clang-eigen iterative_schur 63.412 clang-eigen
iterative_schur 43.473
+ gcc-blas iterative_schur 33.353 gcc-blas
iterative_schur 33.321
+ clang-blas iterative_schur 33.276 clang-blas
iterative_schur 33.278
+
+ problem-257-65132-pre.txt
+ gcc-eigen sparse_schur 3.687 gcc-eigen sparse_schur
3.629
+ clang-eigen sparse_schur 3.669 clang-eigen sparse_schur
3.652
+ gcc-blas sparse_schur 3.947 gcc-blas sparse_schur
3.673
+ clang-blas sparse_schur 3.952 clang-blas sparse_schur
3.678
+ gcc-eigen iterative_schur 121.512 gcc-eigen
iterative_schur 76.833
+ clang-eigen iterative_schur 123.547 clang-eigen
iterative_schur 78.763
+ gcc-blas iterative_schur 68.334 gcc-blas
iterative_schur 68.612
+ clang-blas iterative_schur 67.793 clang-blas
iterative_schur 68.266
+
+ Notes:
+
+ 1. Naive BLAS was a bit worse than eigen on fixed sized matrices. We did
not see this
+ before because of the different inlining thresholds. Fixing this
boosted eigen's
+ performance. Also the disparity between gcc and clang has gone away.
+
+ 2. SPARSE_SCHUR performance remains the same, since it is only testing
static sized
+ matrices.
+
+ 3. ITERATIVE_SCHUR performance goes up substantially due to the
lazyProduct change,
+ but even there, since most of the products are dynamic sized, the naive
implementation
+ wins handily.
+
+ Change-Id: Idc17f35b9c68aaebb1b2e131adf3af8374a85a4c
+
+commit 25ac54807eedf16fd6c34efc390901ee549a7d14
+Author: Sameer Agarwal <[email protected]>
+Date: Wed Apr 3 18:51:27 2013 -0700
+
+ Speed up Jets.
+
+ Change-Id: I101bac1b1a1cf72ca49ffcf843b73c0ef5a6dfcb
+
+commit 3d6eceb45cf27024865908f0c10a5c2b0f8719cf
+Author: Sameer Agarwal <[email protected]>
+Date: Tue Apr 2 21:45:48 2013 -0700
+
+ Replace more instances of Eigen GEMV with Ceres BLAS.
+
+ With this ITERATIVE_SCHUR with JACOBI preconditioner went down from
+ 280 seconds to 150 seconds on problem-744-543562-pre.txt.
+
+ Change-Id: I4f319c1108421e8d59f58654a4c0576ad65df609
+
+commit 296fa9b1279ee1900c8ae32d70e97cd10fc0b46b
+Author: Sameer Agarwal <[email protected]>
+Date: Tue Apr 2 09:44:15 2013 -0700
+
+ Replace Eigen block operations with small GEMM and GEMV loops.
+
+ 1. Add Matrix-Matrix and Matrix-Vector multiply functions.
+ 2. Replace Eigen usage in SchurEliminator with these custom
+ matrix operations.
+ 3. Save on some memory allocations in ChunkOuterProduct.
+ 4. Replace LDLT with LLT.
+
+ As a result on problem-16-22106-pre.txt, the linear solver time
+ goes down from 1.2s to 0.64s.
+
+ Change-Id: I2daa667960e0a1e8834489965a30be31f37fd87f
+
+commit 222ca20e8facf706582fe696b7f41247391eac12
+Author: Sameer Agarwal <[email protected]>
+Date: Mon Apr 1 09:11:07 2013 -0700
+
+ SuiteSparse cleanup.
+
+ 1. Silence CHOLMOD's indefiniteness warnings.
+ 2. Add a comment about how the error handling in suitesparse.cc
+ needs to be improved.
+ 3. Move the analysis logging into suitesparse.cc and out of the
+ three callsites.
+
+ Change-Id: Idd396b8ea4bf59fc1ffc7f9fcbbc7b38ed71643c
+
+commit b7ba93459b7f584eedb1a9f42f3d06bccabd33dc
+Author: Petter Strandmark <[email protected]>
+Date: Tue Feb 19 12:52:58 2013 +0100
+
+ Enable larger tuple sizes for Visual Studio 2012.
+
+ Visual Studio 2012 does not have variadic templates and implements
+ tuples differently. By default, only sizes up to 5 are supported,
+ which conflicts with Gtest.
+
+ Change-Id: Ieb8d59e4329863cbfa2729d8a76db0714c08d259
+
+commit 564a83fcc690ac8383bf52a782c45757ae7fa2ad
+Author: Sameer Agarwal <[email protected]>
+Date: Tue Mar 26 11:11:43 2013 -0700
+
+ Lint cleanup from William Rucklidge.
+
+ Change-Id: I8d4a0aa3e264775d20e99a6b5265f3023de92560
+
+commit cbe64827becbbaab5b435a71bf00353b4ddd026b
+Author: Sameer Agarwal <[email protected]>
+Date: Mon Mar 25 17:39:53 2013 -0700
+
+ Update documentation
+
+ Change-Id: Iea3c4b5409e593b1fb070a491ba8a479db32ca58
+
+commit 802639c89603c9541e624766349d1989a1f641c0
+Author: Pablo Speciale <[email protected]>
+Date: Mon Mar 25 20:53:45 2013 -0700
+
+ ceresproblem label was incorrect
+
+ Change-Id: I3e210375adba4fa50ff3c25398b20a65d241cb35
+
+commit 6bcb8d9c304a3b218f8788018dfdfe368bb7d60c
+Author: Pablo Speciale <[email protected]>
+Date: Mon Mar 25 16:40:26 2013 -0700
+
+ Compiling against static or shared library
+
+ Change-Id: I3fb35e9a49f90b8894f59dde49c90a7c2dd74b0a
+
+commit 619cfe692020c078275b68eac2167232fafdfffb
+Author: Sameer Agarwal <[email protected]>
+Date: Mon Mar 25 14:03:41 2013 -0700
+
+ Update version history
+
+ Change-Id: I1d036efad1507efd19d8581f147b38170b1f0543
+
+commit 6ae34757850a5fa8213e0d1a540d9d75d6840a08
+Author: Pablo Speciale <[email protected]>
+Date: Sun Mar 24 22:30:52 2013 -0700
+
+ Added documentation regarding the use of Ceres with cmake (once installed)
+ Commets about the flag ``BUILD_DOCUMENTATION=ON``
+
+ Change-Id: I8814927e60af190c8043bfc36e77fe76bfe6f562
+
commit f46de9e697eb5b8756084615e29ded48600a4d39
Author: Sergey Sharybin <[email protected]>
Date: Thu Mar 21 15:31:35 2013 +0600
@@ -437,171 +619,3 @@
Minor release script fixes.
Change-Id: Ifd0a7f4f584c85d4d9574eca46094b372a8d7aff
-
-commit b53c9667f508c125b8aa833e7a063fa44ef8a98e
-Author: Sergey Sharybin <[email protected]>
-Date: Mon Feb 25 01:14:26 2013 +0600
-
- Solve No Previous Prototype GCC warning
-
- In some cases there were missing includes of own
- header files from implementation files.
-
- In other cases moved function which are only used
- within single file into an anonymous namespace.
-
- Change-Id: I2c6b411bcfbc521e2a5f21265dc8e009a548b1c8
-
-commit 267ccc45a3e875bf87832a8ad615be690b4926d3
-Author: Sergey Sharybin <[email protected]>
-Date: Mon Feb 25 01:04:16 2013 +0600
-
- Fix for MinGW build on Windows
-
- GG_LONGLONG and GG_ULONGLONG shall use LL and ULL suffixes,
- since MinGW is actuall a GCC compiler.
-
- Solved by checking whether compilation happens with MinGW
- or not using standard MinGW's __MINGW32__ and __MINGW64__
- definitions.
-
- Change-Id: I789b34f6342a56ba42f4b280f7242700022ab7a1
-
-commit 509f68cfe3fd13b794c4e67ff38c761407c858cf
@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs