blender/extern/libmv/third_party/ceres/ChangeLog

674 lines
23 KiB
Plaintext
Raw Normal View History

commit 0435246de5f45e69b2c97d244ed61bedd340215a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Oct 8 18:12:53 2014 -0700
Add seene to users.rst
Change-Id: If40726775a3d4b234b6e10517fe9943d122a3384
commit fdf32b315f39553639f0becf078ad4eec763a10e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Oct 8 16:04:32 2014 -0700
Fix some errant tabs.
Change-Id: Iaf1906eaade49467ba282656cf0a10879d258b1f
commit 6768b3586a027bb850c0a50e2a27380f5d80142a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Oct 8 12:48:16 2014 -0700
Minor cleanups in preparation for a release.
1. Fix the release script to ignore the version.h checking.
2. Fix some ceres documentation formatting errors.
Change-Id: I3fd6b85e771b242f463d6a36c3efd8d691f9242f
commit 7b6bd1cd31aa0b8cb7fb97600c1b9999846e3152
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Oct 2 16:16:26 2014 -0700
Documentation update.
1. Complete restructuring of the documentation to account for
GradientProblemSolver.
2. Update the version history to account for changes since 1.9.0.
3. Add links and document the various examples that ship with ceres.
4. Documentation for GradientProblem GradientProblemSolver.
Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27
commit b7d321f505e936b6c09aeb43ae3f7b1252388a95
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Oct 3 15:47:59 2014 -0700
Relax the warning/error handing in GCC.
Thanks to Matthew Woehlke for suggesting this.
Change-Id: Iae754465c086b0841a7816df1a36781371d0dc9a
commit 94c6e7d27b5d48d81ab54ed9cdcbc55c3c099311
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Oct 1 15:55:13 2014 -0700
Improve multithreading when using inner iterations.
Inner iterations by default would use problems where the evaluator
was configured to use exactly one thread for doing the evaluation.
This is fine when there are multiple inner iteration problems
being executed concurrently, but every now and then there are
problem decompositions where there is just one parameter block
in the current independent set and it touches every single
residual block. In such cases it is essential that the evaluator
be configured to use multiple threads.
We now pay attention to the size of the independent set and
dynamically configure the number of threads being used by the
outer loop and the evaluator loop.
Thanks to William Rucklidge for reporting this issue and providing
a test problem to debug.
Change-Id: Iaff9a4ab6d2658cf7b61ea213575d23aab604e3b
commit 9e11cd16d09403b9270e621e839d5948b6a74b8d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Sep 29 14:27:58 2014 -0700
Faster BlockRandomAccessSparseMatrix::SymmetricRightMultiply.
Trade a small amount of memory to improve the cache coherency of
the SymmetricRightMultiply operation.
The resulting code leads to a 10-20% speedup in the linear solver
end to end.
Change-Id: I8ab2fe152099e849b211b5b19e4ef9f03d8e7f1c
commit 46b8461fd010c1e7ffce6bb2bdf8a84b659d5e09
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Sep 29 15:10:58 2014 -0700
Various minor fixes from William Rucklidge.
Change-Id: Ibe731d5db374ad8ee148d62a9fdd8d726b607a3f
commit b44cfdef25f6bf0917a23b3fd65cce38aa6a3362
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Sep 29 07:53:54 2014 -0700
Let ITERATIVE_SCHUR use an explicit Schur Complement matrix.
Up till now ITERATIVE_SCHUR evaluates matrix-vector products
between the Schur complement and a vector implicitly by exploiting
the algebraic expression for the Schur complement.
This cost of this evaluation scales with the number of non-zeros
in the Jacobian.
For small to medium sized problems there is a sweet spot where
computing the Schur complement is cheap enough that it is much
more efficient to explicitly compute it and use it for evaluating
the matrix-vector products.
This changes implements support for an explicit Schur complement
in ITERATIVE_SCHUR in combination with the SCHUR_JACOBI preconditioner.
API wise a new bool Solver::Options::use_explicit_schur_complement
has been added.
The implementation extends the SparseSchurComplementSolver to use
Conjugate Gradients.
Example speedup:
use_explicit_schur_complement = false
Time (in seconds):
Preprocessor 0.585
Residual evaluation 0.319
Jacobian evaluation 1.590
Linear solver 25.685
Minimizer 27.990
Postprocessor 0.010
Total 28.585
use_explicit_schur_complement = true
Time (in seconds):
Preprocessor 0.638
Residual evaluation 0.318
Jacobian evaluation 1.507
Linear solver 5.930
Minimizer 8.144
Postprocessor 0.010
Total 8.791
Which indicates an end-to-end speedup of more than 3x, with the linear
solver being sped up by > 4x.
The idea to explore this optimization was inspired by the recent paper:
Mining structure fragments for smart bundle adjustment
L. Carlone, P. Alcantarilla, H. Chiu, K. Zsolt, F. Dellaert
British Machine Vision Conference, 2014
which uses a more complicated algorithm to compute parts of the
Schur complement to speed up the matrix-vector product.
Change-Id: I95324af0ab351faa1600f5204039a1d2a64ae61d
commit 4ad91490827f2ebebcc70d17e63ef653bf06fd0d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Sep 24 23:54:18 2014 -0700
Simplify the Block Jacobi and Schur Jacobi preconditioners.
1. Extend the implementation of BlockRandomAccessDiagonalMatrix
by adding Invert and RightMultiply methods.
2. Simplify the implementation of the Schur Jacobi preconditioner
using these new methods.
3. Replace the custom storage used inside Block Jacobi preconditioner
with BlockRandomAccessDiagonalMatrix and simplify its implementation
too.
Change-Id: I9d4888b35f0f228c08244abbdda5298b3ce9c466
commit 8f7be1036b853addc33224d97b92412b5a1281b6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Sep 29 08:13:35 2014 -0700
Fix a formatting error TrustRegionMinimizer logging.
Change-Id: Iad1873c51eece46c3fdee1356d154367cfd7925e
commit c99872d48e322662ea19efb9010a62b7432687ae
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Sep 24 21:30:02 2014 -0700
Add BlockRandomAccessSparseMatrix::SymmetricRightMultiply.
Change-Id: Ib06a22a209b4c985ba218162dfb6bf46bd93169e
commit d3ecd18625ba260e0d00912a305a448b566acc59
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Sep 23 10:12:42 2014 -0700
2014-01-13 19:17:54 +00:00
Add an explicit include for local_parameterization.h
2014-01-13 19:17:54 +00:00
Thanks to cooordz for reporting this.
2014-01-13 19:17:54 +00:00
Change-Id: I7d345404e362a94ff1eb433ad6b9dcc4960ba76d
2014-01-13 19:17:54 +00:00
commit 5dd76869cf45122c79579423f09e0de08cf04092
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Fri Sep 19 16:08:25 2014 +0100
Fix unused-function warning with Eigen < 3.2.2.
- CreateBlockJacobian() is only ever used when Eigen >= 3.2.2 is
detected, but was previously defined whenever CERES_USE_EIGEN_SPARSE
was defined with no check on the Eigen version.
- This resulted in an unused-function compile warning that became an
error due to -Werror, preventing compilation when using Eigen < 3.2.2.
Change-Id: I24628ff329f14b087ece66bf2626bdc0de4ba224
commit 820cb7b14831aa03eca1e8186000cebfdf0a42f3
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Sep 17 09:46:08 2014 -0700
Add solver_utils.cc to Android.mk
Change-Id: I358522971711280f4362a1fa39b1568160e21e63
commit 092b94970a073f8b47179d96160226fc19095898
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Sep 5 11:56:29 2014 -0700
Add GradientProblem and GradientProblemSolver.
The line search minimizer in Ceres does not require that the
problems that is solving is a sum of squares. Over the past
year there have been multiple requests to expose this algorithm
on its own so that it can be used to solve unconstrained
non-linear minimization problems on its own.
With this change, a new optimization problem called
GradientProblem is introduced which is basically a thin
wrapper around a user defined functor that evaluates cost
and gradients (FirstOrderFunction) and an optional LocalParameterization.
Corresponding to it, a GradientProblemSolver and its associated
options and summary structs are introduced too.
An example that uses the new API to find the minimum of Rosenbrock's
function is also added.
Change-Id: I42bf687540da25de991e9bdb00e321239244e8b4
commit 6c45d6b891aac01489b478a021f99081c61792cb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Sep 11 07:48:30 2014 -0700
Add more inspection methods to Problem.
Problem::GetCostFunctionForResidualBlock
Problem::GetLossFunctionForResidualBlock
are added, so that users do not have to maintain this mapping
outside the Problem.
Change-Id: I38356dfa094b2c7eec90651dafeaf3a33c5f5f56
commit 6ad9b8e2ae66c9009441d0f9304486ec8dfa9a6a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Sep 9 14:29:28 2014 -0700
Ignore row/column blocks structure when using dynamic sparsity
The row/column blocks can be huge when using dynamic sparsity. This
can result in very large memory usage when augmenting the jacobian
with the LM diagonal.
Thanks to Mingsong Dou for reporting this.
Change-Id: I6aa140ceefa98389ae17958f89ca76e0c76f95b8
commit 7e43460d42e20be1ba13121655dbbfd0d1c751ae
Author: Martin Baeuml <baeuml@gmail.com>
Date: Mon Sep 8 16:49:06 2014 +0200
Fix a few typos in the documentation.
Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3
commit 1aef66eeae7042902655a11b0d6a1a32900abb7b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Sep 7 21:18:44 2014 -0700
Remove errant space.
Change-Id: Iedc06960417a9b938d57f623b4beb87a98e3d081
commit 89080ab153a33008782759187fa8e9af7d2f83f1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Sep 6 21:13:48 2014 -0700
Add LocalParameterization::MultiplyByJacobian.
This is needed to efficiently support LocalParameterization objects
in GradientProblemSolver.
Change-Id: Ic7b715b8be694b099dc95d6707a67474297533e6
commit d76da16f49d419ae3664ca1bdc2286c1ea78ebed
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Sep 7 18:42:49 2014 -0700
Move some routines to solver_utils.h/cc
This moves a couple of routines from solver.cc into solver_utils.h/cc
so that they can also be used by the upcoming GradientProblemSolver.
Change-Id: I627b32ad3dc639422aacde78a8e391459d947e99
commit cbf03ac292a0c0e9e6b7fcc1b08b67e95965922f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Sep 6 21:07:08 2014 -0700
Make LineSearchMinimizer consistent with TrustRegionMinimizer.
Change the logic for how IterationSummary objects are added to
Summary::iterations to match the one in TrustRegionMinimizer.
Change-Id: I57851ad8294e58f83b9115cca9c24695d86ee92a
commit f04c32319751e1efd610acd3699bca0a6dd6c6d1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Sep 6 21:05:41 2014 -0700
Fix some obsolete documentation in CostFunction::Evaluate
Change-Id: I1d7ee5c596fbf6a4d886dce5b989c8eb18af2dce
commit 9263547c02a1807532b159c217e7acd124d3db10
Author: Johannes Schönberger <hannesschoenberger@gmail.com>
Date: Sat Sep 6 17:26:15 2014 -0400
Fix CG solver options for ITERATIVE_SCHUR, which did not copy min_num_iterations
Change-Id: If31bc53b49ec20426fd438b79b8fa1f69d11e861
commit b41f048256d1a8184cbe874b5a96dffa7fa4630d
Author: Martin Baeuml <baeuml@gmail.com>
Date: Fri Sep 5 15:03:32 2014 +0200
Remove obsolete include of numeric_diff_functor.h.
numeric_diff_functor.h was removed and does not exist anymore.
Change-Id: I07bf04bf81142551e867b95b83a0653e11cad54c
commit b7fb6056a717cc3c372cfb7115c527ee8bc05ddb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Sep 3 11:19:02 2014 -0700
Remove NumericDiffFunctor.
Its API was broken, and its implementation was an unnecessary
layer of abstraction over CostFunctionToFunctor.
Change-Id: I18fc261fc6a3620b51a9eeb4dde0af03d753af69
commit 175fa8ff09049110a8509409f60cee5fd52cdbe6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Sep 2 06:49:08 2014 -0700
CostFunctionToFunctor allows dynamic number of residuals.
The code itself was perfectly capable of handling residuals, but there
was an overly strict runtime check that had to be removed.
Thanks to Domink Reitzle for reporting this.
Change-Id: I6a6d000a7c5203dd5945a61b4caeda1b8aeb09c9
commit 70ace0d5a5601901288974fcf27919754260cf0e
Author: Johannes Schönberger <hannesschoenberger@gmail.com>
Date: Sat Aug 30 15:52:34 2014 -0400
Fix max. linear solver iterations in ConjugateGradientsSolver
Change-Id: Ice0cef46441dbc1c121eeb42113667a46c96936f
commit c5d8d0680250f5eb554577d30d28fc805b03fab9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Aug 29 20:31:19 2014 -0700
Fix a unused function error with Eigen version 3.2.1 or less.
Thanks to Johannes Schoenberger for reporting this.
Change-Id: Ie17d28f2a68734a978a8c95007724bc4055de43a
commit 0e1cc2a55488e4cf381833baaa3531c02ce9d69e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Aug 29 09:16:56 2014 -0700
Fix the build on Eigen version 3.2.1 and older.
Change-Id: I18f5cb5d42113737d7b8f78a67acee28bd5b3e08
commit 5f96c62b56222f27e606f2246a8a16b6942af8d1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 23:06:17 2014 -0700
Add Block AMD ordering for SPARSE_SCHUR + EIGEN_SPARSE.
Ordering routines for the Schur complement when using EIGEN_SPARSE.
Also integration into SchurComplementSolver.
Part of this CL is also a refactoring of the block jacobian matrix
construction.
Change-Id: I11d665cc7d4867c64190e6fed1118f4d2e13d59b
commit 7344626c04d19ca1dc4871c377c4422c744b1bca
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 22:03:09 2014 -0700
Let EIGEN_SPARSE + SPARSE_NORMAL_CHOLESKY use block AMD.
Modify SparseNormalCholeskySolver to use a pre-ordered Jacobian
matrix.
Change-Id: Ib4d725d7a2d7bb94ea76dbb3a9b172784dbc8ea0
commit 9f7032369ea4e432f0fb507cb6d2209741ee6946
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 21:46:43 2014 -0700
Block AMD for SparseNormalCholesky + EIGEN_SPARSE.
This is just the reordering routine. The integration with
SparseNormalCholesky shall happen in a subsequent CL.
Change-Id: I39ddc32aa66b11c368faf75404850fa0ae0d2b3a
commit b9331cd4077100d645be22a912d5743eeda72878
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 14:42:27 2014 -0700
Cleanup reorder_program.cc
Program::SetParameterOffsetsAndIndex() was being called willy nilly.
Now the invariant is that any function that actually reorders the
program, updates the offsets and indices.
Also the logic around handling EIGEN_SPARSE has been simplified in
anticipation of the block AMD code that is forthcoming.
Last but not the least, num_eliminate_blocks, which is a rather
cryptic name to begin with has been replaced by the more meaningful
size_of_first_elimination_group.
Change-Id: I77e684f699a93b53e76aa406d64f40f8704df813
commit 79491a3f4a3939a3cce4644da7a998b7782b963a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 13:57:50 2014 -0700
Solver::FullReport now reports build config.
The header of Summary::FullReport now looks like
Solver Summary (v 1.10.0-suitesparse-cxsparse-lapack-no_openmp)
Original Reduced
Parameter blocks 22122 22122
Parameters 66462 66462
Residual blocks 83718 83718
Residual 167436 167436
Change-Id: Id1b81bbf90ba412d19e2dd3687eeb9d372b72c1b
commit 48068c753e91d77f6c96ef2d529a27ef8ee3947c
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 13:03:40 2014 -0700
Lint cleanup from William Rucklidge.
Change-Id: Ie0e0aa58440be7a4f67dcd633dbb6f1bb0c051a8
commit 6a51b135e6298e8ba44a58cc2b54a170ab61a82f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Aug 28 10:48:29 2014 -0700
Fix solver_test.cc
When Eigen is not installed, Solver::IsValid was not detecting
it correctly.
Change-Id: Id285a84d829a9e20bc5de663adfca66ac31e08f3
commit 62a8d64453ee41dae56710a4eead3fadf2fe1a4e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 27 22:54:00 2014 -0700
Expand check for lack of a sparse linear algebra library.
The LinearSolver factory was creating a NULL linear solver
if only Eigen's sparse linear algebra backend was available.
Thanks to Michael Samples and Domink Reitzle for reporting this.
Change-Id: I35e3a6c0fd0da2a31934adb5dfe4cad29577cc73
commit 12eb389b4ec4113a2260c1a192a1d3f8d1b6a2d3
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 27 22:18:33 2014 -0700
Fix Eigen Row/ColMajor bug in NumericDiffCostFunction.
If the parameter block size is 1, asking Eigen to create
a row-major matrix triggers a compile time error. Previously
we were handling the case where the number of rows in the
jacobian block was known statically, but the problem is present
when the nummber of rows is dynamic.
This CL fixes this problem.
Thanks to Dominik Reitzle for reporting this.
Change-Id: I99c3eec3558e66ebf4efa51c4dee8ce292ffe0c1
commit 6c25185bb1643d8d0f3d8e1a7b82a058156aa869
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Thu Aug 28 16:07:51 2014 +0100
Fix crash in Covariance if # threads > 1 requested without OpenMP.
- Previously if options.num_threads > 1 was given to Covariance compiled
without OpenMP, a CHECK() would be triggered in program_evalutor.
Change-Id: Iaade4f5ed5326b0c59a7014c750c41ee026e1124
commit 6f89d850fb4ace0104abccf467c4fe37ad378b79
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 27 11:51:50 2014 -0700
Further build breakage fixes.
1. Allow the minimum number of linear solver iterations to be zero.
2. Fix conjugate gradients solver's iteration loop to be sane again.
Change-Id: I8594815fec940c2b30e28eb58ec5d8baacf13dae
commit dd596d0f0d6d08951efc2c11a639b546db2080c6
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 27 11:26:50 2014 -0700
Fix the broken build.
Change-Id: I083cf1cca1bf4cca956193022d450364e73f833a
commit d906afae22b05b9b9a9a2657924f4c0bf1a9b5ea
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Aug 25 22:32:38 2014 -0700
A number of bug fixes.
1. Fix a build breakage in graph_test.
2. Respect Solver::Options::min_num_linear_solver_iterations in
conjugate_gradients_solver.cc
Thanks to Johannes Schönberger for reporting these.
Change-Id: Ib32e3929bf5d92dd576ae5b53d4d88797095136e
commit dab955928c6d0942d6acc5b5f1c4c11260d0767d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Aug 17 13:14:50 2014 -0700
Add an unweighted graph.
Rename Graph -> WeightedGraph.
Add a new Graph class, which is cheaper to construct and
work with if the weights are not needed.
This cuts down the cost of building the Hessian graph
significantly.
Change-Id: Id0cfc81dd2c0bb5ff8f63a1b55aa133c53c0c869
commit a0c282adbd268c2ad82551fab31fe1cf8d0c4282
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Aug 24 22:19:03 2014 -0700
Add EIGEN_STRONG_INLINE annotation to jet.h
This improves performance when using MSVC on Windows. On GCC
there will be no effect.
Change-Id: I555a81ff6823c2855d64773073f75af50c48d716
commit 20de0a7793c574e964350a623446136889f74632
Author: Björn Piltz <bjornpiltz@gmail.com>
Date: Mon Aug 25 17:05:54 2014 +0200
Fixed Malformed regex
I got the following error with MSVC:
Syntax error at index 9 in simple regular expression "NumGroups()": '(' is unsupported.
Change-Id: Id1952831d81d3eb5d73bbed8c311914c4c8ab51f
commit ccf8aea988269841d84d746e52164d5056c67a10
Author: Björn Piltz <bjornpiltz@gmail.com>
Date: Mon Aug 25 16:16:01 2014 +0200
Fixed MSVC error C2124: divide or mod by zero
Alternatively, if quiet_NaN is not available on all platforms a workaround would be:
volatile double zero = 0.0;
double x = 1.0/zero;
The 'volatile' is needed to shut up "warning C4723: potential divide by 0".
Change-Id: If2bbdab8540595aa2e0079e1eb6b6fed6d4a6ef7
commit 8de27be218d42b282d7f15867733ad07058b0887
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Aug 19 08:22:40 2014 -0700
Fix a bug in TrustRegionPreprocessor
TrustRegionPreprocessor was not setting Minimizer::Options::is_constrained.
This meant that the line search for bounds constraints was not being
invoked for bounds constrained problems.
And some minor lint cleanup.
Change-Id: I18852cfaf1b33fd90b7d8c196f2063c128126658
commit 1745dd615b3897a3ef9896acfdba67eee1739bf4
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Jun 5 21:30:13 2014 -0700
Refactor SolverImpl.
Replace SolverImpl with
a. A minimizer specific preprocessor class.
b. A generic Solve function inside solver.cc
c. Presummarize and Postsummarize functions to handle
updates to the summary object.
The existing SolverImpl class was a mixture of the above three
things and was increasingly complicated code to follow. This change,
breaks it into its three separate constituents, with the aims of
better separation of concerns and thus better testability and
reliability.
The call to Solver::Solve() now consists of
1. Presummarize - summarize the given state of the problem and solver
options.
2. Preprocess - Setup everything that is needed to call the minimizer.
This includes, removing redundant parameter and residual blocks,
setting up the reordering for the linear solver, creating the
linear solver, evaluator, inner iteration minimizer etc.
3. Minimize.
4. Post summarize - summarize the result of the preprocessing and the
solve.
Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a