mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-30 00:50:37 +08:00
58c5edae2f7c4d2533fe8a975c1f5f0b892dfd3e
794 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
58c5edae2f |
Relax an overly strict tolerance in iterative_refiner_test
Change-Id: I01afef985c0d248a50df2cadb97e4be9cd8d7889 |
||
|
|
3b2f1f7d28 |
Add fake FloatCXSparseCholesky and FloatSuiteSparseCholesky
Change-Id: I8d61144d0678b8da92322a18517fa6924d950653 |
||
|
|
93ba16fefc |
Simplify IterativeRefiner
Change the loop structure of IterativeRefiner to unconditionally refine for max_num_iterations. This is done for two reasons. 1. We expect to use this refinement for a small number of iterations where the convergence test is useless. 2. Eliminating the convergence test means we can restructure the loop and save on a sparse matrix-vector multiply, saving precious compute. Change-Id: I6347f453a5d19d234af2a2eb1bce811048963e06 |
||
|
|
05fc04490f |
Converts std::unique_lock to std::lock_guard.
Tested by compiling for CXX threads, OpenMP, no threads, and TBB. Change-Id: If1ba5cfce83e2ad4e1015354ce67f5b23e89101f |
||
|
|
f973e107d2 |
Enable mixed precision solves.
1. Add Solver::Options::use_mixed_precision_solves, and Solver::Options::max_num_refinement_iterations. 2. Make SparseCholesky::Create return a unique_ptr. 3. SparseCholesky::Create now takes LinearSolver::Options as an argument. 4. IterativeRefiner's constructor does not require num_cols as an argument. 5. SparseNormalCholeskySolver now uses a separate rhs vector. This basic implementation results in a 10% reduction in solver time and 30% reduction in linear solver memory usage. Change-Id: I6830f32cae2febf082d2733262eb2c9f0482b0ea |
||
|
|
81f413b720 |
Optimization for custom small blas multiplication with dynamic
template parameters in C level. - unroll for loops - matrix access more cache coherent - platform independant Briefly, this commit brings 1~50% performance improvments for most cases in small_blas_gem(m/v)_benchmark, but a small drop for corner cases with small dimensions especially 1,2,3. Here we list the results partially, which show decrease percentage of executing time, compared to unoptimized version. Platform: desktop PC (i7-7700 CPU MP8@3.60GHz + ubuntu 17.10) (Lenovo Research Device+ Lab, <yangfan34@lenovo.com>) Benchmark Time CPU ----------------------------------------------------------- BM_MatrixMatrixMultiplyDynamic/1/1/1 -0.0850 -0.0851 BM_MatrixMatrixMultiplyDynamic/1/1/2 -0.1444 -0.1446 BM_MatrixMatrixMultiplyDynamic/1/1/3 -0.1934 -0.1935 BM_MatrixMatrixMultiplyDynamic/1/1/4 -0.2933 -0.2934 BM_MatrixMatrixMultiplyDynamic/1/1/8 -0.1579 -0.1580 BM_MatrixMatrixMultiplyDynamic/1/1/12 -0.1556 -0.1558 BM_MatrixMatrixMultiplyDynamic/1/1/15 -0.1598 -0.1599 BM_MatrixMatrixMultiplyDynamic/1/2/1 -0.0797 -0.0799 BM_MatrixMatrixMultiplyDynamic/1/2/2 -0.2950 -0.2951 BM_MatrixMatrixMultiplyDynamic/1/2/3 -0.1363 -0.1364 BM_MatrixMatrixMultiplyDynamic/1/2/4 -0.2435 -0.2437 BM_MatrixMatrixMultiplyDynamic/1/2/8 -0.2299 -0.2300 BM_MatrixMatrixMultiplyDynamic/1/2/12 -0.2441 -0.2442 BM_MatrixMatrixMultiplyDynamic/1/2/15 -0.1671 -0.1673 BM_MatrixMatrixMultiplyDynamic/1/3/1 -0.0774 -0.0775 BM_MatrixMatrixMultiplyDynamic/1/3/2 -0.2761 -0.2762 BM_MatrixMatrixMultiplyDynamic/1/3/3 -0.0840 -0.0841 BM_MatrixMatrixMultiplyDynamic/1/3/4 -0.2027 -0.2028 BM_MatrixMatrixMultiplyDynamic/1/3/8 -0.2481 -0.2482 BM_MatrixMatrixMultiplyDynamic/1/3/12 -0.2629 -0.2630 BM_MatrixMatrixMultiplyDynamic/1/3/15 -0.1958 -0.1959 BM_MatrixMatrixMultiplyDynamic/1/4/1 -0.1260 -0.1261 BM_MatrixMatrixMultiplyDynamic/1/4/2 -0.1834 -0.1835 BM_MatrixMatrixMultiplyDynamic/1/4/3 -0.1379 -0.1380 BM_MatrixMatrixMultiplyDynamic/1/4/4 -0.2636 -0.2637 BM_MatrixMatrixMultiplyDynamic/1/4/8 -0.2838 -0.2839 BM_MatrixMatrixMultiplyDynamic/1/4/12 -0.3320 -0.3321 BM_MatrixMatrixMultiplyDynamic/1/4/15 -0.2464 -0.2465 BM_MatrixMatrixMultiplyDynamic/1/8/1 -0.0766 -0.0767 BM_MatrixMatrixMultiplyDynamic/1/8/2 -0.1713 -0.1714 BM_MatrixMatrixMultiplyDynamic/1/8/3 -0.1158 -0.1159 BM_MatrixMatrixMultiplyDynamic/1/8/4 -0.3205 -0.3206 BM_MatrixMatrixMultiplyDynamic/1/8/8 -0.3514 -0.3515 BM_MatrixMatrixMultiplyDynamic/1/8/12 -0.3658 -0.3658 BM_MatrixMatrixMultiplyDynamic/1/8/15 -0.3187 -0.3188 BM_MatrixMatrixMultiplyDynamic/1/12/1 -0.0424 -0.0425 BM_MatrixMatrixMultiplyDynamic/1/12/2 -0.1800 -0.1800 BM_MatrixMatrixMultiplyDynamic/1/12/3 -0.1457 -0.1457 BM_MatrixMatrixMultiplyDynamic/1/12/4 -0.3768 -0.3769 BM_MatrixMatrixMultiplyDynamic/1/12/8 -0.4072 -0.4073 BM_MatrixMatrixMultiplyDynamic/1/12/12 -0.4391 -0.4392 BM_MatrixMatrixMultiplyDynamic/1/12/15 -0.3383 -0.3383 BM_MatrixMatrixMultiplyDynamic/1/15/1 -0.0442 -0.0443 BM_MatrixMatrixMultiplyDynamic/1/15/2 -0.2378 -0.2379 BM_MatrixMatrixMultiplyDynamic/1/15/3 -0.1553 -0.1554 BM_MatrixMatrixMultiplyDynamic/1/15/4 -0.3954 -0.3955 BM_MatrixMatrixMultiplyDynamic/1/15/8 -0.4334 -0.4335 BM_MatrixMatrixMultiplyDynamic/1/15/12 -0.4175 -0.4175 BM_MatrixMatrixMultiplyDynamic/1/15/15 -0.3242 -0.3243 BM_MatrixVectorMultiply/1/1 +0.1613 +0.1613 BM_MatrixVectorMultiply/1/2 +0.1715 +0.1715 BM_MatrixVectorMultiply/1/3 +0.1051 +0.1051 BM_MatrixVectorMultiply/1/4 +0.1369 +0.1369 BM_MatrixVectorMultiply/1/8 +0.1180 +0.1180 BM_MatrixVectorMultiply/1/12 +0.0869 +0.0869 BM_MatrixVectorMultiply/1/15 +0.1887 +0.1886 BM_MatrixVectorMultiply/2/1 +0.1152 +0.1152 BM_MatrixVectorMultiply/2/2 +0.1520 +0.1520 BM_MatrixVectorMultiply/2/3 +0.1867 +0.1867 BM_MatrixVectorMultiply/2/4 +0.0173 +0.0173 BM_MatrixVectorMultiply/2/8 -0.0528 -0.0528 BM_MatrixVectorMultiply/2/12 -0.0176 -0.0176 BM_MatrixVectorMultiply/2/15 -0.0753 -0.0753 BM_MatrixVectorMultiply/3/1 +0.0844 +0.0844 BM_MatrixVectorMultiply/3/2 +0.0750 +0.0750 BM_MatrixVectorMultiply/3/3 -0.0153 -0.0153 BM_MatrixVectorMultiply/3/4 +0.0060 +0.0060 BM_MatrixVectorMultiply/3/8 +0.0152 +0.0152 BM_MatrixVectorMultiply/3/12 +0.0101 +0.0101 BM_MatrixVectorMultiply/3/15 -0.0795 -0.0795 BM_MatrixVectorMultiply/4/1 -0.1425 -0.1425 BM_MatrixVectorMultiply/4/2 -0.0869 -0.0869 BM_MatrixVectorMultiply/4/3 -0.1371 -0.1371 BM_MatrixVectorMultiply/4/4 -0.0088 -0.0088 BM_MatrixVectorMultiply/4/8 -0.1049 -0.1049 BM_MatrixVectorMultiply/4/12 -0.2566 -0.2566 BM_MatrixVectorMultiply/4/15 -0.2940 -0.2940 BM_MatrixVectorMultiply/6/1 -0.1798 -0.1798 BM_MatrixVectorMultiply/6/2 -0.0627 -0.0627 BM_MatrixVectorMultiply/6/3 -0.0389 -0.0389 BM_MatrixVectorMultiply/6/4 -0.1088 -0.1088 BM_MatrixVectorMultiply/6/8 -0.1815 -0.1815 BM_MatrixVectorMultiply/6/12 -0.1650 -0.1650 BM_MatrixVectorMultiply/6/15 -0.1855 -0.1855 BM_MatrixVectorMultiply/8/1 -0.1630 -0.1630 BM_MatrixVectorMultiply/8/2 -0.1248 -0.1248 BM_MatrixVectorMultiply/8/3 -0.1911 -0.1911 BM_MatrixVectorMultiply/8/4 -0.1996 -0.1996 BM_MatrixVectorMultiply/8/8 -0.2590 -0.2590 BM_MatrixVectorMultiply/8/12 -0.3266 -0.3266 BM_MatrixVectorMultiply/8/15 -0.3999 -0.3999 BM_MatrixTransposeVectorMultiply/1/1 -0.0234 -0.0234 BM_MatrixTransposeVectorMultiply/1/2 -0.0243 -0.0243 BM_MatrixTransposeVectorMultiply/1/3 -0.1324 -0.1324 BM_MatrixTransposeVectorMultiply/1/4 -0.2635 -0.2635 BM_MatrixTransposeVectorMultiply/1/8 -0.2461 -0.2461 BM_MatrixTransposeVectorMultiply/1/12 -0.2702 -0.2702 BM_MatrixTransposeVectorMultiply/1/15 -0.2538 -0.2538 BM_MatrixTransposeVectorMultiply/2/1 -0.0170 -0.0170 BM_MatrixTransposeVectorMultiply/2/2 -0.1475 -0.1475 BM_MatrixTransposeVectorMultiply/2/3 -0.1082 -0.1082 BM_MatrixTransposeVectorMultiply/2/4 -0.2594 -0.2595 BM_MatrixTransposeVectorMultiply/2/8 -0.2710 -0.2710 BM_MatrixTransposeVectorMultiply/2/12 -0.3053 -0.3053 BM_MatrixTransposeVectorMultiply/2/15 -0.2706 -0.2706 BM_MatrixTransposeVectorMultiply/3/1 -0.0096 -0.0096 BM_MatrixTransposeVectorMultiply/3/2 -0.2885 -0.2886 BM_MatrixTransposeVectorMultiply/3/3 -0.0790 -0.0790 BM_MatrixTransposeVectorMultiply/3/4 -0.2329 -0.2330 BM_MatrixTransposeVectorMultiply/3/8 -0.2742 -0.2742 BM_MatrixTransposeVectorMultiply/3/12 -0.3177 -0.3177 BM_MatrixTransposeVectorMultiply/3/15 -0.2610 -0.2610 BM_MatrixTransposeVectorMultiply/4/1 -0.0024 -0.0024 BM_MatrixTransposeVectorMultiply/4/2 -0.1578 -0.1578 BM_MatrixTransposeVectorMultiply/4/3 -0.0918 -0.0918 BM_MatrixTransposeVectorMultiply/4/4 -0.2570 -0.2570 BM_MatrixTransposeVectorMultiply/4/8 -0.3064 -0.3064 BM_MatrixTransposeVectorMultiply/4/12 -0.3316 -0.3316 BM_MatrixTransposeVectorMultiply/4/15 -0.2794 -0.2794 BM_MatrixTransposeVectorMultiply/6/1 -0.0484 -0.0484 BM_MatrixTransposeVectorMultiply/6/2 -0.1102 -0.1102 BM_MatrixTransposeVectorMultiply/6/3 -0.1188 -0.1188 BM_MatrixTransposeVectorMultiply/6/4 -0.2967 -0.2967 BM_MatrixTransposeVectorMultiply/6/8 -0.3190 -0.3190 BM_MatrixTransposeVectorMultiply/6/12 -0.3441 -0.3441 BM_MatrixTransposeVectorMultiply/6/15 -0.2723 -0.2723 BM_MatrixTransposeVectorMultiply/8/1 -0.0397 -0.0397 BM_MatrixTransposeVectorMultiply/8/2 -0.1453 -0.1453 BM_MatrixTransposeVectorMultiply/8/3 -0.1337 -0.1337 BM_MatrixTransposeVectorMultiply/8/4 -0.3084 -0.3084 BM_MatrixTransposeVectorMultiply/8/8 -0.3444 -0.3444 BM_MatrixTransposeVectorMultiply/8/12 -0.3717 -0.3717 BM_MatrixTransposeVectorMultiply/8/15 -0.3440 -0.3440 Change-Id: I17de05bf94699a07eea880b92a6d08daf1f038bb |
||
|
|
bdda32bb16 |
Add MixedSparseCholesky.
A simple class that composes SparseCholesky with IterativeRefiner. Change-Id: I4a67b8ca33a604aaa7b6a4bf511dad9501815f5b |
||
|
|
7750c4c55c |
Add a single precision variant of EigenSparseCholesky.
Given a double precision linear system, solve it using a single precision Cholesky factorization. Change-Id: I8a6e8b7a451e961a8a23a62dd7b5d8159c4db8ce |
||
|
|
83f70e5c02 |
Remove unnecessary memory allocations when using SuiteSparse.
1. Add SuiteSparse::CreateDenseVectorView 2. Replace calls to SuiteSparse::CreateDenseVector with SuiteSparse::CreateDenseVectorView. 2. Replace NULL with nullptr in suitesparse.cc and dynamic_sparse_normal_cholesky_solver.cc Change-Id: I94355c1dc27789e5b987a7b2850e9db6176a0914 |
||
|
|
21ec8f462c |
Change the API description for SparseCholesky::Solve.
The description does not reflect reality and puts constraints on the underlying implementation. Change-Id: I5f64e776c952868ae82fb2144acf51c2dcdfab56 |
||
|
|
5d8b494557 |
Adds a ParallelFor wrapper for no threads and OpenMP.
With the addition of C++11 support we can simplify the parallel for code by removing the ifdef branching. Converts coordinate_descent_minimizer.cc to use the thread_id ParallelFor API. Tested by building with OpenMP, C++11 threads, TBB, and no threads. All tests pass. Also compared timing via the bundle adjuster. ./bin/bundle_adjuster --input=../problem-744-543562-pre.txt With OpenMP num_threads=8 Head: Time (in seconds): Residual only evaluation 0.807753 (5) Jacobian & residual evaluation 4.489404 (6) Linear solver 41.826481 (5) Minimizer 50.745857 Total 73.294424 CL: Time (in seconds): Residual only evaluation 0.970483 (5) Jacobian & residual evaluation 4.647438 (6) Linear solver 41.781892 (5) Minimizer 50.848904 Total 73.089983 With OpenMP num_threads=1 HEAD: Time (in seconds): Residual only evaluation 2.990246 (5) Jacobian & residual evaluation 14.132090 (6) Linear solver 79.631951 (5) Minimizer 100.281847 Total 122.946267 CL: Time (in seconds): Residual only evaluation 3.075178 (5) Jacobian & residual evaluation 13.966451 (6) Linear solver 77.005441 (5) Minimizer 97.568712 Total 120.410454 Change-Id: I1857d7943073be7465b6c6476bf46ab11c5475a3 |
||
|
|
8d7b2528bc |
Improve the test coverage in small_blas_test
1. Add explicit tests for MatrixMatrixMultiplyNaive and MatrixTransposeMatrixMultiplyNaive 2. Add tests that exercise a variety of matrix sizes for MatrixVectorMultiply and MatrixTransposeVectorMultiply. Change-Id: I0b25ec346b719f19b2067848f9d4bb64c9848750 |
||
|
|
df4de10ace |
Revert "Optimization for custom small blas multiplication with dynamic"
This reverts commit
|
||
|
|
865ac62d38 |
Change a rather strict tolerance in the iterative_refiner_test
Change-Id: I924ab56e24b18502797202167703e4e9bf555550 |
||
|
|
68cc71ce5d |
Optimization for custom small blas multiplication with dynamic
template parameters in C level. - unroll for loops - matrix access more cache coherent - platform independant Briefly, this commit brings 1~50% performance improvments for most cases in small_blas_gem(m/v)_benchmark, but a small drop for corner cases with small dimensions especially 1,2,3. Here we list the results partially, which show decrease percentage of executing time, compared to unoptimized version. Platform: desktop PC (i7-7700 CPU MP8@3.60GHz + ubuntu 17.10) (Lenovo Research Device+ Lab, <yangfan34@lenovo.com>) Benchmark Time CPU ----------------------------------------------------------- BM_MatrixMatrixMultiplyDynamic/2/2/2 -0.1082 -0.1083 BM_MatrixMatrixMultiplyDynamic/2/2/15 -0.1270 -0.1270 BM_MatrixMatrixMultiplyDynamic/2/4/2 -0.1433 -0.1433 BM_MatrixMatrixMultiplyDynamic/2/4/15 -0.2069 -0.2068 BM_MatrixMatrixMultiplyDynamic/2/6/2 -0.1446 -0.1446 BM_MatrixMatrixMultiplyDynamic/2/6/15 -0.2156 -0.2156 BM_MatrixMatrixMultiplyDynamic/2/8/2 -0.1788 -0.1788 BM_MatrixMatrixMultiplyDynamic/2/8/15 -0.3316 -0.3316 BM_MatrixMatrixMultiplyDynamic/2/10/2 -0.2025 -0.2025 BM_MatrixMatrixMultiplyDynamic/2/10/15 -0.3444 -0.3444 BM_MatrixMatrixMultiplyDynamic/2/12/2 -0.0515 -0.0515 BM_MatrixMatrixMultiplyDynamic/2/12/15 -0.3733 -0.3733 BM_MatrixMatrixMultiplyDynamic/2/15/2 -0.2784 -0.2784 BM_MatrixMatrixMultiplyDynamic/2/15/15 -0.3704 -0.3704 BM_MatrixMatrixMultiplyDynamic/4/2/2 -0.1839 -0.1839 BM_MatrixMatrixMultiplyDynamic/4/2/15 -0.1922 -0.1922 BM_MatrixMatrixMultiplyDynamic/4/4/2 -0.2248 -0.2248 BM_MatrixMatrixMultiplyDynamic/4/4/15 -0.3132 -0.3132 BM_MatrixMatrixMultiplyDynamic/4/6/2 -0.2311 -0.2311 BM_MatrixMatrixMultiplyDynamic/4/6/15 -0.3239 -0.3239 BM_MatrixMatrixMultiplyDynamic/4/8/2 -0.0574 -0.0574 BM_MatrixMatrixMultiplyDynamic/4/8/15 -0.4173 -0.4173 BM_MatrixMatrixMultiplyDynamic/4/10/2 -0.2861 -0.2861 BM_MatrixMatrixMultiplyDynamic/4/10/15 -0.4065 -0.4064 BM_MatrixMatrixMultiplyDynamic/4/12/2 -0.2976 -0.2975 BM_MatrixMatrixMultiplyDynamic/4/12/15 -0.4218 -0.4218 BM_MatrixMatrixMultiplyDynamic/4/15/2 -0.3116 -0.3116 BM_MatrixMatrixMultiplyDynamic/4/15/15 -0.4242 -0.4241 BM_MatrixMatrixMultiplyDynamic/8/12/2 -0.3675 -0.3674 BM_MatrixMatrixMultiplyDynamic/8/12/4 -0.5055 -0.5055 BM_MatrixMatrixMultiplyDynamic/8/12/6 -0.4302 -0.4302 BM_MatrixMatrixMultiplyDynamic/8/12/8 -0.4854 -0.4854 BM_MatrixMatrixMultiplyDynamic/8/12/10 -0.4882 -0.4882 BM_MatrixMatrixMultiplyDynamic/8/12/12 -0.5209 -0.5209 BM_MatrixMatrixMultiplyDynamic/8/12/15 -0.4558 -0.4558 BM_MatrixMatrixMultiplyDynamic/8/15/2 -0.2319 -0.2319 BM_MatrixMatrixMultiplyDynamic/8/15/4 -0.5105 -0.5105 BM_MatrixMatrixMultiplyDynamic/8/15/6 -0.4477 -0.4477 BM_MatrixMatrixMultiplyDynamic/8/15/8 -0.5479 -0.5479 BM_MatrixMatrixMultiplyDynamic/8/15/10 -0.4843 -0.4843 BM_MatrixMatrixMultiplyDynamic/8/15/12 -0.5212 -0.5212 BM_MatrixMatrixMultiplyDynamic/8/15/15 -0.4459 -0.4459 BM_MatrixVectorMultiply/1/1 +0.0978 +0.0978 BM_MatrixVectorMultiply/1/2 +0.0551 +0.0551 BM_MatrixVectorMultiply/1/3 -0.0019 -0.0020 BM_MatrixVectorMultiply/1/4 +0.0563 +0.0562 BM_MatrixVectorMultiply/1/6 +0.1379 +0.1379 BM_MatrixVectorMultiply/1/7 +0.1090 +0.1090 BM_MatrixVectorMultiply/1/12 +0.0901 +0.0901 BM_MatrixVectorMultiply/1/16 +0.0493 +0.0493 BM_MatrixVectorMultiply/1/20 +0.2255 +0.2255 BM_MatrixVectorMultiply/2/1 +0.1261 +0.1261 BM_MatrixVectorMultiply/2/2 +0.2328 +0.2328 BM_MatrixVectorMultiply/2/3 +0.1404 +0.1403 BM_MatrixVectorMultiply/2/4 +0.0257 +0.0256 BM_MatrixVectorMultiply/2/6 -0.1691 -0.1691 BM_MatrixVectorMultiply/2/7 -0.2619 -0.2619 BM_MatrixVectorMultiply/2/12 -0.4261 -0.4261 BM_MatrixVectorMultiply/2/16 -0.5387 -0.5387 BM_MatrixVectorMultiply/2/20 -0.6171 -0.6171 BM_MatrixVectorMultiply/3/1 +0.1664 +0.1664 BM_MatrixVectorMultiply/3/2 +0.0848 +0.0848 BM_MatrixVectorMultiply/3/3 -0.0044 -0.0044 BM_MatrixVectorMultiply/3/4 -0.0683 -0.0684 BM_MatrixVectorMultiply/3/6 -0.1652 -0.1652 BM_MatrixVectorMultiply/3/7 -0.1633 -0.1633 BM_MatrixVectorMultiply/3/12 -0.1921 -0.1921 BM_MatrixVectorMultiply/3/16 -0.3659 -0.3659 BM_MatrixVectorMultiply/3/20 -0.4137 -0.4137 BM_MatrixVectorMultiply/4/1 -0.0577 -0.0577 BM_MatrixVectorMultiply/4/2 -0.1337 -0.1338 BM_MatrixVectorMultiply/4/3 -0.1443 -0.1443 BM_MatrixVectorMultiply/4/4 +0.0013 +0.0013 BM_MatrixVectorMultiply/4/6 -0.1071 -0.1071 BM_MatrixVectorMultiply/4/7 -0.1396 -0.1397 BM_MatrixVectorMultiply/4/12 -0.2792 -0.2792 BM_MatrixVectorMultiply/4/16 -0.4485 -0.4486 BM_MatrixVectorMultiply/4/20 -0.3588 -0.3588 Change-Id: I64a8cf11391e3d06341a2b8764cd1b4f1b8a23f1 |
||
|
|
f27082a174 |
Handle possible overflow in TrustRegionStepEvaluator.
Thanks to Volker Grabe for reporting the problem and suggesting a fix. Change-Id: I8072ffb275907baac62ee2ad84a02f17eb447c63 |
||
|
|
86814ab193 |
Add Iterative Refinement
Add a class IterativeRefiner which implements iterative refinement for SPD linear systems. Change-Id: I705d4e96cb7de9226ee35e2a9c11d98ffc0ee239 |
||
|
|
9814a91fcf |
Use C++11's inline member initialization syntax
Migrate all Option and Summary structs to use inline member initialization syntax. This reduces the amount of code, and collocates the default values with the documentation for the corresponding member variable. Change-Id: I8e6b9ee3b31464699d678667f6166ace5fc137c9 |
||
|
|
6851a63861 |
Fix lower-bound on result of minimising step-size polynomial.
- Previously we were requesting a step-size which minimised the polynomial in: [previous.x, current.x * factor]. - This is incorrect c/f Nocedal & Wright p60, the bounds for the minimising step-size should be: [current.x, current.x * factor]. - However, Nocedal & Wright's bounds are insufficient when the function can return invalid values, which we support. - In the case that f(current) is invalid, we need to contract the step-size to lie within: [previous.x, current.x) given that we know that previous.x is valid so a valid step must exist within that range. Change-Id: I67b5aaa09cc6d54cf5f264e2cf894ddc2af3f3ad |
||
|
|
8202edcbb4 |
Add missing <algorithm> headers.
Thanks to kea@google.com for reporting this. Change-Id: I9bde5823e9ea89451f476694c9b860080dffdf17 |
||
|
|
47863a1e56 |
Remove unnecessary unique_ptr initializations
Change-Id: Ibcd3676907f8cb0662b80f600101bcd7bec8e785 |
||
|
|
e809cf0c28 |
Adds missing functional include in thread_pool.h
Fixes a build error when building with CXX11_THREADS=ON. Change-Id: I5828dc408261c88a93745c2ade0b8da740a68e54 |
||
|
|
e49507cbea |
More C++ification.
"> >" -> ">>" "> > >" -> ">>>" Change-Id: Id1ddd9dbf030fe21d57207741b4ca8403068e55b |
||
|
|
7c4e8a454e |
Replace scoped_ptr with C++11's unique_ptr
Change-Id: Ib5a504c491e3a79af52a95accf009df473470c6b |
||
|
|
fc9336e12a |
Deprecate mutex.h
Use C++11's std::mutex and std::lock_guard instead. Change-Id: If8d513d5d8f2ee2a49c1ebb249ffa93e4a80086b |
||
|
|
a1458f3348 |
More C++11ification.
1. Replace HashMap and HashSet with std::unordered_map and std::unordered_set respectively. 2. Extract the pair hasher into a struct pair_hash. 3. Delete collections_port.h 4. Convert explicit iterator based loops to auto based loops where sensible. Change-Id: Ib88bcd13a7463d18435639d3b771abaa52080efb |
||
|
|
ffae101c75 |
Removed CERES_USE_CXX11
Remove the special handling for tr1::shared_ptr. Change-Id: Ic405dcfe881dd6560d236956f84bfb8911d0bcbb |
||
|
|
282b8b5f35 |
Require >= C++11 & CMake >= 3.5 when building Ceres.
- Removes CXX11 option, and all associate paraphernalia. Ceres now requires a compiler with full >= C++11 support. In MSVC terms this means >= 2013 Release 4. - This deprecates the use of CERES_STD_UNORDERED_MAP and CERES_USE_CXX11 as they will now always be defined. They will be removed from the source in a future CL. - For clients with CMake >= 3.8 we propagate via the exported/installed Ceres target the CXX version that was specified when Ceres was built. For versions < 3.8 (but >= 3.5) we specify the CXX features currently used in the Ceres public API. Change-Id: I535b545b10156e4426659c270a4a0649e071df0e |
||
|
|
9d4d0bfe29 |
Make CompressedRowSparseMatrix sensitive to StorageType
Even though we added support for storing the upper and lower triangular parts of symmetric matrices in CompressedRowSparseMatrix. RightMultiply, LeftMultiply and SquaredColumnNorm were not modified to account for this. This CL changes their implementation and adds thorough tests. Also methods that cannot work correctly with symmetric storage now CHECK and fail, because that indicates programmer error. Change-Id: I76288472c8bac98db7376a79bdb6259e346ef2b7 |
||
|
|
edffd386d2 |
Remove an unneeded virtual method from EigenSparseCholesky.
Change-Id: I4f9d1730feb98b21db8dea9cc1357a365fb8fcb8 |
||
|
|
0258b2a0b0 |
Update the sizes in small_blas_gem?_benchmark.cc
The sizes are reflective of the matrix sizes that occur in production. Change-Id: I8cd85d0640702df09afafced0d28ef416bab946f |
||
|
|
7bdceb46cf |
Evaluation callback API
This adds a callback mechanism to for users to get notified just before jacobian and residual evaluations. This will enable aggressive caching and sharing of compute between cost functions. Change-Id: I67993726920218edf71ab9ae70c34c204756c71a |
||
|
|
83098e12e8 |
Two changes to how we manage user's state.
1. When Solver::Options::update_state_every_iteration = true, the StateUpdatingCallback only updates the state on a successful iteration. This works fine but will not work if the user provides an EvaluationCallback, because every call to Evaluator::Evaluate will change the state visible to the user. This means that on unsuccessful iterations when the user's IterationCallback is called the state visible to the user would be the last evaluation which did not lead to an improved cost. This CL forces the StateUpdatingCallback to unconditionally update the user visible state. 2. When the minimizer terminates, we update the user visible state only if the solution is usable, otherwise the user's state will remain the same. To maintain this invariant we will now cache the user's state and make sure we use it to reset it upon return if the solver is not successful. Change-Id: Ic1f8fa6cb10d2753130ea752c70ff3d6b2f1462f |
||
|
|
2f2e7222fa |
Fix c++98 mode compilation for parallel_utils_test.cc
Change-Id: I009032978bca910704c52f4de693d04fa13c6e07 |
||
|
|
21f519d009 |
Improve threading in covariance.
Covariance computation wants to do a triangular iteration but as a single loop. Right now it iterates over a square and does nothing half the time, which is inefficient and has bad worst-case threading performance. This adds a utility that allows waste-free linear iteration over a triangle. Change-Id: I881d5683c65882f87dc2b5f8449a855d22ace755 |
||
|
|
0a30117489 |
Add parallel bundle tests to CMake build
This converts the bundle_adjustment_test to the parallel version with multiple binaries, as is already in place for the Bazel build. Additionally, since there is no longer a need for it, this deletes bundle_adjustment_test.cc. The test suite now runs on my 6 year old desktop in ~60 seconds! Change-Id: Ib4a59f8749e823f697e6da5d303977d284303ae3 |
||
|
|
660960294c |
Remove an errant binary character
Change-Id: I22b6ef8975c3c8a34e7f96ca89e4ec90461f453c |
||
|
|
f0c3b23684 |
Increases the performance of the C++11 threading.
Previously, the thread ID was acquired and released on every iteration of the for loop. The C++11 concurrent queue implementation is much slower than TBB's version and consequently this was a huge bottleneck. This introduces another ParallelFor API which takes the thread ID as a parameter in the evaluation function. This allows us to acquire and release the thread ID for each block of work which drastically improves the performance. This change brings us on par with OpenMP and TBB. See below for a timing comparison. Note: in this example this CLs C++11 version is faster to compute the residuals because TBB still must acquire the thread ID on every iteration, which has some overhead. Tested by building and running tests for no threading, OpenMP, TBB, and C++11 threads. Also ran bazel tests. ./bin/bundle_adjuster --input=problem-744-543562-pre.txt --num_threads=8 C++11 @Head Time (in seconds): Residual only evaluation 7.819692 (5) Jacobian & residual evaluation 11.606063 (6) Linear solver 47.860195 (5) Minimizer 70.877072 Total 90.806338 --------------------------------------------------- C++11 (This CL) Time (in seconds): Residual only evaluation 1.217500 (5) Jacobian & residual evaluation 5.796112 (6) Linear solver 44.080873 (5) Minimizer 54.635524 Total 77.640072 --------------------------------------------------- OpenMP Time (in seconds): Residual only evaluation 0.797023 (5) Jacobian & residual evaluation 5.633916 (6) Linear solver 43.280020 (5) Minimizer 53.199058 Total 76.250861 --------------------------------------------------- TBB Time (in seconds): Residual only evaluation 1.911095 (5) Jacobian & residual evaluation 5.557807 (6) Linear solver 44.074680 (5) Minimizer 55.002688 Total 78.052687 --------------------------------------------------- No Threads Time (in seconds): Residual only evaluation 2.939212 (5) Jacobian & residual evaluation 18.519874 (6) Linear solver 74.017837 (5) Minimizer 98.980080 Total 122.216391 Change-Id: I3af959b0771bbdfe8cad8c13896191d6ac903181 |
||
|
|
8c81149e4d |
Revert changes to MatrixTransposeMatrixMultiply.
This change while algebraically equivalent was causing non-trivial changes in the numbers being reported by ceres and in some cases they got worse. Also fix a small header include in parallel_for_test.cc which was discovered as part of testing this patch. Change-Id: I8c8d61538819f0b25af6059fa75ad068fc22f5e4 |
||
|
|
3d933750a7 |
Deprecate Solver::Options::num_linear_solver_threads
1. Solver::Options::num_threads now controls parallelism in Ceres Solver. The user specified value of Solver::Options::num_linear_solver_threads is ignored. 2. If the user specifies Solver::Options::num_linear_solver_threads and it is different from Solver::Options::num_threads, a warning is printed. 3. Solver::Summary:num_linear_solver_threads_given and Solver::Summary::num_linear_solver_threads_used are also deprecated and are always set to Solver::Summary::num_threads_given and Solver::Summary::num_threads_used. Change-Id: I20b9336d9336e400e6f0a15b63857c0c43eb271c |
||
|
|
d9d8de556a |
Convert a nested loop into a linear loop in covariance_impl.h
This improves the readability and simplifies the logic for interfacing with ParallelFor. More importantly, it paves the way for ParallelFor refactoring to improve its performance. Change-Id: I13b05596228900ee00d71f2ccce1db338844b9ab |
||
|
|
c48937e8cf |
Renable accidentally disabled tests in inner_product_computer_test
Change-Id: I25a73a2436c320ac5a3f84f9867258393fb2ffe9 |
||
|
|
973d30dffa |
Revert "Improve the performance of MatrixTransposeVector Multiply."
This reverts commit
|
||
|
|
0e0d5b44b5 |
Make SubsetPreconditionerTest compatible with old Eigen.
The enum Eigen::UpLoType did not have a name in older versions of Eigen, so a templated function using that enum type fails to compile with earlier versions of Eigen. This change replaces the enum in the template declaration with an int. Change-Id: Id128fd96b76818be347ee6ed5945c231936d9af8 |
||
|
|
7b2717582a |
Adds C++11 parallel for implementation.
Implements ParallelFor using the C++11 based ThreadPool. The C++11 parallel for is 50-70% faster than single threaded, and 20-30% slower than TBB. Tested by compiling with OpenMP, TBB, and C++11 Threading support and ran the unit tests. Ran bazel as well. Change-Id: I7fd6c9037ff9f200ce6999b5f39918995bb6b8ea |
||
|
|
f408f89e8b |
Adds a Ceres Context structure.
A Ceres Context holds common global state that can be re-used within Ceres. The Context current contains a thread pool if compiling with C++11 threading support. Threads are expensive to create and destroy so it is good to maintain across multiple Ceres solves. Tested by compiling with and without TBB support and ran unit tests. Ran bazel as well. Change-Id: I82f598dfae642aa0e81a6039dc174608a5e8dbfb |
||
|
|
f217ccfb69 |
Use MatrixTransposeMatrix multiply from small_blas.h
Prior to this Cheng Wang had to work the MatrixTransposeMatrixMultiply function in inner_product_computer because of its lagging performance. Now that the implementation of MatrixTransposeMatrixMultiply has been updated to match the implementation in inner_product_computer this CL removes the redundancy. This CL also includes a fix to MatrixTransposeMatrixMultiply which was missed in the earlier refactoring, because the test coverage for small_blas is broken. The tests for InnerProductComputer caught the problem. Change-Id: Ia8890010da058c2d9fe738dc77f0be34af5618ab |
||
|
|
656f9efbd3 |
Improve the performance of MatrixTransposeMatrix multiply.
Compute A'B as rank-1 sums of outer products of the rows of A and B. This is more cache coherent. Benchmark Time CPU Time Old Time New CPU Old CPU New -------------------------------------------------------------------------------------------------------------------------------------- BM_MatrixMatrixMultiplyDynamic/2/2/2 +0.0031 +0.0033 27 27 27 27 BM_MatrixMatrixMultiplyDynamic/2/2/4 +0.0383 +0.0380 41 42 41 42 BM_MatrixMatrixMultiplyDynamic/2/2/6 +0.0001 +0.0019 58 58 57 58 BM_MatrixMatrixMultiplyDynamic/2/2/8 +0.0169 +0.0169 70 71 70 71 BM_MatrixMatrixMultiplyDynamic/2/2/10 +0.0162 +0.0161 83 85 83 85 BM_MatrixMatrixMultiplyDynamic/2/2/12 -0.0049 -0.0048 93 93 93 93 BM_MatrixMatrixMultiplyDynamic/2/2/15 +0.0131 +0.0129 114 115 114 115 BM_MatrixMatrixMultiplyDynamic/2/4/2 +0.0494 +0.0489 32 34 32 34 BM_MatrixMatrixMultiplyDynamic/2/4/4 +0.0121 +0.0121 51 52 51 52 BM_MatrixMatrixMultiplyDynamic/2/4/6 +0.0134 +0.0138 70 71 70 71 BM_MatrixMatrixMultiplyDynamic/2/4/8 +0.0006 +0.0005 90 90 90 90 BM_MatrixMatrixMultiplyDynamic/2/4/10 +0.0248 +0.0248 107 110 107 110 BM_MatrixMatrixMultiplyDynamic/2/4/12 -0.0239 -0.0234 125 122 125 122 BM_MatrixMatrixMultiplyDynamic/2/4/15 +0.0611 +0.0605 155 164 155 164 BM_MatrixMatrixMultiplyDynamic/2/6/2 -0.0017 -0.0017 39 39 39 39 BM_MatrixMatrixMultiplyDynamic/2/6/4 +0.0139 +0.0147 59 60 59 60 BM_MatrixMatrixMultiplyDynamic/2/6/6 -0.1062 -0.1003 89 80 89 80 BM_MatrixMatrixMultiplyDynamic/2/6/8 -0.0339 -0.0344 116 112 115 111 BM_MatrixMatrixMultiplyDynamic/2/6/10 +0.0568 +0.0455 142 150 141 148 BM_MatrixMatrixMultiplyDynamic/2/6/12 -0.0073 -0.0062 155 154 155 154 BM_MatrixMatrixMultiplyDynamic/2/6/15 +0.0219 +0.0215 187 191 187 191 BM_MatrixMatrixMultiplyDynamic/2/8/2 -0.0165 -0.0160 43 42 43 42 BM_MatrixMatrixMultiplyDynamic/2/8/4 -0.0247 -0.0245 71 69 70 69 BM_MatrixMatrixMultiplyDynamic/2/8/6 -0.0642 -0.0614 104 98 104 98 BM_MatrixMatrixMultiplyDynamic/2/8/8 -0.0607 -0.0599 133 125 133 125 BM_MatrixMatrixMultiplyDynamic/2/8/10 -0.0523 -0.0510 166 157 166 157 BM_MatrixMatrixMultiplyDynamic/2/8/12 -0.0381 -0.0376 189 182 189 182 BM_MatrixMatrixMultiplyDynamic/2/8/15 -0.0725 -0.0716 243 226 243 225 BM_MatrixMatrixMultiplyDynamic/2/10/2 -0.0421 -0.0416 50 48 50 48 BM_MatrixMatrixMultiplyDynamic/2/10/4 -0.0558 -0.0549 83 78 83 78 BM_MatrixMatrixMultiplyDynamic/2/10/6 -0.0527 -0.0518 115 109 115 109 BM_MatrixMatrixMultiplyDynamic/2/10/8 -0.0421 -0.0413 150 144 150 144 BM_MatrixMatrixMultiplyDynamic/2/10/10 -0.0606 -0.0601 202 190 202 190 BM_MatrixMatrixMultiplyDynamic/2/10/12 -0.0409 -0.0406 224 215 224 215 BM_MatrixMatrixMultiplyDynamic/2/10/15 -0.0308 -0.0302 277 268 277 268 BM_MatrixMatrixMultiplyDynamic/2/12/2 -0.0059 -0.0058 53 52 53 52 BM_MatrixMatrixMultiplyDynamic/2/12/4 +0.0019 +0.0023 87 87 87 87 BM_MatrixMatrixMultiplyDynamic/2/12/6 -0.0032 -0.0025 126 125 126 125 BM_MatrixMatrixMultiplyDynamic/2/12/8 -0.0039 -0.0038 159 158 159 158 BM_MatrixMatrixMultiplyDynamic/2/12/10 -0.0175 -0.0171 205 201 205 201 BM_MatrixMatrixMultiplyDynamic/2/12/12 -0.0643 -0.0633 295 276 294 276 BM_MatrixMatrixMultiplyDynamic/2/12/15 -0.0215 -0.0201 328 321 328 321 BM_MatrixMatrixMultiplyDynamic/2/15/2 +0.0092 +0.0103 58 58 58 58 BM_MatrixMatrixMultiplyDynamic/2/15/4 +0.0762 +0.0765 98 105 98 105 BM_MatrixMatrixMultiplyDynamic/2/15/6 -0.0155 -0.0172 138 136 138 136 BM_MatrixMatrixMultiplyDynamic/2/15/8 +0.0674 +0.0658 180 192 180 191 BM_MatrixMatrixMultiplyDynamic/2/15/10 +0.0254 +0.0255 236 242 236 242 BM_MatrixMatrixMultiplyDynamic/2/15/12 -0.0383 -0.0378 289 278 289 278 BM_MatrixMatrixMultiplyDynamic/2/15/15 -0.0313 -0.0308 407 394 406 394 BM_MatrixMatrixMultiplyDynamic/4/2/2 +0.0286 +0.0286 42 43 42 43 BM_MatrixMatrixMultiplyDynamic/4/2/4 -0.0455 -0.0439 71 68 71 68 BM_MatrixMatrixMultiplyDynamic/4/2/6 +0.0221 +0.0229 93 95 93 95 BM_MatrixMatrixMultiplyDynamic/4/2/8 -0.0226 -0.0225 120 118 120 118 BM_MatrixMatrixMultiplyDynamic/4/2/10 -0.1153 -0.1130 158 140 158 140 BM_MatrixMatrixMultiplyDynamic/4/2/12 -0.0145 -0.0143 164 162 164 162 BM_MatrixMatrixMultiplyDynamic/4/2/15 -0.0396 -0.0393 205 197 205 197 BM_MatrixMatrixMultiplyDynamic/4/4/2 -0.0696 -0.0682 57 53 57 53 BM_MatrixMatrixMultiplyDynamic/4/4/4 -0.0233 -0.0231 91 89 91 89 BM_MatrixMatrixMultiplyDynamic/4/4/6 -0.0711 -0.0702 130 121 130 121 BM_MatrixMatrixMultiplyDynamic/4/4/8 -0.1180 -0.1113 178 157 176 157 BM_MatrixMatrixMultiplyDynamic/4/4/10 -0.0301 -0.0282 194 188 194 188 BM_MatrixMatrixMultiplyDynamic/4/4/12 -0.1156 -0.1137 251 222 251 222 BM_MatrixMatrixMultiplyDynamic/4/4/15 -0.0182 -0.0179 307 302 307 301 BM_MatrixMatrixMultiplyDynamic/4/6/2 -0.0228 -0.0220 64 63 64 63 BM_MatrixMatrixMultiplyDynamic/4/6/4 +0.0048 +0.0045 106 107 106 107 BM_MatrixMatrixMultiplyDynamic/4/6/6 -0.0131 -0.0126 155 153 155 153 BM_MatrixMatrixMultiplyDynamic/4/6/8 -0.0526 -0.0502 211 200 210 200 BM_MatrixMatrixMultiplyDynamic/4/6/10 -0.0995 -0.0975 274 247 274 247 BM_MatrixMatrixMultiplyDynamic/4/6/12 -0.0436 -0.0430 297 284 297 284 BM_MatrixMatrixMultiplyDynamic/4/6/15 +0.0042 +0.0050 344 345 343 345 BM_MatrixMatrixMultiplyDynamic/4/8/2 -0.0283 -0.0279 74 72 74 72 BM_MatrixMatrixMultiplyDynamic/4/8/4 -0.0282 -0.0277 125 122 125 122 BM_MatrixMatrixMultiplyDynamic/4/8/6 -0.0756 -0.0693 185 171 184 171 BM_MatrixMatrixMultiplyDynamic/4/8/8 -0.0510 -0.0444 267 253 265 253 BM_MatrixMatrixMultiplyDynamic/4/8/10 -0.0512 -0.0460 301 285 299 285 BM_MatrixMatrixMultiplyDynamic/4/8/12 -0.0046 -0.0006 351 349 349 349 BM_MatrixMatrixMultiplyDynamic/4/8/15 -0.0795 -0.0785 452 416 451 416 BM_MatrixMatrixMultiplyDynamic/4/10/2 -0.0415 -0.0406 85 81 85 81 BM_MatrixMatrixMultiplyDynamic/4/10/4 -0.0118 -0.0118 143 141 143 141 BM_MatrixMatrixMultiplyDynamic/4/10/6 -0.0484 -0.0478 217 206 216 206 BM_MatrixMatrixMultiplyDynamic/4/10/8 -0.0373 -0.0372 280 269 280 269 BM_MatrixMatrixMultiplyDynamic/4/10/10 +0.0083 +0.0083 350 353 350 353 BM_MatrixMatrixMultiplyDynamic/4/10/12 -0.0364 -0.0365 436 420 436 420 BM_MatrixMatrixMultiplyDynamic/4/10/15 -0.0221 -0.0210 513 502 512 502 BM_MatrixMatrixMultiplyDynamic/4/12/2 -0.0569 -0.0565 94 89 94 89 BM_MatrixMatrixMultiplyDynamic/4/12/4 -0.0343 -0.0338 162 157 162 157 BM_MatrixMatrixMultiplyDynamic/4/12/6 +0.0197 +0.0198 227 232 227 231 BM_MatrixMatrixMultiplyDynamic/4/12/8 -0.0390 -0.0388 310 298 310 298 BM_MatrixMatrixMultiplyDynamic/4/12/10 -0.0088 -0.0085 389 386 389 386 BM_MatrixMatrixMultiplyDynamic/4/12/12 +0.0524 +0.0505 545 574 545 572 BM_MatrixMatrixMultiplyDynamic/4/12/15 +0.0801 +0.0764 597 645 597 642 BM_MatrixMatrixMultiplyDynamic/4/15/2 -0.0024 -0.0026 99 99 99 99 BM_MatrixMatrixMultiplyDynamic/4/15/4 -0.0289 -0.0270 187 181 186 181 BM_MatrixMatrixMultiplyDynamic/4/15/6 -0.0264 -0.0261 263 256 263 256 BM_MatrixMatrixMultiplyDynamic/4/15/8 -0.0344 -0.0334 349 337 348 337 BM_MatrixMatrixMultiplyDynamic/4/15/10 -0.0189 -0.0191 454 446 454 445 BM_MatrixMatrixMultiplyDynamic/4/15/12 -0.0483 -0.0470 524 499 523 498 BM_MatrixMatrixMultiplyDynamic/4/15/15 -0.1084 -0.1070 840 749 838 748 BM_MatrixMatrixMultiplyDynamic/6/2/2 -0.0574 -0.0561 59 56 59 56 BM_MatrixMatrixMultiplyDynamic/6/2/4 -0.0727 -0.0721 98 91 98 91 BM_MatrixMatrixMultiplyDynamic/6/2/6 -0.0292 -0.0283 133 129 133 129 BM_MatrixMatrixMultiplyDynamic/6/2/8 -0.0283 -0.0278 167 162 167 162 BM_MatrixMatrixMultiplyDynamic/6/2/10 -0.0482 -0.0476 216 206 216 206 BM_MatrixMatrixMultiplyDynamic/6/2/12 -0.0117 -0.0115 243 240 243 240 BM_MatrixMatrixMultiplyDynamic/6/2/15 -0.0234 -0.0225 299 292 299 292 BM_MatrixMatrixMultiplyDynamic/6/4/2 -0.0950 -0.0898 79 72 79 72 BM_MatrixMatrixMultiplyDynamic/6/4/4 -0.0300 -0.0298 130 127 130 127 BM_MatrixMatrixMultiplyDynamic/6/4/6 -0.0379 -0.0376 175 169 175 169 BM_MatrixMatrixMultiplyDynamic/6/4/8 -0.0340 -0.0319 236 228 236 228 BM_MatrixMatrixMultiplyDynamic/6/4/10 -0.0498 -0.0490 289 275 289 275 BM_MatrixMatrixMultiplyDynamic/6/4/12 +0.0134 +0.0134 325 330 325 330 BM_MatrixMatrixMultiplyDynamic/6/4/15 -0.0836 -0.0794 469 429 466 429 BM_MatrixMatrixMultiplyDynamic/6/6/2 -0.0614 -0.0563 91 86 91 86 BM_MatrixMatrixMultiplyDynamic/6/6/4 -0.0249 -0.0239 153 149 152 149 BM_MatrixMatrixMultiplyDynamic/6/6/6 -0.0442 -0.0438 235 224 234 224 BM_MatrixMatrixMultiplyDynamic/6/6/8 -0.0127 -0.0083 296 292 295 292 BM_MatrixMatrixMultiplyDynamic/6/6/10 +0.0305 +0.0302 360 371 360 371 BM_MatrixMatrixMultiplyDynamic/6/6/12 -0.0479 -0.0463 434 413 433 413 BM_MatrixMatrixMultiplyDynamic/6/6/15 -0.0774 -0.0742 542 500 540 500 BM_MatrixMatrixMultiplyDynamic/6/8/2 -0.0617 -0.0611 106 99 106 99 BM_MatrixMatrixMultiplyDynamic/6/8/4 -0.1153 -0.1147 202 179 202 179 BM_MatrixMatrixMultiplyDynamic/6/8/6 -0.0591 -0.0589 270 254 270 254 BM_MatrixMatrixMultiplyDynamic/6/8/8 -0.0677 -0.0671 381 355 381 355 BM_MatrixMatrixMultiplyDynamic/6/8/10 -0.0771 -0.0757 451 416 450 416 BM_MatrixMatrixMultiplyDynamic/6/8/12 -0.0520 -0.0519 522 495 522 495 BM_MatrixMatrixMultiplyDynamic/6/8/15 -0.0386 -0.0386 639 614 638 614 BM_MatrixMatrixMultiplyDynamic/6/10/2 -0.0764 -0.0756 121 111 120 111 BM_MatrixMatrixMultiplyDynamic/6/10/4 -0.0847 -0.0777 224 205 222 205 BM_MatrixMatrixMultiplyDynamic/6/10/6 -0.0762 -0.0748 320 295 319 295 BM_MatrixMatrixMultiplyDynamic/6/10/8 -0.0160 -0.0164 413 407 413 406 BM_MatrixMatrixMultiplyDynamic/6/10/10 +0.0438 +0.0429 526 549 525 548 BM_MatrixMatrixMultiplyDynamic/6/10/12 +0.0641 +0.0615 606 645 605 643 BM_MatrixMatrixMultiplyDynamic/6/10/15 +0.0983 +0.0965 741 814 740 812 BM_MatrixMatrixMultiplyDynamic/6/12/2 +0.0697 +0.0663 135 144 135 144 BM_MatrixMatrixMultiplyDynamic/6/12/4 -0.0230 -0.0240 251 245 250 244 BM_MatrixMatrixMultiplyDynamic/6/12/6 -0.0728 -0.0703 365 338 364 338 BM_MatrixMatrixMultiplyDynamic/6/12/8 -0.1444 -0.1402 514 440 511 440 BM_MatrixMatrixMultiplyDynamic/6/12/10 -0.1268 -0.1216 628 548 624 548 BM_MatrixMatrixMultiplyDynamic/6/12/12 -0.1323 -0.1250 883 766 875 766 BM_MatrixMatrixMultiplyDynamic/6/12/15 -0.1337 -0.1304 995 862 991 862 BM_MatrixMatrixMultiplyDynamic/6/15/2 -0.1163 -0.1140 158 140 158 140 BM_MatrixMatrixMultiplyDynamic/6/15/4 -0.0721 -0.0689 285 265 284 265 BM_MatrixMatrixMultiplyDynamic/6/15/6 -0.0597 -0.0582 414 389 413 389 BM_MatrixMatrixMultiplyDynamic/6/15/8 -0.1189 -0.1173 563 496 562 496 BM_MatrixMatrixMultiplyDynamic/6/15/10 -0.0754 -0.0737 749 693 747 692 BM_MatrixMatrixMultiplyDynamic/6/15/12 +0.0141 +0.0153 871 883 866 879 BM_MatrixMatrixMultiplyDynamic/6/15/15 -0.1184 -0.1152 1398 1233 1387 1228 BM_MatrixMatrixMultiplyDynamic/8/2/2 -0.0232 -0.0242 77 75 77 75 BM_MatrixMatrixMultiplyDynamic/8/2/4 +0.1114 +0.1085 120 133 119 132 BM_MatrixMatrixMultiplyDynamic/8/2/6 +0.0794 +0.0760 169 183 169 182 BM_MatrixMatrixMultiplyDynamic/8/2/8 +0.0833 +0.0780 221 239 221 238 BM_MatrixMatrixMultiplyDynamic/8/2/10 +0.0037 +0.0037 264 265 264 265 BM_MatrixMatrixMultiplyDynamic/8/2/12 +0.0114 +0.0115 301 304 301 304 BM_MatrixMatrixMultiplyDynamic/8/2/15 +0.0034 +0.0030 378 380 378 380 BM_MatrixMatrixMultiplyDynamic/8/4/2 +0.0197 +0.0198 90 91 90 91 BM_MatrixMatrixMultiplyDynamic/8/4/4 +0.0231 +0.0230 156 160 156 160 BM_MatrixMatrixMultiplyDynamic/8/4/6 +0.0233 +0.0235 225 230 225 230 BM_MatrixMatrixMultiplyDynamic/8/4/8 +0.0352 +0.0349 286 296 286 296 BM_MatrixMatrixMultiplyDynamic/8/4/10 +0.0569 +0.0551 362 382 362 382 BM_MatrixMatrixMultiplyDynamic/8/4/12 -0.0180 -0.0181 424 416 424 416 BM_MatrixMatrixMultiplyDynamic/8/4/15 -0.0807 -0.0763 627 576 623 576 BM_MatrixMatrixMultiplyDynamic/8/6/2 -0.0030 -0.0029 111 111 111 111 BM_MatrixMatrixMultiplyDynamic/8/6/4 +0.0053 +0.0051 198 199 198 199 BM_MatrixMatrixMultiplyDynamic/8/6/6 -0.1261 -0.1233 330 288 329 288 BM_MatrixMatrixMultiplyDynamic/8/6/8 -0.0760 -0.0755 398 368 398 368 BM_MatrixMatrixMultiplyDynamic/8/6/10 -0.0497 -0.0487 505 480 505 480 BM_MatrixMatrixMultiplyDynamic/8/6/12 +0.0090 +0.0091 529 534 529 534 BM_MatrixMatrixMultiplyDynamic/8/6/15 -0.0778 -0.0757 704 649 702 649 BM_MatrixMatrixMultiplyDynamic/8/8/2 -0.1332 -0.1305 150 130 149 130 BM_MatrixMatrixMultiplyDynamic/8/8/4 -0.0903 -0.0878 257 234 257 234 BM_MatrixMatrixMultiplyDynamic/8/8/6 -0.1177 -0.1165 380 335 379 335 BM_MatrixMatrixMultiplyDynamic/8/8/8 -0.0799 -0.0786 509 468 508 468 BM_MatrixMatrixMultiplyDynamic/8/8/10 -0.1098 -0.1057 604 538 601 537 BM_MatrixMatrixMultiplyDynamic/8/8/12 -0.0676 -0.0662 697 650 696 650 BM_MatrixMatrixMultiplyDynamic/8/8/15 -0.0707 -0.0696 856 796 855 796 BM_MatrixMatrixMultiplyDynamic/8/10/2 -0.0429 -0.0417 149 142 149 142 BM_MatrixMatrixMultiplyDynamic/8/10/4 -0.0652 -0.0640 286 267 286 267 BM_MatrixMatrixMultiplyDynamic/8/10/6 -0.0259 -0.0253 402 392 402 392 BM_MatrixMatrixMultiplyDynamic/8/10/8 -0.0131 -0.0129 526 520 526 519 BM_MatrixMatrixMultiplyDynamic/8/10/10 -0.0873 -0.0865 697 636 696 636 BM_MatrixMatrixMultiplyDynamic/8/10/12 -0.0130 -0.0127 799 788 798 788 BM_MatrixMatrixMultiplyDynamic/8/10/15 -0.0441 -0.0438 1018 973 1018 973 BM_MatrixMatrixMultiplyDynamic/8/12/2 -0.0384 -0.0379 172 166 172 165 BM_MatrixMatrixMultiplyDynamic/8/12/4 -0.0321 -0.0307 307 297 307 297 BM_MatrixMatrixMultiplyDynamic/8/12/6 -0.0394 -0.0380 458 440 458 440 BM_MatrixMatrixMultiplyDynamic/8/12/8 -0.0529 -0.0522 608 576 607 576 BM_MatrixMatrixMultiplyDynamic/8/12/10 -0.0566 -0.0560 747 705 747 705 BM_MatrixMatrixMultiplyDynamic/8/12/12 -0.0007 -0.0006 1024 1024 1024 1023 BM_MatrixMatrixMultiplyDynamic/8/12/15 -0.0422 -0.0420 1163 1114 1162 1113 BM_MatrixMatrixMultiplyDynamic/8/15/2 -0.0241 -0.0241 197 192 197 192 BM_MatrixMatrixMultiplyDynamic/8/15/4 -0.0515 -0.0514 352 334 352 333 BM_MatrixMatrixMultiplyDynamic/8/15/6 -0.0192 -0.0194 506 496 506 496 BM_MatrixMatrixMultiplyDynamic/8/15/8 -0.0338 -0.0334 674 651 674 651 BM_MatrixMatrixMultiplyDynamic/8/15/10 -0.0556 -0.0545 922 871 921 871 BM_MatrixMatrixMultiplyDynamic/8/15/12 -0.0473 -0.0462 1052 1002 1050 1001 BM_MatrixMatrixMultiplyDynamic/8/15/15 -0.0522 -0.0521 1484 1406 1483 1406 BM_MatrixTransposeMatrixMultiplyDynamic/2/2/2 -0.1216 -0.1203 31 27 31 27 BM_MatrixTransposeMatrixMultiplyDynamic/2/2/4 -0.3827 -0.3818 49 30 49 30 BM_MatrixTransposeMatrixMultiplyDynamic/2/2/6 -0.3901 -0.3888 67 41 67 41 BM_MatrixTransposeMatrixMultiplyDynamic/2/2/8 -0.5469 -0.5458 86 39 86 39 BM_MatrixTransposeMatrixMultiplyDynamic/2/4/2 -0.2362 -0.2365 47 36 47 36 BM_MatrixTransposeMatrixMultiplyDynamic/2/4/4 -0.4470 -0.4469 77 43 77 43 BM_MatrixTransposeMatrixMultiplyDynamic/2/4/6 -0.4545 -0.4546 111 61 111 61 BM_MatrixTransposeMatrixMultiplyDynamic/2/4/8 -0.6093 -0.6093 142 56 142 56 BM_MatrixTransposeMatrixMultiplyDynamic/2/5/2 -0.2345 -0.2348 54 41 54 41 BM_MatrixTransposeMatrixMultiplyDynamic/2/5/4 -0.5111 -0.5107 99 48 99 48 BM_MatrixTransposeMatrixMultiplyDynamic/2/5/6 -0.4944 -0.4946 136 69 136 69 BM_MatrixTransposeMatrixMultiplyDynamic/2/5/8 -0.6354 -0.6354 171 62 171 62 BM_MatrixTransposeMatrixMultiplyDynamic/2/8/2 -0.3370 -0.3369 82 55 82 55 BM_MatrixTransposeMatrixMultiplyDynamic/2/8/4 -0.5062 -0.5064 139 69 139 69 BM_MatrixTransposeMatrixMultiplyDynamic/2/8/6 -0.5422 -0.5421 208 95 208 95 BM_MatrixTransposeMatrixMultiplyDynamic/2/8/8 -0.6903 -0.6896 294 91 294 91 BM_MatrixTransposeMatrixMultiplyDynamic/2/10/2 -0.1791 -0.1811 99 82 99 81 BM_MatrixTransposeMatrixMultiplyDynamic/2/10/4 -0.5062 -0.5061 177 88 177 88 BM_MatrixTransposeMatrixMultiplyDynamic/2/10/6 -0.5110 -0.5110 256 125 256 125 BM_MatrixTransposeMatrixMultiplyDynamic/2/10/8 -0.6632 -0.6632 334 112 333 112 BM_MatrixTransposeMatrixMultiplyDynamic/2/12/2 -0.3272 -0.3269 120 81 120 81 BM_MatrixTransposeMatrixMultiplyDynamic/2/12/4 -0.5019 -0.5019 212 105 212 105 BM_MatrixTransposeMatrixMultiplyDynamic/2/12/6 -0.5365 -0.5365 303 140 303 140 BM_MatrixTransposeMatrixMultiplyDynamic/2/12/8 -0.6856 -0.6856 398 125 398 125 BM_MatrixTransposeMatrixMultiplyDynamic/2/15/2 -0.2425 -0.2425 143 109 143 109 BM_MatrixTransposeMatrixMultiplyDynamic/2/15/4 -0.5891 -0.5871 298 122 296 122 BM_MatrixTransposeMatrixMultiplyDynamic/2/15/6 -0.5790 -0.5782 414 174 413 174 BM_MatrixTransposeMatrixMultiplyDynamic/2/15/8 -0.7173 -0.7173 509 144 509 144 BM_MatrixTransposeMatrixMultiplyDynamic/4/2/2 +0.0482 +0.0489 37 39 37 39 BM_MatrixTransposeMatrixMultiplyDynamic/4/2/4 -0.2428 -0.2433 60 45 60 45 BM_MatrixTransposeMatrixMultiplyDynamic/4/2/6 -0.2921 -0.2917 84 59 84 59 BM_MatrixTransposeMatrixMultiplyDynamic/4/2/8 -0.4632 -0.4630 105 56 105 56 BM_MatrixTransposeMatrixMultiplyDynamic/4/4/2 -0.0305 -0.0301 60 58 60 58 BM_MatrixTransposeMatrixMultiplyDynamic/4/4/4 -0.3008 -0.3007 101 70 101 70 BM_MatrixTransposeMatrixMultiplyDynamic/4/4/6 -0.3708 -0.3700 149 94 149 94 BM_MatrixTransposeMatrixMultiplyDynamic/4/4/8 -0.5160 -0.5159 190 92 189 92 BM_MatrixTransposeMatrixMultiplyDynamic/4/5/2 -0.0187 -0.0185 71 70 71 70 BM_MatrixTransposeMatrixMultiplyDynamic/4/5/4 -0.3064 -0.3054 130 90 130 90 BM_MatrixTransposeMatrixMultiplyDynamic/4/5/6 -0.3762 -0.3753 184 115 184 115 BM_MatrixTransposeMatrixMultiplyDynamic/4/5/8 -0.5845 -0.5838 240 100 240 100 BM_MatrixTransposeMatrixMultiplyDynamic/4/8/2 +0.0517 +0.0521 109 115 109 115 BM_MatrixTransposeMatrixMultiplyDynamic/4/8/4 -0.2895 -0.2889 194 138 194 138 BM_MatrixTransposeMatrixMultiplyDynamic/4/8/6 -0.3138 -0.3136 279 191 279 191 BM_MatrixTransposeMatrixMultiplyDynamic/4/8/8 -0.5429 -0.5421 381 174 380 174 BM_MatrixTransposeMatrixMultiplyDynamic/4/10/2 +0.0612 +0.0620 135 143 135 143 BM_MatrixTransposeMatrixMultiplyDynamic/4/10/4 -0.3269 -0.3263 259 174 258 174 BM_MatrixTransposeMatrixMultiplyDynamic/4/10/6 -0.2955 -0.2961 343 242 343 241 BM_MatrixTransposeMatrixMultiplyDynamic/4/10/8 -0.5484 -0.5475 466 210 465 210 BM_MatrixTransposeMatrixMultiplyDynamic/4/12/2 +0.1234 +0.1239 157 177 157 177 BM_MatrixTransposeMatrixMultiplyDynamic/4/12/4 -0.3002 -0.2997 291 204 291 204 BM_MatrixTransposeMatrixMultiplyDynamic/4/12/6 -0.3419 -0.3415 415 273 415 273 BM_MatrixTransposeMatrixMultiplyDynamic/4/12/8 -0.5604 -0.5600 545 239 544 239 BM_MatrixTransposeMatrixMultiplyDynamic/4/15/2 +0.1730 +0.1712 185 217 185 216 BM_MatrixTransposeMatrixMultiplyDynamic/4/15/4 -0.3099 -0.3097 346 239 346 239 BM_MatrixTransposeMatrixMultiplyDynamic/4/15/6 -0.3743 -0.3741 521 326 521 326 BM_MatrixTransposeMatrixMultiplyDynamic/4/15/8 -0.5411 -0.5409 654 300 654 300 BM_MatrixTransposeMatrixMultiplyDynamic/6/2/2 +0.2546 +0.2547 41 51 41 51 BM_MatrixTransposeMatrixMultiplyDynamic/6/2/4 -0.0940 -0.0942 66 60 66 60 BM_MatrixTransposeMatrixMultiplyDynamic/6/2/6 -0.1584 -0.1585 95 80 95 80 BM_MatrixTransposeMatrixMultiplyDynamic/6/2/8 -0.4333 -0.4329 130 74 130 74 BM_MatrixTransposeMatrixMultiplyDynamic/6/4/2 +0.1951 +0.1952 69 82 69 82 BM_MatrixTransposeMatrixMultiplyDynamic/6/4/4 -0.2034 -0.2034 123 98 123 98 BM_MatrixTransposeMatrixMultiplyDynamic/6/4/6 -0.1998 -0.1995 178 142 178 142 BM_MatrixTransposeMatrixMultiplyDynamic/6/4/8 -0.4348 -0.4347 233 131 233 131 BM_MatrixTransposeMatrixMultiplyDynamic/6/5/2 +0.5517 +0.5521 82 128 82 128 BM_MatrixTransposeMatrixMultiplyDynamic/6/5/4 -0.1427 -0.1427 145 124 145 124 BM_MatrixTransposeMatrixMultiplyDynamic/6/5/6 -0.1846 -0.1846 220 179 220 179 BM_MatrixTransposeMatrixMultiplyDynamic/6/5/8 -0.4871 -0.4873 290 149 290 148 BM_MatrixTransposeMatrixMultiplyDynamic/6/8/2 +0.3469 +0.3473 131 176 131 176 BM_MatrixTransposeMatrixMultiplyDynamic/6/8/4 -0.1013 -0.1018 248 223 248 222 BM_MatrixTransposeMatrixMultiplyDynamic/6/8/6 -0.1652 -0.1670 354 295 353 294 BM_MatrixTransposeMatrixMultiplyDynamic/6/8/8 -0.4302 -0.4299 447 255 447 255 BM_MatrixTransposeMatrixMultiplyDynamic/6/10/2 +0.4005 +0.4001 157 219 157 219 BM_MatrixTransposeMatrixMultiplyDynamic/6/10/4 -0.0439 -0.0441 295 282 294 281 BM_MatrixTransposeMatrixMultiplyDynamic/6/10/6 -0.1031 -0.1074 420 377 420 375 BM_MatrixTransposeMatrixMultiplyDynamic/6/10/8 -0.3655 -0.3679 556 353 555 351 BM_MatrixTransposeMatrixMultiplyDynamic/6/12/2 +0.5654 +0.5604 183 287 183 286 BM_MatrixTransposeMatrixMultiplyDynamic/6/12/4 -0.1118 -0.1116 353 314 353 314 BM_MatrixTransposeMatrixMultiplyDynamic/6/12/6 -0.2045 -0.2053 517 411 516 410 BM_MatrixTransposeMatrixMultiplyDynamic/6/12/8 -0.4662 -0.4660 657 350 656 350 BM_MatrixTransposeMatrixMultiplyDynamic/6/15/2 +0.3582 +0.3588 242 328 241 328 BM_MatrixTransposeMatrixMultiplyDynamic/6/15/4 -0.1403 -0.1407 428 368 428 367 BM_MatrixTransposeMatrixMultiplyDynamic/6/15/6 -0.2424 -0.2421 632 479 632 479 BM_MatrixTransposeMatrixMultiplyDynamic/6/15/8 -0.5094 -0.5092 835 410 834 409 BM_MatrixTransposeMatrixMultiplyDynamic/8/2/2 +0.3930 +0.3925 47 66 47 66 BM_MatrixTransposeMatrixMultiplyDynamic/8/2/4 +0.0226 +0.0215 78 80 78 80 BM_MatrixTransposeMatrixMultiplyDynamic/8/2/6 -0.0428 -0.0427 105 100 105 100 BM_MatrixTransposeMatrixMultiplyDynamic/8/2/8 -0.3418 -0.3437 141 93 141 92 BM_MatrixTransposeMatrixMultiplyDynamic/8/4/2 +0.3927 +0.3924 85 118 85 118 BM_MatrixTransposeMatrixMultiplyDynamic/8/4/4 -0.0040 -0.0039 137 136 136 136 BM_MatrixTransposeMatrixMultiplyDynamic/8/4/6 -0.0342 -0.0339 204 197 204 197 BM_MatrixTransposeMatrixMultiplyDynamic/8/4/8 -0.3575 -0.3577 267 171 267 171 BM_MatrixTransposeMatrixMultiplyDynamic/8/5/2 +0.7014 +0.7033 99 168 99 168 BM_MatrixTransposeMatrixMultiplyDynamic/8/5/4 +0.0952 +0.0952 163 179 163 179 BM_MatrixTransposeMatrixMultiplyDynamic/8/5/6 -0.1164 -0.1163 246 218 246 218 BM_MatrixTransposeMatrixMultiplyDynamic/8/5/8 -0.3550 -0.3565 322 208 322 207 BM_MatrixTransposeMatrixMultiplyDynamic/8/8/2 +0.7074 +0.7072 140 239 140 239 BM_MatrixTransposeMatrixMultiplyDynamic/8/8/4 +0.1072 +0.1075 276 306 276 306 BM_MatrixTransposeMatrixMultiplyDynamic/8/8/6 -0.0771 -0.0768 398 368 398 367 BM_MatrixTransposeMatrixMultiplyDynamic/8/8/8 -0.3614 -0.3612 524 335 524 335 BM_MatrixTransposeMatrixMultiplyDynamic/8/10/2 +0.6979 +0.7004 184 313 184 312 BM_MatrixTransposeMatrixMultiplyDynamic/8/10/4 +0.0967 +0.0955 326 357 325 356 BM_MatrixTransposeMatrixMultiplyDynamic/8/10/6 -0.0248 -0.0239 486 474 485 474 BM_MatrixTransposeMatrixMultiplyDynamic/8/10/8 -0.3432 -0.3437 603 396 603 396 BM_MatrixTransposeMatrixMultiplyDynamic/8/12/2 +0.5977 +0.5985 210 335 210 335 BM_MatrixTransposeMatrixMultiplyDynamic/8/12/4 -0.0530 -0.0484 405 384 403 384 BM_MatrixTransposeMatrixMultiplyDynamic/8/12/6 -0.0557 -0.0561 574 542 574 541 BM_MatrixTransposeMatrixMultiplyDynamic/8/12/8 -0.2835 -0.2849 730 523 730 522 BM_MatrixTransposeMatrixMultiplyDynamic/8/15/2 +0.7117 +0.7085 254 434 254 433 BM_MatrixTransposeMatrixMultiplyDynamic/8/15/4 +0.0630 +0.0602 458 487 458 486 BM_MatrixTransposeMatrixMultiplyDynamic/8/15/6 -0.0321 -0.0330 662 641 662 640 BM_MatrixTransposeMatrixMultiplyDynamic/8/15/8 -0.3974 -0.3978 911 549 910 548 Change-Id: I09d87c1885be86177b93c8fe0e6f89a75eb2f7a1 |
||
|
|
d634d6168e |
Add small_blas_gemm_benchmark.
Change-Id: Ide8c86c77c4adf73a3f5b6be4f23ab3d59705f7b |
||
|
|
39ccb79ae6 |
Implement some C++11 math functions for Jet
Change-Id: Ie164aeaac980cd2fe48a86230e1948c9fd75424a |