Commit Graph

416 Commits

Author SHA1 Message Date
Sameer Agarwal b4803778c3 Update documentation for linear_solver_ordering_type
Also update obsolete documentation related to building and
using sparse linear algebra libraries.

Change-Id: I83682b43472e6a6ec4e4dad32fa21c089d518c06
2022-06-07 14:08:26 -07:00
Sergiu Deitsch 55b4c3f447 Retain terminal formatting when building docs
This prevents Sphinx output to be stripped of colors, emphasis etc.

Change-Id: I127e02cbdda69a5d49a73678a7a7e2b4512b189e
2022-05-28 21:02:12 +00:00
Sameer Agarwal 8ba8fbb173 Remove Solver::Options::use_postordering
This was an ill-advised and complicated to interpret option
which offers nothing particularly useful.

Change-Id: Ia7741ed62ef977c96fa52299a884e404bee659ac
2022-05-19 21:10:33 +00:00
Sameer Agarwal 12263e2830 Make the min. required version of SuiteSparse to be 4.5.6
With this change we can drop the complicated/conditional handling
around CAMD and assume that it is always available.

Change-Id: I93e1da676fb75817f79824b8b2b6549d03f278b0
2022-05-16 12:48:43 -07:00
Evan Levine f1414cb5bd Correct spelling in comments and docs.
Change-Id: Iad9a0599d644d3b3cd54244edaf64d408cb1308e
2022-04-24 21:40:13 -07:00
Sameer Agarwal 3b0096c1bb Add the ability to specify the pivot threshold in Covariance::Options
https: //github.com/ceres-solver/ceres-solver/issues/777
Change-Id: I481612b7bc727d5cd0dc21a0e0dbaf356722ba22
2022-04-12 18:55:35 -07:00
Sameer Agarwal 1274743609 Ceres Solver now requires C++17
Fixes https://github.com/ceres-solver/ceres-solver/issues/779

Change-Id: I6671b8da9d2004f9c76be8b03f6753c9fc5a0061
2022-03-31 11:14:17 -07:00
Sameer Agarwal f68321e7de Update version history
Change-Id: I8a1ad5051f7654dfdead0a225fa9263c02643914
2022-03-28 07:02:35 -07:00
Sameer Agarwal b246991b6f Update the citation instructions in the docs
1. Update the cff file to be more inclusive.
2. Update the BibTeX entry in index.rst to match the one generated
   by GitHub.

Change-Id: I26d031b2128d1d4330623bcdace284ca9ffce9e1
2022-03-27 10:19:41 -07:00
Sergiu Deitsch c0c14abca2 Fix version history item numbering
The last item in the 'New Features' section restarts the enumeration
because the indention of the previous subitem is one space short.

Change-Id: Ifa2873d3e2ddd6bac5034b48207775019ef1c462
2022-03-26 23:33:26 +01:00
Sergiu Deitsch d23dbac25b Update Windows install guide
Change-Id: I445354bee0f54b33921ea9411b7bb320af275d43
2022-03-25 19:19:45 +01:00
Sameer Agarwal ff57c2e91e Update version history for 2.1.0rc2
Change-Id: If107c2cc356ff402d743d8393c2a1f49a0720c28
2022-03-21 09:34:42 -07:00
Sameer Agarwal a65e738851 Update installation docs
Change-Id: I14cc0d6f0ad4bfeee3d60a42d9b57bc5deaad01b
2022-03-04 11:10:38 -08:00
Sergiu Deitsch 817f5a0688 Switch to imported SuiteSparse, CXSparse, and METIS targets
These changes allow the use of a SuiteSparse CMake package from
https://github.com/sergiud/SuiteSparse that allows native compilation of
SuiteSparse using CMake on a variety of platforms Packages generated
using official SuiteSparse makefiles can still be used without
modifications. The find module remains agnostic to specific CMake
package implementation.

CMake packages have the advantage that they are self-contained and
relocatable. The latter is particularly useful in cross-compilation
scenarios.

Fixes #728

Change-Id: I089d5c6f87c05b1530a5ab9a36dff2fcbe82d13d
2022-03-03 21:26:45 +01:00
Sergiu Deitsch b0aef211db Allow to store pointers in ProductManifold
Change-Id: I32df7afab3a195efb0407b0d8f35dcd2d7cb95d2
2022-03-03 17:08:24 +00:00
Sergiu Deitsch 284be88ca1 Allow ProductManifold default construction
In many cases, manifolds stored in ProductManifold have a default
constructor which can simplify ProductManifold initialization even
further. Allow default construction of ProductManifold in this case.

Change-Id: I29b2612870c02232556688019a77049709684a55
2022-03-03 14:50:03 +01:00
Sergiu Deitsch 7743d2e73c Store ProductManifold instances in a tuple
Since the number of manifolds used to initialize ProductManifold and
their types are known at compile-time, it is possible to avoid storing
pointers to the base class as required by a homogeneous, currently
dynamically sized container. Instead, we can use std::tuple<> as a
heterogenous container with the number of elements fixed at compile-time
that allows us to store the concrete manifold realizations.

The advantage of this approach is that we can bypass the vtable when
iterating over each manifold within ProductManifold. The indirection is
invoked only once while accessing the ProductManifoldImpl members.
Additionally, potential dynamic memory allocations by a std::vector can
be completely avoided. This makes the ProductManifold implementation
more efficient both in memory and runtime.

Change-Id: Ic71b0c175ab726f8992e9703f7666bca477baf19
2022-03-02 23:57:10 +00:00
Sergiu Deitsch f0f8f93bbc Fix docs inconsistencies
Change-Id: Ie3f767d537206ed4c326c7a504825cc751817c61
2022-03-02 14:05:39 +01:00
Sameer Agarwal e40391efa3 Update version history in preparation for 2.1.0
Change-Id: I3771d5d289bbb9982eeec2ae3701246dd25eaac1
2022-03-01 09:35:20 -08:00
Sameer Agarwal 6a37fbf9b4 Add static/compile time sizing to EuclideanManifold
This brings it in line with other manifolds like SphereManifold
and LineManifold, where the user has the choice to specify the size
of the manifold at compile time or runtime.

Most of the time the size is known at compile time so this will
speed up the common case.

Change-Id: I0c7ff8b7a9a64a81203eb11afc074874e208815a
2022-03-01 09:34:23 -08:00
Sergiu Deitsch 46b3495a4f Standardize path handling using GNUInstallDirs
Fixes #649

Change-Id: Iefb3e7be69a04474db0fc768b47f4f3636c8a587
2022-02-25 23:59:34 +00:00
Sameer Agarwal 47502b8339 Miscellaneous CUDA related changes.
1. Fix a stupid error in types.cc
2. Update documentation for Solver::Options::dense_linear_algebra_library_type
3. Add a note to installation.rst to update the installation docs.
4. Mention GPU acceleration in features.rst

Change-Id: Id63202ff090e23bbb211d2ee458559fb8046281d
2022-02-14 21:45:34 -08:00
Sameer Agarwal 0141ca090c Deprecate LocalParameterizations
Add [[deprecate]] notices to everything LocalParameterization
related.

Make sure that Ceres can be compiled without triggering
deprecation warnings.

Update the documentation:

a. Add deprecation notices.
b. Document interaction between LocalParameterization and Manifold
   coexisting in the Problem.
c. Add documentation for Manifold(s)

Change-Id: Ie4ad48963c83fded86e533c8c60561af402fbaff
2022-02-10 06:36:47 -08:00
Alex Stewart c2fab6502e 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
2021-12-15 20:58:47 +00:00
Sameer Agarwal 7ef4a12218 Add a section on implicit and inverse function theorems
Change-Id: I0e6c7d2850a33d03aa629579f049ad44a7618621
2021-10-01 12:05:06 -07:00
Sameer Agarwal 686428f5cd Move the further reading section to bibliography
Change-Id: I673e74587486cdf5f91a146605dafa8fc2df6ee6
2021-09-24 05:44:45 -07:00
Sameer Agarwal e47d87fdd6 Add a note about Trigg's correction
Add a pointer about how the theory and practice of Trigg's correction
for loss function differs when the second derivative of the loss
function becomes positive.

https://github.com/ceres-solver/ceres-solver/issues/573

Change-Id: Ic22ce91cc230f7ed7fa7b70a1cc2050919039828
2021-09-24 05:02:40 -07:00
Sameer Agarwal d2852518d6 Fix the docs for Problem::RemoveResidualBlock & Problem::RemoveParameterBlock
The documentation was out of date about how memory management is
done in Problem.

https://github.com/ceres-solver/ceres-solver/issues/699

Change-Id: Ie55027796bc372cdcbaaca2bf2c93643c303a8e5
2021-09-23 09:32:11 -07:00
Sameer Agarwal 17dccef91b Add NumericDiffFirstOrderFunction
This has been a long requested feature so that users can minimize
functions using numeric differentiation.

As part of this, I have also redone rosenbrock.cc, which now has three
variants.

rosenbrock.cc now uses automatic differentiation.
rosenbrock_numeric_diff.cc uses numeric differentiation.
rosenbrock_analytic_diff.cc uses analytic derivatives.

This is analogus to how the helloworld example code is structured.

The tutorial for GradientProblemSolver has also been updated to reflect
this.

https://github.com/ceres-solver/ceres-solver/issues/691

Change-Id: Ib0fb9e35127fe4c8299d4793bea3558722c70dd7
2021-09-15 06:21:02 -07:00
Sameer Agarwal 98719ced43 Fix a type in interfacing_with_autodiff.html
Thanks to @tangobravo for reporting this.

https://github.com/ceres-solver/ceres-solver/issues/701

Change-Id: I2b063267c9b501c698ce6cd439a666363ba16fde
2021-09-13 17:15:02 -07:00
Sameer Agarwal 0299ce9442 Update conf.py to be compatible with Sphinx 4.1.2
Change-Id: I905911121fca48ae85f046bef714135cbf641d0a
2021-09-13 17:12:02 -07:00
Alexander Karatarakis dc20db3032 [docs] Fix IterationSummary section. Add missing IterationCallback
Change-Id: I1d10201cd927003fd3d46728d13231d3fbc27f96
2021-08-09 16:29:29 -07:00
Alexander Karatarakis 90ba7d1ef4 [docs] Fix typos
Change-Id: I447bd63b58a7bfc7c1df36dbef5dcba454d28256
2021-08-09 16:29:23 -07:00
Sumit Dey 7de561e8e8 Fix dependency check for building documentation
Build with documentation fails if the required 'sphinx rtd theme' is
not available. Check if dependency is installed before building with
documentation.

Add Python3 as requirement for building documentation.

Change-Id: I5edc5d7374864990e625a5efb358f5a23b3c50fe
2021-07-31 12:21:16 +02:00
Sameer Agarwal 3fdde8ede0 Remove an errant double link.
Thanks to TimonKnigge@

Change-Id: If5d77d9fe456991169ed70f12839af028755fc4f
2021-07-16 06:26:09 -07:00
Noah Snavely 20ad431f77 Fixing a typo in the version history
Change-Id: Ib0b344112373dd947cedd70808f02f573bf60bc8
2021-07-13 22:25:42 -04:00
Alex Stewart 399cda7730 Update build documentation to reflect detection of Eigen via config mode
Change-Id: I18d5f0fc1eb51ea630164c911d935e9bffea35ce
2020-10-23 19:36:08 +01:00
Sameer Agarwal bb127272f9 Fix typos.
Contributed by Ishamis@, IanBoyanZhang@, gkrobner@ & mithunjacob@.

Change-Id: Iab3c19a07a6f3db2486e3557dcb55bfe5de2aee5
2020-10-19 09:32:47 -07:00
Sameer Agarwal a0ec5c32af Update version history for 2.0.0RC2
Change-Id: I75b7515fbf9880bd8eaea6ecd5e72ce1ae4a3a86
2020-10-18 15:20:36 -07:00
Nikolaus Demmel bdcdcc78af update docs for changed cmake usage
- update links to cmake docs to version 3.5
- highlight difference between dependencies with and without custom
  find modules
- point out removal of CERES_INCLUDE_DIRS
- point out that TBB might be linked if SuiteSparseQR is found
- added 'Migration' section
- fixed typos

Change-Id: Icbcc0e723d11f12246fb3cf09b9d7c6206195a82
2020-10-12 20:50:56 +00:00
Sameer Agarwal 3f69e5b36a Corrections from William Rucklidge
Change-Id: I0b5d4808be48f68df7829c70ec93ffa67d81315d
2020-10-12 11:46:40 -07:00
Sameer Agarwal d1b35ffc16 Corrections from William Rucklidge
Change-Id: Ifb50e87aa915d00f9861fe1a6da0acee11bc0a94
2020-10-12 10:58:05 -07:00
Nikolaus Demmel 137bbe8455 add info about clang-format to contributing docs
Change-Id: I2f4dcbda2e4f36096df217d76de370103ffaa43e
2020-09-28 02:25:12 +02:00
Sameer Agarwal 921368ce31 Fix a number of typos in covariance.h
Also some minor cleanups in covariance_impl.h

Thanks to Lorenzo Lamia for pointing these out.

Change-Id: Icb4012a367fdd1f249bc1e7019e0114c868e45b6
2020-09-09 09:39:42 -07:00
Nikolaus Demmel 82275d8a4e some fixes for Linux and macOS install docs
Linux:
- Remove workaround for Ubuntu 14.04, which is EOL. libsuitesparse-dev
  seems to come with a shared library on 16.04 and later, so linking
  to a shared build of ceres doesn't seem to be an issue any more.
- Add missing libgflags-dev.

macOS:
- OS X is now called macOS.
- Update homebrew link.
- Mac homebrew the preferred method of installation.
- Fix OpenMP instructions.
- Remove reference to homebrew/science. Everything is in core.
- Add missing gflags.

Change-Id: I633b3c7ea84a87886bfd823f8187fdd0a84737c9
2020-09-08 02:12:08 +00:00
Sameer Agarwal 8e1d8e32ad A number of small changes.
1. Add a move constructor to NumericDiffCostFunction, DynamicAutoDiffCostfunction
   and DynamicNumericDiffCostFunction.
2. Add optional ownership of the underlying functor.
3. Update docs to reflect this as well as the variadic templates that allow an
   arbitrary number of parameter blocks.

Change-Id: I57bbb51fb9e75f36ec2a661b603beda270f30a19
2020-09-03 10:57:50 -07:00
Julian Kent 368a738e52 AutoDiffCostFunction: optional ownership
Add Ownership semantics to the AutoDiffCostFunction

This allows several benefits, such as pointer ordering always being the
same for numerical repeatability (due to blocks being ordered by
pointer address), memory adjacency for better cache performance, and
reduced allocator pressure / overhead.

This is then made use of in libmv by preallocating the errors and
cost functions into vectors

Change-Id: Ia5b97e7249b55a463264b6e26f7a02291927c9f2
2020-09-03 19:19:53 +02:00
Sameer Agarwal 242c703b50 Minor fixes to the documentation
Change-Id: I65e6f648d963b8aa640078684ce02dcde6acb87d
2020-08-04 21:02:11 -07:00
Sameer Agarwal 79bbf95103 Add changelog for 2.0.0
Change-Id: I8acad62bfe629454ae5032732693e43fe37b97ff
2020-08-04 18:26:02 -07:00
Sameer Agarwal 8c3ecec6db Fix some minor errors in IterationCallback docs
Change-Id: Id3d7f21a523ff8466868cdec542921c566bbbfa9
2020-08-04 14:21:23 -07:00