aboutsummaryrefslogtreecommitdiff
path: root/docs/source/version_history.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/version_history.rst')
-rw-r--r--docs/source/version_history.rst182
1 files changed, 30 insertions, 152 deletions
diff --git a/docs/source/version_history.rst b/docs/source/version_history.rst
index 5e1a150..f9bc273 100644
--- a/docs/source/version_history.rst
+++ b/docs/source/version_history.rst
@@ -7,6 +7,12 @@ Version History
1.7.0
=====
+Backward Incompatible API Changes
+---------------------------------
+
+#. ``Solver::Options::sparse_linear_algebra_library`` has been renamed
+ to ``Solver::Options::sparse_linear_algebra_library_type``.
+
New Features
------------
@@ -15,9 +21,17 @@ New Features
#. ``BFGS`` line search direction. (Alex Stewart)
#. C API
#. Speeded up the use of loss functions > 17x.
+#. Faster ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``
+ solvers.
+#. Support for multiple dense linear algebra backends. In particular
+ optimized ``BLAS`` and ``LAPACK`` implementations (e.g., Intel MKL,
+ ACML, OpenBLAS etc) can now be used to do the dense linear
+ algebra for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and
+ ``DENSE_SCHUR``
#. Use of Inner iterations can now be adaptively stopped. Iteration
and runtime statistics for inner iterations are not reported in
``Solver::Summary`` and ``Solver::Summary::FullReport``.
+#. Improved inner iteration step acceptance criterion.
#. Add BlockRandomAccessCRSMatrix.
#. Speeded up automatic differentiation by 7\%.
#. Bundle adjustment example from libmv/Blender (Sergey Sharybin)
@@ -27,17 +41,31 @@ New Features
#. Ability to write trust region problems to disk.
#. Add sinh, cosh, tanh and tan functions to automatic differentiation
(Johannes Schönberger)
+#. Simplifications to the cmake build file.
+#. ``miniglog`` can now be used as a replacement for ``google-glog``
+ on non Android platforms. (This is NOT recommended).
Bug Fixes
---------
+#. Fix ``ITERATIVE_SCHUR`` solver to work correctly when the schur
+ complement is of size zero. (Soohyun Bae)
+#. Fix the ``spec`` file for generating ``RPM`` packages (Brian Pitts
+ and Taylor Braun-Jones).
+#. Fix how ceres calls CAMD (Manas Jagadev)
+#. Fix breakage on old versions of SuiteSparse. (Fisher Yu)
+#. Fix warning C4373 in Visual Studio (Petter Strandmark)
+#. Fix compilation error caused by missing suitesparse headers and
+ reorganize them to be more robust. (Sergey Sharybin)
+#. Check GCC Version before adding -fast compiler option on
+ OSX. (Steven Lovegrove)
#. Add documentation for minimizer progress output.
#. Lint and other cleanups (William Rucklidge and James Roseborough)
#. Collections port fix for MSC 2008 (Sergey Sharybin)
#. Various corrections and cleanups in the documentation.
#. Change the path where CeresConfig.cmake is installed (Pablo
Speciale)
-#. Minor erros in documentation (Pablo Speciale)
+#. Minor errors in documentation (Pablo Speciale)
#. Updated depend.cmake to follow CMake IF convention. (Joydeep
Biswas)
#. Stablize the schur ordering algorithm.
@@ -97,17 +125,12 @@ New Features
#. Users can now use ``linear_solver_ordering`` to affect the
fill-reducing ordering used by ``SUITE_SPARSE`` for
``SPARSE_NORMAL_CHOLESKY``.
-
#. ``Problem`` can now report the set of parameter blocks it knows about.
-
#. ``TrustRegionMinimizer`` uses the evaluator to compute the gradient
instead of a matrix vector multiply.
-
#. On ``Mac OS``, whole program optimization is enabled.
-
#. Users can now use automatic differentiation to define new
``LocalParameterization`` objects. (Sergey Sharybin)
-
#. Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark)
@@ -183,7 +206,6 @@ New Features
addition to trust region algorithms. Currently there is support for
gradient descent, non-linear conjugate gradient and LBFGS search
directions.
-
#. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
part of it without calling the solver. In light of this the
following settings have been deprecated and removed from the API.
@@ -196,23 +218,17 @@ New Features
- ``Solver::Options::return_final_jacobian``
#. New, much improved HTML documentation using Sphinx.
-
#. Changed ``NumericDiffCostFunction`` to take functors like
``AutoDiffCostFunction``.
-
#. Added support for mixing automatic, analytic and numeric
differentiation. This is done by adding ``CostFunctionToFunctor``
and ``NumericDiffFunctor`` objects to the API.
-
#. Sped up the robust loss function correction logic when residual is
one dimensional.
-
#. Sped up ``DenseQRSolver`` by changing the way dense jacobians are
stored. This is a 200-500% improvement in linear solver performance
depending on the size of the problem.
-
#. ``DENSE_SCHUR`` now supports multi-threading.
-
#. Greatly expanded ``Summary::FullReport``:
- Report the ordering used by the ``LinearSolver``.
@@ -221,33 +237,22 @@ New Features
- Effective size of the problem solved by the solver, which now
accounts for the size of the tangent space when using a
``LocalParameterization``.
-
#. Ceres when run at the ``VLOG`` level 3 or higher will report
detailed timing information about its internals.
-
#. Remove extraneous initial and final residual evaluations. This
speeds up the solver a bit.
-
#. Automatic differenatiation with a dynamic number of parameter
blocks. (Based on an idea by Thad Hughes).
-
#. Sped up problem construction and destruction.
-
#. Added matrix adapters to ``rotation.h`` so that the rotation matrix
routines can work with row and column major matrices. (Markus Moll)
-
#. ``SCHUR_JACOBI`` can now be used without ``SuiteSparse``.
-
#. A ``.spec`` file for producing RPMs. (Taylor Braun-Jones)
-
#. ``CMake`` can now build the sphinx documentation (Pablo Speciale)
-
#. Add support for creating a CMake config file during build to make
embedding Ceres in other CMake-using projects easier. (Pablo
Speciale).
-
#. Better error reporting in ``Problem`` for missing parameter blocks.
-
#. A more flexible ``Android.mk`` and a more modular build. If binary
size and/or compile time is a concern, larger parts of the solver
can be disabled at compile time.
@@ -255,55 +260,34 @@ New Features
Bug Fixes
---------
#. Compilation fixes for MSVC2010 (Sergey Sharybin)
-
#. Fixed "deprecated conversion from string constant to char*"
warnings. (Pablo Speciale)
-
#. Correctly propagate ifdefs when building without Schur eliminator
template specializations.
-
#. Correct handling of ``LIB_SUFFIX`` on Linux. (Yuliy Schwartzburg).
-
#. Code and signature cleanup in ``rotation.h``.
-
#. Make examples independent of internal code.
-
#. Disable unused member in ``gtest`` which results in build error on
OS X with latest Xcode. (Taylor Braun-Jones)
-
#. Pass the correct flags to the linker when using
``pthreads``. (Taylor Braun-Jones)
-
#. Only use ``cmake28`` macro when building on RHEL6. (Taylor
Braun-Jones)
-
#. Remove ``-Wno-return-type-c-linkage`` when compiling with
GCC. (Taylor Braun-Jones)
-
#. Fix ``No previous prototype`` warnings. (Sergey Sharybin)
-
#. MinGW build fixes. (Sergey Sharybin)
-
#. Lots of minor code and lint fixes. (William Rucklidge)
-
#. Fixed a bug in ``solver_impl.cc`` residual evaluation. (Markus
Moll)
-
#. Fixed varidic evaluation bug in ``AutoDiff``.
-
#. Fixed ``SolverImpl`` tests.
-
#. Fixed a bug in ``DenseSparseMatrix::ToDenseMatrix()``.
-
#. Fixed an initialization bug in ``ProgramEvaluator``.
-
#. Fixes to Android.mk paths (Carlos Hernandez)
-
#. Modify ``nist.cc`` to compute accuracy based on ground truth
solution rather than the ground truth function value.
-
#. Fixed a memory leak in ``cxsparse.cc``. (Alexander Mordvintsev).
-
#. Fixed the install directory for libraries by correctly handling
``LIB_SUFFIX``. (Taylor Braun-Jones)
@@ -364,32 +348,22 @@ New Features
#. A new richer, more expressive and consistent API for ordering
parameter blocks.
-
#. A non-linear generalization of Ruhe & Wedin's Algorithm II. This
allows the user to use variable projection on separable and
non-separable non-linear least squares problems. With
multithreading, this results in significant improvements to the
convergence behavior of the solver at a small increase in run time.
-
#. An image denoising example using fields of experts. (Petter
Strandmark)
-
#. Defines for Ceres version and ABI version.
-
#. Higher precision timer code where available. (Petter Strandmark)
-
#. Example Makefile for users of Ceres.
-
#. IterationSummary now informs the user when the step is a
non-monotonic step.
-
#. Fewer memory allocations when using ``DenseQRSolver``.
-
#. GradientChecker for testing CostFunctions (William Rucklidge)
-
#. Add support for cost functions with 10 parameter blocks in
``Problem``. (Fisher)
-
#. Add support for 10 parameter blocks in ``AutoDiffCostFunction``.
@@ -397,40 +371,23 @@ Bug Fixes
---------
#. static cast to force Eigen::Index to long conversion
-
#. Change LOG(ERROR) to LOG(WARNING) in ``schur_complement_solver.cc``.
-
#. Remove verbose logging from ``DenseQRSolve``.
-
#. Fix the Android NDK build.
-
#. Better handling of empty and constant Problems.
-
#. Remove an internal header that was leaking into the public API.
-
#. Memory leak in ``trust_region_minimizer.cc``
-
#. Schur ordering was operating on the wrong object (Ricardo Martin)
-
#. MSVC fixes (Petter Strandmark)
-
#. Various fixes to ``nist.cc`` (Markus Moll)
-
#. Fixed a jacobian scaling bug.
-
#. Numerically robust computation of ``model_cost_change``.
-
#. Signed comparison compiler warning fixes (Ricardo Martin)
-
#. Various compiler warning fixes all over.
-
#. Inclusion guard fixes (Petter Strandmark)
-
#. Segfault in test code (Sergey Popov)
-
#. Replaced ``EXPECT/ASSERT_DEATH`` with the more portable
``EXPECT_DEATH_IF_SUPPORTED`` macros.
-
#. Fixed the camera projection model in Ceres' implementation of
Snavely's camera model. (Ricardo Martin)
@@ -442,57 +399,37 @@ New Features
------------
#. Android Port (Scott Ettinger also contributed to the port)
-
#. Windows port. (Changchang Wu and Pierre Moulon also contributed to the port)
-
#. New subspace Dogleg Solver. (Markus Moll)
-
#. Trust region algorithm now supports the option of non-monotonic steps.
-
#. New loss functions ``ArcTanLossFunction``, ``TolerantLossFunction``
and ``ComposedLossFunction``. (James Roseborough).
-
#. New ``DENSE_NORMAL_CHOLESKY`` linear solver, which uses Eigen's
LDLT factorization on the normal equations.
-
#. Cached symbolic factorization when using ``CXSparse``.
(Petter Strandark)
-
#. New example ``nist.cc`` and data from the NIST non-linear
regression test suite. (Thanks to Douglas Bates for suggesting this.)
-
#. The traditional Dogleg solver now uses an elliptical trust
region (Markus Moll)
-
#. Support for returning initial and final gradients & Jacobians.
-
#. Gradient computation support in the evaluators, with an eye
towards developing first order/gradient based solvers.
-
#. A better way to compute ``Solver::Summary::fixed_cost``. (Markus Moll)
-
#. ``CMake`` support for building documentation, separate examples,
installing and uninstalling the library and Gerrit hooks (Arnaud
Gelas)
-
#. ``SuiteSparse4`` support (Markus Moll)
-
#. Support for building Ceres without ``TR1`` (This leads to
slightly slower ``DENSE_SCHUR`` and ``SPARSE_SCHUR`` solvers).
-
#. ``BALProblem`` can now write a problem back to disk.
-
#. ``bundle_adjuster`` now allows the user to normalize and perturb the
problem before solving.
-
#. Solver progress logging to file.
-
#. Added ``Program::ToString`` and ``ParameterBlock::ToString`` to
help with debugging.
-
#. Ability to build Ceres as a shared library (MacOS and Linux only),
associated versioning and build release script changes.
-
#. Portable floating point classification API.
@@ -500,73 +437,44 @@ Bug Fixes
---------
#. Fix how invalid step evaluations are handled.
-
#. Change the slop handling around zero for model cost changes to use
relative tolerances rather than absolute tolerances.
-
#. Fix an inadvertant integer to bool conversion. (Petter Strandmark)
-
#. Do not link to ``libgomp`` when building on
windows. (Petter Strandmark)
-
#. Include ``gflags.h`` in ``test_utils.cc``. (Petter
Strandmark)
-
#. Use standard random number generation routines. (Petter Strandmark)
-
#. ``TrustRegionMinimizer`` does not implicitly negate the
steps that it takes. (Markus Moll)
-
#. Diagonal scaling allows for equal upper and lower bounds. (Markus Moll)
-
#. TrustRegionStrategy does not misuse LinearSolver:Summary anymore.
-
#. Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke)
-
#. QuaternionToAngleAxis now guarantees an angle in $[-\pi, \pi]$. (Guoxuan Zhang)
-
#. Added a workaround for a compiler bug in the Android NDK to the
Schur eliminator.
-
#. The sparse linear algebra library is only logged in
Summary::FullReport if it is used.
-
#. Rename the macro ``CERES_DONT_HAVE_PROTOCOL_BUFFERS``
to ``CERES_NO_PROTOCOL_BUFFERS`` for consistency.
-
#. Fix how static structure detection for the Schur eliminator logs
its results.
-
#. Correct example code in the documentation. (Petter Strandmark)
-
#. Fix ``fpclassify.h`` to work with the Android NDK and STLport.
-
#. Fix a memory leak in the ``levenber_marquardt_strategy_test.cc``
-
#. Fix an early return bug in the Dogleg solver. (Markus Moll)
-
#. Zero initialize Jets.
#. Moved ``internal/ceres/mock_log.h`` to ``internal/ceres/gmock/mock-log.h``
-
#. Unified file path handling in tests.
-
#. ``data_fitting.cc`` includes ``gflags``
-
#. Renamed Ceres' Mutex class and associated macros to avoid
namespace conflicts.
-
#. Close the BAL problem file after reading it (Markus Moll)
-
#. Fix IsInfinite on Jets.
-
#. Drop alignment requirements for Jets.
-
#. Fixed Jet to integer comparison. (Keith Leung)
-
#. Fix use of uninitialized arrays. (Sebastian Koch & Markus Moll)
-
#. Conditionally compile gflag dependencies.(Casey Goodlett)
-
#. Add ``data_fitting.cc`` to the examples ``CMake`` file.
@@ -577,10 +485,8 @@ Bug Fixes
---------
#. ``suitesparse_test`` is enabled even when ``-DSUITESPARSE=OFF``.
-
#. ``FixedArray`` internal struct did not respect ``Eigen``
alignment requirements (Koichi Akabe & Stephan Kassemeyer).
-
#. Fixed ``quadratic.cc`` documentation and code mismatch
(Nick Lewycky).
@@ -591,10 +497,8 @@ Bug Fixes
---------
#. Fix constant parameter blocks, and other minor fixes (Markus Moll)
-
#. Fix alignment issues when combining ``Jet`` and
``FixedArray`` in automatic differeniation.
-
#. Remove obsolete ``build_defs`` file.
1.2.1
@@ -604,7 +508,6 @@ New Features
------------
#. Powell's Dogleg solver
-
#. Documentation now has a brief overview of Trust Region methods and
how the Levenberg-Marquardt and Dogleg methods work.
@@ -612,17 +515,11 @@ Bug Fixes
---------
#. Destructor for ``TrustRegionStrategy`` was not virtual (Markus Moll)
-
#. Invalid ``DCHECK`` in ``suitesparse.cc`` (Markus Moll)
-
#. Iteration callbacks were not properly invoked (Luis Alberto Zarrabeiti)
-
#. Logging level changes in ConjugateGradientsSolver
-
#. VisibilityBasedPreconditioner setup does not account for skipped camera pairs. This was debugging code.
-
#. Enable SSE support on MacOS
-
#. ``system_test`` was taking too long and too much memory (Koichi Akabe)
1.2.0
@@ -632,17 +529,12 @@ New Features
------------
#. ``CXSparse`` support.
-
#. Block oriented fill reducing orderings. This reduces the
factorization time for sparse ``CHOLMOD`` significantly.
-
#. New Trust region loop with support for multiple trust region step
strategies. Currently only Levenberg-Marquardt is supported, but
this refactoring opens the door for Dog-leg, Stiehaug and others.
-
-#. ``CMake`` file restructuring. Builds in ``Release`` mode by
- default, and now has platform specific tuning flags.
-
+#. ``CMake`` file restructuring. Builds in ``Release`` mode by default, and now has platform specific tuning flags.
#. Re-organized documentation. No new content, but better
organization.
@@ -651,13 +543,9 @@ Bug Fixes
---------
#. Fixed integer overflow bug in ``block_random_access_sparse_matrix.cc``.
-
#. Renamed some macros to prevent name conflicts.
-
#. Fixed incorrent input to ``StateUpdatingCallback``.
-
#. Fixes to AutoDiff tests.
-
#. Various internal cleanups.
@@ -668,10 +556,8 @@ Bug Fixes
---------
#. Fix a bug in the handling of constant blocks. (Louis Simard)
-
#. Add an optional lower bound to the Levenberg-Marquardt regularizer
to prevent oscillating between well and ill posed linear problems.
-
#. Some internal refactoring and test fixes.
1.1.0
@@ -682,20 +568,14 @@ New Features
#. New iterative linear solver for general sparse problems - ``CGNR``
and a block Jacobi preconditioner for it.
-
#. Changed the semantics of how ``SuiteSparse`` dependencies are
checked and used. Now ``SuiteSparse`` is built by default, only if
all of its dependencies are present.
-
#. Automatic differentiation now supports dynamic number of residuals.
-
#. Support for writing the linear least squares problems to disk in
text format so that they can loaded into ``MATLAB``.
-
#. Linear solver results are now checked for nan and infinities.
-
#. Added ``.gitignore`` file.
-
#. A better more robust build system.
@@ -703,9 +583,7 @@ Bug Fixes
---------
#. Fixed a strict weak ordering bug in the schur ordering.
-
#. Grammar and typos in the documents and code comments.
-
#. Fixed tests which depended on exact equality between floating point values.
1.0.0