Sameer Agarwal
487c1aa51f
Expose SubsetPreconditioner in the API
...
https://github.com/ceres-solver/ceres-solver/issues/270
Detailed list of changes:
1. Add SUBSET to the PreconditionerType enum.
2. Add Solver::Options::residual_blocks_for_subset_preconditioner
3. Integrate SubsetPreconditioner into the CGNR solver.
4. Add the reordering logic needed for this to TrustRegionPreprocessor.
5. Expect CreateJacobianBlockTranspose to take the starting row block
so that we can work with subparts of the Jacobian matrix.
6. Extend the denoising example to use this preconditioner.
As an illustration of its performance, we consider the performance of
denoising -input ../data/ceres_noisy.pgm --foe_file ../data/5x5.foe
tl;dr
For the same cost,
SPARSE_NORMAL_CHOLESKY - 81s
CGNR + JACOBI - 718s
CGNR + SUBSET - 57s
SPARSE_NORMAL_CHOLESKY
======================
Cost:
Initial 2.317806e+05
Final 2.232323e+04
Change 2.094574e+05
Minimizer iterations 10
Successful steps 10
Unsuccessful steps 0
Time (in seconds):
Preprocessor 2.999746
Residual only evaluation 2.306811 (10)
Jacobian & residual evaluation 7.421727 (10)
Linear solver 65.517273 (10)
Minimizer 78.731011
Postprocessor 0.026079
Total 81.756836
Termination: CONVERGENCE (Function tolerance reached. |cost_change|/cost: 8.573046e-04 <= 1.000000e-03)
CGNR + JACOBI
=============
Cost:
Initial 2.317806e+05
Final 2.232344e+04
Change 2.094572e+05
Minimizer iterations 10
Successful steps 10
Unsuccessful steps 0
Time (in seconds):
Preprocessor 0.648814
Residual only evaluation 2.297607 (10)
Jacobian & residual evaluation 7.327886 (10)
Linear solver 699.601248 (10)
Minimizer 712.419493
Postprocessor 0.024014
Total 713.092321
Termination: CONVERGENCE (Function tolerance reached. |cost_change|/cost: 8.528538e-04 <= 1.000000e-03)
CGNR + SUBSET (random 20% residuals used for the preconditioner)
===============================================================
Cost:
Initial 2.317806e+05
Final 2.232327e+04
Change 2.094574e+05
Minimizer iterations 10
Successful steps 10
Unsuccessful steps 0
Time (in seconds):
Preprocessor 1.472743
Residual only evaluation 2.428315 (10)
Jacobian & residual evaluation 7.367796 (10)
Linear solver 42.585999 (10)
Minimizer 55.664459
Postprocessor 0.024098
Total 57.161301
Termination: CONVERGENCE (Function tolerance reached. |cost_change|/cost: 8.538277e-04 <= 1.000000e-03)
Change-Id: Ifb011408bd53edbb9439b0b7345649a38f999e18
2019-07-12 16:08:36 +02:00
..
2018-03-23 13:40:14 -07:00
2019-03-07 15:42:28 +00:00
2018-06-29 09:43:03 +01:00
2019-03-02 22:42:20 -08:00
2019-03-02 22:42:20 -08:00
2018-07-05 09:17:16 +01:00
2018-07-05 09:17:16 +01:00
2019-04-08 19:44:16 +00:00
2018-04-18 09:54:42 -07:00
2018-09-20 22:52:39 +08:00
2018-09-20 22:52:39 +08:00
2019-03-03 06:50:56 +00:00
2019-03-03 06:50:56 +00:00
2019-04-23 12:16:28 +02:00
2018-10-23 20:46:16 +02:00
2018-08-28 08:14:19 -07:00
2018-08-09 12:17:05 -07:00
2018-04-18 09:54:42 -07:00
2018-08-28 08:14:19 -07:00
2017-05-29 19:47:34 -07:00
2018-04-02 14:47:47 -07:00
2018-04-18 09:54:42 -07:00
2018-04-02 14:47:47 -07:00
2018-08-28 08:14:19 -07:00
2018-08-09 12:17:05 -07:00
2015-03-18 05:43:23 +00:00
2018-04-02 06:03:06 -07:00
2018-08-09 12:17:05 -07:00
2018-04-03 10:58:15 -07:00
2018-08-09 12:17:05 -07:00
2018-08-28 08:14:19 -07:00
2018-08-28 08:14:19 -07:00
2018-04-18 09:54:42 -07:00
2018-08-09 21:47:25 -07:00
2018-09-23 03:01:49 +00:00
2019-04-23 12:16:28 +02:00
2018-03-06 19:12:14 +00:00
2018-02-02 15:01:03 -08:00
2018-03-30 12:03:28 -07:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2015-03-18 05:43:23 +00:00
2018-04-02 14:47:47 -07:00
2019-07-12 16:08:36 +02:00
2018-04-18 09:54:42 -07:00
2019-05-30 18:15:01 -07:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2015-03-18 05:43:23 +00:00
2018-04-03 10:58:15 -07:00
2018-04-03 10:58:15 -07:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2018-04-18 09:54:42 -07:00
2018-04-10 17:22:15 -07:00
2018-04-10 17:22:15 -07:00
2018-09-25 10:08:35 -07:00
2018-09-25 10:08:35 -07:00
2018-04-02 14:47:47 -07:00
2018-08-28 08:14:19 -07:00
2018-04-18 09:54:42 -07:00
2018-02-26 10:37:53 -08:00
2018-04-18 09:54:42 -07:00
2018-02-26 10:37:53 -08:00
2018-08-28 08:14:19 -07:00
2018-04-03 10:58:15 -07:00
2015-03-18 05:43:23 +00:00
2018-09-23 10:56:34 +08:00
2018-09-23 10:56:34 +08:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2018-04-03 10:58:15 -07:00
2018-08-09 12:17:05 -07:00
2019-04-29 09:46:33 -07:00
2019-04-15 22:09:24 +02:00
2018-04-10 11:01:38 -07:00
2018-09-23 10:56:34 +08:00
2019-04-23 12:16:28 +02:00
2018-04-02 14:47:47 -07:00
2018-04-18 09:54:42 -07:00
2018-04-02 14:47:47 -07:00
2018-04-18 09:54:42 -07:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2018-04-18 09:54:42 -07:00
2018-04-02 14:47:47 -07:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2018-04-03 10:58:15 -07:00
2015-03-18 05:43:23 +00:00
2018-04-03 10:58:15 -07:00
2018-04-02 14:47:47 -07:00
2018-04-03 10:58:15 -07:00
2018-04-03 10:58:15 -07:00
2018-04-02 14:47:47 -07:00
2019-06-26 16:53:09 +01:00
2018-06-29 09:43:03 +01:00
2019-04-15 22:09:24 +02:00
2018-09-23 10:56:34 +08:00
2018-04-10 11:01:38 -07:00
2019-07-08 21:24:08 +02:00
2015-03-18 05:43:23 +00:00
2019-04-23 12:16:28 +02:00
2018-02-26 10:37:53 -08:00
2018-04-06 16:50:42 -07:00
2018-04-02 06:03:06 -07:00
2015-03-18 05:43:23 +00:00
2019-04-15 22:09:24 +02:00
2018-04-12 11:22:49 -07:00
2018-04-12 11:22:49 -07:00
2018-04-12 11:22:49 -07:00
2018-04-12 11:22:49 -07:00
2017-07-05 15:40:58 -07:00
2017-07-05 15:40:58 -07:00
2018-09-23 10:56:34 +08:00
2019-03-07 15:42:28 +00:00
2019-03-02 22:42:20 -08:00
2019-04-23 12:16:28 +02:00
2018-10-24 09:50:47 +02:00
2019-04-23 12:16:28 +02:00
2018-11-07 21:02:11 +01:00
2018-04-02 06:03:06 -07:00
2018-02-05 16:37:27 -08:00
2018-01-25 21:30:09 -08:00
2018-08-28 08:14:19 -07:00
2018-04-03 10:58:15 -07:00
2018-08-28 08:14:19 -07:00
2018-04-02 14:47:47 -07:00
2018-08-09 12:17:05 -07:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2018-08-28 08:14:19 -07:00
2018-04-02 14:47:47 -07:00
2018-04-02 14:47:47 -07:00
2018-04-03 10:58:15 -07:00
2018-02-25 20:53:10 -08:00
2018-04-02 14:47:47 -07:00
2018-10-08 20:42:15 +02:00
2018-10-08 20:42:15 +02:00
2019-05-31 09:00:40 -07:00
2019-05-31 09:00:40 -07:00
2019-05-31 09:00:40 -07:00
2018-04-16 12:54:18 -07:00
2018-04-11 21:15:02 -07:00
2018-04-11 21:15:02 -07:00
2018-08-28 08:14:19 -07:00
2018-08-28 08:14:19 -07:00
2018-04-18 09:54:42 -07:00
2019-04-23 12:16:28 +02:00
2015-03-18 05:43:23 +00:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2019-05-13 10:20:50 -07:00
2018-10-08 20:42:23 +02:00
2019-07-08 21:24:08 +02:00
2015-03-18 05:43:23 +00:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2018-08-28 08:14:19 -07:00
2018-04-02 14:47:47 -07:00
2015-03-18 05:43:23 +00:00
2018-06-29 09:43:03 +01:00
2019-07-12 16:08:36 +02:00
2019-04-23 12:16:28 +02:00
2019-04-19 13:36:37 +02:00
2018-08-28 08:14:19 -07:00
2018-03-30 12:03:28 -07:00
2019-03-03 18:53:13 +00:00
2018-03-29 15:16:49 -07:00
2019-04-23 12:16:28 +02:00
2018-04-02 14:47:47 -07:00
2018-11-02 08:51:24 +01:00
2018-04-18 09:54:42 -07:00
2018-03-30 12:03:28 -07:00
2018-08-09 12:17:05 -07:00
2018-09-12 18:30:51 +01:00
2018-09-12 18:30:51 +01:00
2018-09-12 18:30:51 +01:00
2018-04-09 10:10:03 -07:00
2018-09-12 18:30:51 +01:00
2018-04-03 10:58:15 -07:00
2018-03-02 13:33:19 -08:00
2018-03-02 13:33:19 -08:00
2018-10-08 20:42:23 +02:00
2018-08-28 08:14:19 -07:00
2018-10-10 10:56:13 -07:00
2019-03-03 16:48:03 -08:00
2018-10-23 20:46:16 +02:00
2018-08-28 08:14:19 -07:00
2018-08-28 08:14:19 -07:00
2019-03-07 15:42:28 +00:00
2017-07-05 07:56:58 -07:00
2018-08-28 08:14:19 -07:00
2017-07-05 07:56:58 -07:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2018-09-12 18:30:51 +01:00
2018-09-12 18:30:51 +01:00
2019-07-08 21:24:08 +02:00
2019-07-08 21:24:08 +02:00
2019-04-29 11:16:09 -07:00
2019-06-05 15:45:02 -07:00
2018-07-03 18:05:36 +00:00
2019-07-12 16:08:36 +02:00
2019-07-12 16:08:36 +02:00
2019-07-12 16:08:36 +02:00
2017-06-11 16:26:48 -07:00
2019-07-12 16:08:36 +02:00
2019-07-12 16:08:36 +02:00
2019-07-12 16:08:36 +02:00
2018-08-09 12:17:05 -07:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2019-04-29 09:46:33 -07:00
2019-04-29 09:46:33 -07:00
2019-04-23 12:16:28 +02:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2018-04-18 09:54:42 -07:00
2019-04-08 19:44:16 +00:00
2018-08-28 08:14:19 -07:00
2019-03-07 15:42:28 +00:00
2018-09-23 10:56:34 +08:00
2018-09-23 10:56:34 +08:00
2018-04-18 09:54:42 -07:00
2019-03-07 15:42:28 +00:00
2017-09-25 12:43:14 +02:00
2015-03-18 05:43:23 +00:00
2018-04-02 14:47:47 -07:00
2018-03-30 12:03:28 -07:00
2018-08-28 08:14:19 -07:00
2018-04-06 16:50:42 -07:00
2018-03-23 13:40:14 -07:00
2018-03-23 13:40:14 -07:00
2018-04-10 14:42:23 +08:00
2018-04-08 15:26:52 -07:00
2018-04-10 14:42:23 +08:00
2019-07-08 21:24:08 +02:00
2018-07-03 18:05:36 +00:00
2019-07-12 16:08:36 +02:00
2019-04-23 12:16:28 +02:00
2019-04-23 12:16:28 +02:00
2018-04-10 11:01:38 -07:00
2018-09-23 10:56:34 +08:00
2018-08-28 08:14:19 -07:00
2018-04-10 11:01:38 -07:00
2018-04-18 09:54:42 -07:00
2018-04-03 10:58:15 -07:00
2015-03-18 05:43:23 +00:00
2019-04-23 12:16:28 +02:00
2019-07-12 16:08:36 +02:00
2019-07-12 16:08:36 +02:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2018-06-29 09:43:03 +01:00
2018-04-18 17:37:20 -07:00
2018-04-20 11:02:48 -07:00
2018-04-10 17:22:15 -07:00
2018-09-12 18:30:51 +01:00
2018-09-22 12:01:20 +08:00
2018-07-03 18:05:36 +00:00
2018-07-03 18:05:36 +00:00
2018-10-11 06:36:39 -07:00
2018-04-02 14:47:47 -07:00
2018-09-25 18:47:50 +02:00
2018-09-25 18:47:50 +02:00
2019-04-16 02:51:34 +00:00
2019-04-16 02:51:34 +00:00
2018-04-02 14:47:47 -07:00
2019-05-30 15:16:41 -07:00
2018-04-02 14:47:47 -07:00
2018-10-11 06:36:39 -07:00
2019-07-12 16:08:36 +02:00
2018-04-06 20:13:16 -07:00
2018-09-23 10:56:34 +08:00
2018-04-06 16:50:42 -07:00
2019-07-12 16:08:36 +02:00
2018-04-03 10:58:15 -07:00
2018-09-23 10:56:34 +08:00
2018-04-18 09:54:42 -07:00
2018-04-03 10:58:15 -07:00
2018-08-28 08:14:19 -07:00
2018-09-23 10:56:34 +08:00
2017-09-26 13:10:54 +00:00