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