Fix docs of supported sparse backends for mixed_precision_solves option
- Also adds documentation of mixed precision solves to Sphinx docs.
- Fix reference to Sphinx theme used (RTD not better).
- Fix NOTE syntax in use_explicit_schur_complement Sphinx docs.
Change-Id: I7bdac0f07eb737f49b05e3fcaa3eebd087355d2d
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index 7f49783..a924d95 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -701,8 +701,8 @@
#. ``BUILD_DOCUMENTATION [Default: OFF]``: Use this to enable building
the documentation, requires `Sphinx <http://sphinx-doc.org/>`_ and
- the `sphinx-better-theme
- <https://pypi.python.org/pypi/sphinx-better-theme>`_ package
+ the `sphinx-rtd-theme
+ <https://pypi.org/project/sphinx-rtd-theme/>`_ package
available from the Python package index. In addition, ``make
ceres_docs`` can be used to build only the documentation.
diff --git a/docs/source/nnls_solving.rst b/docs/source/nnls_solving.rst
index 5ee0b03..3c8ecbb 100644
--- a/docs/source/nnls_solving.rst
+++ b/docs/source/nnls_solving.rst
@@ -1408,7 +1408,7 @@
computed Schur complement. This can improve the performance of the
``ITERATIVE_SCHUR`` solver significantly.
- .. NOTE:
+ .. NOTE::
This option can only be used with the ``SCHUR_JACOBI``
preconditioner.
@@ -1453,6 +1453,36 @@
This setting only affects the `SPARSE_NORMAL_CHOLESKY` solver.
+.. member:: bool Solver::Options::use_mixed_precision_solves
+
+ Default: ``false``
+
+ .. NOTE::
+
+ This feature is EXPERIMENTAL and under development, use at your
+ own risk!
+
+ If true, the Gauss-Newton matrix is computed in *double* precision, but
+ its factorization is computed in **single** precision. This can result in
+ significant time and memory savings at the cost of some accuracy in the
+ Gauss-Newton step. Iterative refinement is used to recover some
+ of this accuracy back.
+
+ If ``use_mixed_precision_solves`` is true, we recommend setting
+ ``max_num_refinement_iterations`` to 2-3.
+
+ This option is currently only available if
+ ``sparse_linear_algebra_library_type`` is ``EIGEN_SPARSE`` or
+ ``ACCELERATE_SPARSE``, and ``linear_solver_type`` is
+ ``SPARSE_NORMAL_CHOLESKY`` or ``SPARSE_SCHUR``.
+
+.. member:: int Solver::Options::max_num_refinement_iterations
+
+ Default: ``0``
+
+ Number steps of the iterative refinement process to run when
+ computing the Gauss-Newton step, see ``use_mixed_precision_solves``.
+
.. member:: int Solver::Options::min_linear_solver_iterations
Default: ``0``
diff --git a/include/ceres/solver.h b/include/ceres/solver.h
index 61b8dd5..74fb300 100644
--- a/include/ceres/solver.h
+++ b/include/ceres/solver.h
@@ -536,8 +536,9 @@
// max_num_refinement_iterations to 2-3.
//
// NOTE2: The following two options are currently only applicable
- // if sparse_linear_algebra_library_type is EIGEN_SPARSE and
- // linear_solver_type is SPARSE_NORMAL_CHOLESKY, or SPARSE_SCHUR.
+ // if sparse_linear_algebra_library_type is EIGEN_SPARSE or
+ // ACCELERATE_SPARSE, and linear_solver_type is SPARSE_NORMAL_CHOLESKY
+ // or SPARSE_SCHUR.
bool use_mixed_precision_solves = false;
// Number steps of the iterative refinement process to run when