Improvements to Schur template specializations

1. Refactor the python code that generates the template specializations
   to remove code duplication.
2. Improved the logic for template specialization selection where
   Eigen::Dynamic now serves as a wildcard.
3. Added schur_templates.h/cc which allows querying the set of available
   template specializations without instantiating a linear solver.
4. Added Solver::Summary::schur_structre_given and
   Solver::Summary::schur_structure_used and expose them in
   Solver::Summary::FullReport for better performance debugging.
5. Updated the templates with newer dates and some minor comments cleanup
   which lead to the the template specializations to be re-generated.

Change-Id: Iaf3c6f714353597899916c300465da01f151c3de
This commit is contained in:
Sameer Agarwal
2014-08-18 15:46:02 -07:00
parent 5dd76f9f00
commit 1cfec3c666
51 changed files with 856 additions and 526 deletions
+17
View File
@@ -2154,6 +2154,23 @@ The three arrays will be:
and asked for an automatic ordering, or if the problem contains
some constant or inactive parameter blocks.
.. member:: std::string Solver::Summary::schur_structure_given
For Schur type linear solvers, this string describes, the template
specialization which was detected in the problem and should be
used.
.. member:: std::string Solver::Summary::schur_structure_used
For Schur type linear solvers, this string describes the template
specialization that was actually instantiated and used. The reason
this will be different from
:member:`Solver::Summary::schur_structure_given` is because the
corresponding template specialization does not exist.
Template specializations can be added to ceres by editing
``internal/ceres/generate_template_specializations.py``
.. member:: bool Solver::Summary::inner_iterations_given
`True` if the user asked for inner iterations to be used as part of