2014-01-13 19:17:54 +00:00
|
|
|
commit 15bf0d5018dfe432ef67e726b248efcf3b58bc4f
|
|
|
|
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
|
|
|
Date: Mon Jan 13 20:38:28 2014 +0600
|
|
|
|
|
|
|
|
Code cleanup: fix no previous declaration warnings
|
|
|
|
|
|
|
|
Move internally used functions to an anonymous namespace,
|
|
|
|
|
|
|
|
Change-Id: I84c98facf901e64771d131b088e20e2c033cab70
|
|
|
|
|
2014-01-13 13:11:08 +00:00
|
|
|
commit 80a53eebfd28bfc032cedbf7852d5c56eb1d5af5
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Thu Jan 9 12:40:54 2014 -0800
|
|
|
|
|
|
|
|
Faster LBFGS.
|
|
|
|
|
|
|
|
1. Use column major storage for the various matrices used by
|
|
|
|
LowRankInverseHessian. Since all the operations are on columns.
|
|
|
|
|
|
|
|
2. Use a circular buffer to keep track of history of the LBFGS updates
|
|
|
|
so that an update does not require copying the entire history. This
|
|
|
|
makes the updates O(1) rather than O(rank).
|
|
|
|
|
|
|
|
The implementation has been checked against the denoising code
|
|
|
|
where it gives numerically identical results. The overhead of the
|
|
|
|
LBFGS code is now near negligible as compared to the gradient evaluation.
|
|
|
|
|
|
|
|
On a sample problem
|
|
|
|
|
|
|
|
before 1050ms after: 630ms
|
|
|
|
|
|
|
|
Change-Id: I537ba506ac35fc4960b304c10d923a8dea2ae031
|
|
|
|
|
|
|
|
commit f55780063620e7a3dcfe7e018d6488bf6a5b29da
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Wed Jan 8 10:43:31 2014 -0800
|
|
|
|
|
|
|
|
Reduce logging verbosity.
|
|
|
|
|
|
|
|
When user specifies Solver::Options::logging_type = SILENT,
|
|
|
|
ensure that the minimizer does not log anything.
|
|
|
|
|
|
|
|
Change-Id: I94e34dae504881ab36d4a66e6adb7a19a227363e
|
|
|
|
|
|
|
|
commit 85561eee951c91e578984c6d3eecf0073acabb64
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Tue Jan 7 22:22:14 2014 -0800
|
|
|
|
|
|
|
|
Use int32 for parameter block sizes.
|
|
|
|
|
|
|
|
CostFunction now uses int32 instead of int16
|
|
|
|
to store the size of its parameter blocks.
|
|
|
|
|
|
|
|
This is an API breaking change.
|
|
|
|
|
|
|
|
Change-Id: I032ea583bc7ea4b3009be25d23a3be143749c73e
|
|
|
|
|
|
|
|
commit a7fda3317b1a97702750bea96ac3ef3d1a2afb49
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Mon Jan 6 10:25:42 2014 +0000
|
|
|
|
|
|
|
|
Fix typos in error messages in line search config checks.
|
|
|
|
|
|
|
|
Change-Id: I3ae2ae58328e996598e3e32c12869d2b10109ef7
|
|
|
|
|
|
|
|
commit f695322eb8c5ff118f0d27f68d46d557338e5db1
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Sat Jan 4 14:28:23 2014 -0800
|
|
|
|
|
|
|
|
Remove a compilation warning on windows.
|
|
|
|
|
|
|
|
Only define NOMINMAX if it is not already defined.
|
|
|
|
|
|
|
|
Thanks to Pierre Moulon for this fix.
|
|
|
|
|
|
|
|
Change-Id: Ia5dc0f5ff2afe10e4c7e97a57f54297d82052b21
|
|
|
|
|
|
|
|
commit b811041d78d80518db153ef3030bcbdbaf80df8d
|
|
|
|
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
|
|
|
Date: Thu Jan 2 15:19:17 2014 +0600
|
|
|
|
|
|
|
|
Code cleanup: fix no previous declaration warnings
|
|
|
|
|
|
|
|
Moved some internally used functions into an anonymous namespace.
|
|
|
|
|
|
|
|
Change-Id: Ie82df61b0608abac79ccc9f7b14e7f7e04ab733d
|
|
|
|
|
|
|
|
commit f14f6bf9b7d3fbd2cab939cf4ad615b317e93c83
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Thu Dec 26 09:50:45 2013 -0800
|
|
|
|
|
|
|
|
Speed up SPARSE_NORMAL_CHOLESKY when using CX_SPARSE.
|
|
|
|
|
|
|
|
When using sparse cholesky factorization to solve the linear
|
|
|
|
least squares problem:
|
|
|
|
|
|
|
|
Ax = b
|
|
|
|
|
|
|
|
There are two sources of computational complexity.
|
|
|
|
|
|
|
|
1. Computing H = A'A
|
|
|
|
2. Computing the sparse Cholesky factorization of H.
|
|
|
|
|
|
|
|
Doing 1. using CX_SPARSE is particularly expensive, as it uses
|
|
|
|
a generic cs_multiply function which computes the structure of
|
|
|
|
the matrix H everytime, reallocates memory and does not take
|
|
|
|
advantage of the fact that the matrix being computed is a symmetric
|
|
|
|
outer product.
|
|
|
|
|
|
|
|
This change adds a custom symmetric outer product algorithm for
|
|
|
|
CompressedRowSparseMatrix.
|
|
|
|
|
|
|
|
It has a symbolic phase, where it computes the sparsity structure
|
|
|
|
of the output matrix and a "program" which allows the actual
|
|
|
|
multiplication routine to determine exactly which entry in the
|
|
|
|
values array each term in the product contributes to.
|
|
|
|
|
|
|
|
With these two bits of information, the outer product H = A'A
|
|
|
|
can be computed extremely fast without any reasoning about
|
|
|
|
the structure of H.
|
|
|
|
|
|
|
|
Further gains in efficiency are made by exploiting the block
|
|
|
|
structure of A.
|
|
|
|
|
|
|
|
With this change, SPARSE_NORMAL_CHOLESKY with CX_SPARSE as the
|
|
|
|
backend results in > 300% speedup for some problems.
|
|
|
|
|
|
|
|
The symbolic analysis phase of the solver is a bit more expensive
|
|
|
|
now but the increased cost is made up in 3-4 iterations.
|
|
|
|
|
|
|
|
Change-Id: I5e4a72b4d03ba41b378a2634330bc22b299c0f12
|
|
|
|
|
|
|
|
commit d79f886eb87cb064e19eb12c1ad3d45bbed92198
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Mon Dec 30 07:39:10 2013 -0800
|
|
|
|
|
|
|
|
Refactor line search error checking code.
|
|
|
|
|
|
|
|
Move the error checking code into its own function
|
|
|
|
so that it can be used in upcoming changes.
|
|
|
|
|
|
|
|
Change-Id: Icf348e5a8bbe8f8b663f04fb8cfc9a2149b12f22
|
|
|
|
|
2013-12-29 10:59:15 +00:00
|
|
|
commit 2b16b0080b6e673eaaf9ed478c9e971d9fcd65de
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Fri Dec 20 15:22:26 2013 -0800
|
|
|
|
|
|
|
|
CompressedRowSparseMatrix::AppendRows and DeleteRows bugfix.
|
|
|
|
|
|
|
|
CompressedRowSparseMatrix can store the row and column block structure
|
|
|
|
but the AppendRows and DeleteRows methods did not pay attention to them.
|
|
|
|
This meant that it was possible to get to a CompressedRowSparseMatrix
|
|
|
|
whose block structure did not match the contents of the matrix.
|
|
|
|
|
|
|
|
This change fixes this problem.
|
|
|
|
|
|
|
|
Change-Id: I1b3c807fc03d8c049ee20511e2bc62806d211b81
|
|
|
|
|
|
|
|
commit 27bb4a8589c47a65b5ea2c01872a903043d0ef74
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Wed Dec 18 13:06:58 2013 -0800
|
|
|
|
|
|
|
|
Handle empty problems consistently.
|
|
|
|
|
|
|
|
Until now Ceres was inconsistent in the way it handled a solve
|
|
|
|
call on an "empty" Problem. If the problem did not contain
|
|
|
|
any residual or parameter blocks, it failed. However, if after
|
|
|
|
constructing the reduced program, the problem was found to not
|
|
|
|
contain any modifiable parameter blocks, it was considered a valid
|
|
|
|
problem which had a constant objective function value.
|
|
|
|
|
|
|
|
When creating problems automatically, it is often the case that
|
|
|
|
an empty problem is a corner case. This change makes handling this
|
|
|
|
corner case consistent with the rest of Ceres logic.
|
|
|
|
|
|
|
|
Change-Id: Ia9da09fbf5d5cd7eae6b39a92c1976b8645db9fe
|
|
|
|
|
|
|
|
commit dcee120bac04911bf01d8365bddca87c74ce2af9
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Sat Dec 7 21:48:56 2013 -0800
|
|
|
|
|
|
|
|
Consolidate SolverTerminationType enum.
|
|
|
|
|
|
|
|
1. Rename SolverTerminationType to TerminationType.
|
|
|
|
2. Consolidate the enum as
|
|
|
|
a. CONVERGENCE - subsumes FUNCTION_TOLERANCE, PARAMETER_TOLERANCE and GRADIENT_TOLERANCE
|
|
|
|
b. NO_CONVERGENCE
|
|
|
|
c. FAILURE - captures all kinds of failures including DID_NOT_RUN.
|
|
|
|
d. USER_SUCCESS
|
|
|
|
e. USER_FAILURE
|
|
|
|
3. Solver::Summary::error is renamed to be Solver::Summary::message, to both
|
|
|
|
reduce confusion as well as capture its true meaning.
|
|
|
|
|
|
|
|
Change-Id: I27a382e66e67f5a4750d0ee914d941f6b53c326d
|
|
|
|
|
|
|
|
commit d1cf320bb4f032cb14b20114a29ce2d867307492
|
|
|
|
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
|
|
|
Date: Thu Nov 28 23:11:11 2013 +0600
|
|
|
|
|
|
|
|
Made collections port compatible with MSVC2008
|
|
|
|
|
|
|
|
The issue was caused by the fact that in this version
|
|
|
|
of MSVC unordered_map class is defined in <unordered_map>
|
|
|
|
header file, but this file declares the class int std::tr1
|
|
|
|
namespace.
|
|
|
|
|
|
|
|
This confused existing assumption that if there's an
|
|
|
|
existing <unordered_map> file then class is declared
|
|
|
|
in std namespace.
|
|
|
|
|
|
|
|
Added an extra check to CMake which detects whether
|
|
|
|
it's std or std::tr1 which actually contains class
|
|
|
|
of unordered_map.
|
|
|
|
|
|
|
|
Change-Id: Ic5cf41913895a6ce8e791cc7602d7cf5492c34de
|
|
|
|
|
|
|
|
commit 324eccb5f6ce2a1a0061ec9f3c40778a029a2d97
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Tue Dec 3 09:28:14 2013 -0800
|
|
|
|
|
|
|
|
Restore the state of the Problem after a call to Evaluate.
|
|
|
|
|
|
|
|
Calling Problem::Evaluate mutates the state of the parameter blocks.
|
|
|
|
In particular, depending on the set and order of parameter blocks
|
|
|
|
passed to the evaluate call, it will change the internal indexing
|
|
|
|
used by the Program object used by ProblemImpl. This needs to be
|
|
|
|
undone before Evaluate returns, otherwise the Problem object
|
|
|
|
is in an invalid state.
|
|
|
|
|
|
|
|
To help with testing and debugging in the future, a new method
|
|
|
|
Program::IsValid has been added which checks whether the problem
|
|
|
|
has its parameter and residual blocks in the right state.
|
|
|
|
|
|
|
|
Thanks to Stefan Leutenegger for reporting this.
|
|
|
|
|
|
|
|
Change-Id: I209b486a31433f0cbb58b570047649eca6d42b56
|
|
|
|
|
|
|
|
commit 3b1ad31a1fe89fe0bd78e1fffdf22d47d43faaf5
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Mon Dec 2 15:43:20 2013 -0800
|
|
|
|
|
|
|
|
Fix build breakage on old versions of SuiteSparse.
|
|
|
|
|
|
|
|
Change-Id: I2a061615fc374abef2ed323c298359002a6fc5f1
|
|
|
|
|
|
|
|
commit 5fd480692b0a0c87e2af2f5a8754042a14f5f089
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Mon Dec 2 12:16:53 2013 -0800
|
|
|
|
|
|
|
|
Add more documentation to the linear solver enums.
|
|
|
|
|
|
|
|
Change-Id: Id57f76f73fa38043c0b6729972b1de8578ad7ede
|
|
|
|
|
|
|
|
commit d73acd035359886dfa1c5762b01c6f6449edcab8
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Mon Dec 2 12:02:03 2013 -0800
|
|
|
|
|
|
|
|
Lint cleanup from William Rucklidge.
|
|
|
|
|
|
|
|
Change-Id: I8abcfd369f41b895ce746a21a35f250fe05c39d1
|
|
|
|
|
|
|
|
commit 3faac6a28cec4c99c41421d3f585f3786be443b3
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Thu Nov 28 07:13:26 2013 -0800
|
|
|
|
|
|
|
|
More lint cleanups and breakage fixes.
|
|
|
|
|
|
|
|
The previous CL was a premature submit due to lack of coffee.
|
|
|
|
|
|
|
|
Change-Id: Id425d0ef332f569a954f0413e6b1ae6087f40f30
|
|
|
|
|
|
|
|
commit ed92366592a951041bd0367c24006101ef7b6286
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Thu Nov 28 06:50:43 2013 -0800
|
|
|
|
|
|
|
|
Lint cleanup from William Rucklidge.
|
|
|
|
|
|
|
|
Change-Id: I745810f5496a1b93263b20ff140f8883da61995e
|
|
|
|
|
|
|
|
commit 34b6359f39884683f2bbf06c93040afd42ae135d
|
|
|
|
Author: Sergey Sharybin <sergey.vfx@gmail.com>
|
|
|
|
Date: Thu Nov 28 18:51:34 2013 +0600
|
|
|
|
|
|
|
|
Fix compilation error after recent enum rename in 33e01b9
|
|
|
|
|
|
|
|
Change-Id: I920aa4754df6b013e86f0e77c61338d7a80e7f45
|
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 33e01b9c5e1416fe29c55ac0332cdca21c053c83
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Wed Nov 27 10:24:03 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Rename LinearSolverTerminationType enums.
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This increases clarity, drops redundant enums and makes things
|
|
|
|
cleaner all around.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I761f195ddf17ea6bd8e4e55bf5a72863660c4c3b
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 068437eb89d495d905465544ccd442efef457b04
|
2013-04-22 09:25:37 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Wed Nov 27 07:05:57 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Pipe minimizer termination messages to Solver::Summary.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
All minimizer termination messages are now available as
|
|
|
|
Solver::Summary::error.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This is part of the ongoing refactoring or
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I4514c3c042645bbd1471bcde9bd3dbf81d9ee8b0
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 89a592f410fb6f80c03dea84b6b9f1a10bea36c1
|
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
|
|
|
Date: Tue Nov 26 11:35:49 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
LinearSolver::Summary::status -> LinearSolver::Summary::message.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
And a bunch of minor lint cleanups as they showed up.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I430a6b05710923c72daf6a5df4dfcd16fbf44b3a
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit b16e118b96c55451c0d8556f3c5b52ad36b69cac
|
2013-04-22 09:25:37 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Mon Nov 25 05:47:43 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Better error checking and reporting for linear solvers.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
A lot of error checking cruft has accumulated over the years
|
|
|
|
in the various linear solvers. This change makes the error reporting
|
|
|
|
more robust and consistent across the various solvers.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Preconditioners are not covered by this change and will be the
|
|
|
|
subject of a future change.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Ibeb2572a1e67758953dde8d12e3abc6d1df9052d
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 5794d41be2d8d6a67dcdfe607e66050f0ac04c55
|
2013-04-22 09:25:37 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Mon Nov 25 13:37:02 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Remove overzealous checks in Summary::FullReport.
|
|
|
|
|
|
|
|
Thanks to sebi.koch@gmail.com for reporting this.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I1ba9b375e5cf66639e292ba37b34a90446f13162
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 40ef90304ac200bb948549e8e3748e487d27dc53
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Mon Nov 25 16:36:40 2013 +0000
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Adding VLOG output to line search.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Previously line search was sparse in terms of debug orientated VLOG
|
|
|
|
output which made debugging failure cases difficult.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Idfabf74d2b3f7b8256f79dff8c6b7fcdc2fcf4d3
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 1284a5141426597f3ca1e29ae8548c9b4c43c9c1
|
2013-04-22 09:25:37 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Sun Nov 24 15:09:43 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Use explicit formula to solve quadratic polynomials.
|
|
|
|
|
|
|
|
polynomial.cc implements a companion matrix base method for solving
|
|
|
|
polynomials. This is both expensive and numerically sensitive.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This change adds a quadratic equation solver. Instead of using the
|
|
|
|
usual quadratic formula, it uses the formula suggested by BKP Horn
|
|
|
|
for improved numerical stability.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I476933ce010d81db992f1c580d2fb23a4457eb3e
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit a9334d67d7973c0f56e65f12ae897dd53504ef0d
|
2013-04-22 09:25:37 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Wed Nov 20 10:12:23 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Fix constant parameter handling in inner iterations.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
There was a bug in the way RemoveFixedBlocksFromProgram was working.
|
|
|
|
It only removed the constant parameter blocks from the
|
|
|
|
linear_solver_ordering, it was not even aware of the
|
|
|
|
inner_iteration_ordering.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This change fixes this bug. The code for RemoveFixedBlocksFromProgram
|
|
|
|
is also cleaned up and made more readable and the test have been updated.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Thanks to Mikael Persson for reporting this.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I454fa89f9b6f4f6320b02d5235e6f322cc15ff51
|
|
|
|
|
|
|
|
commit 331ff090dcae7096cea50144047b71cab2d3e819
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Mon Nov 25 13:44:53 2013 +0000
|
|
|
|
|
|
|
|
Downgrading log status of BFGS secant condition messages.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- These messages were originally VLOG(2) and were mistakenly upgraded to
|
|
|
|
WARNINGs when the tolerances were reduced.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I89dee666a09bc82cfa89b793dc0907268662f95e
|
|
|
|
|
|
|
|
commit 9697a08a2bf29531671526b49df73bfbc0d7d237
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Sat Nov 23 10:03:37 2013 +0000
|
|
|
|
|
|
|
|
Defining CERES_FOUND in addition to Ceres_FOUND in CeresConfig.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Previously we relied on FindPackage() to define Ceres_FOUND when
|
|
|
|
find_package(Ceres) was called.
|
|
|
|
- This is fine, but users might legitimately expect the variable to be
|
|
|
|
CERES_FOUND given the form of CERES_INCLUDE_DIRS/LIBRARIES.
|
|
|
|
- As there is an inconsistency in the CMake recommended names when
|
|
|
|
FindPackage() is called in Module vs Config form, we now explicltly
|
|
|
|
define both.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I54bce9aa112b684d26b60a9ae4d11eb7925a6ee5
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 66e15b41d80b155f333f099a0278d50312cdaa15
|
2013-09-05 10:48:44 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Fri Nov 22 07:59:23 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Lint cleanup from Jim Roseborough.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I6ddbf5c3d66595d27f7967a309768e5f5dd7e1fd
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 79bde35f29291cf464b59f3dc2dd9f1fa88776a9
|
2013-09-05 10:48:44 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Thu Nov 21 21:33:51 2013 -0800
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
SuiteSparse errors do not cause a fatal crash.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
1. Move LinearSolverTerminationType to ceres::internal.
|
|
|
|
2. Add FATAL_ERROR as a new enum to LinearSolverTerminationType.
|
|
|
|
3. Pipe SuiteSparse errors via a LinearSolverTerminationType so
|
|
|
|
to distinguish between fatal and non-fatal errors.
|
|
|
|
4. Update levenberg marquardt and dogleg strategies to deal
|
|
|
|
with FATAL_ERROR.
|
|
|
|
5. Update trust_region_minimizer to terminate when FATAL_ERROR
|
|
|
|
is encountered.
|
|
|
|
6. Remove SuiteSparse::SolveCholesky as it screws up the error
|
|
|
|
handling.
|
|
|
|
7. Fix all clients calling SuiteSparse to handle the result of
|
|
|
|
SuiteSparse::Cholesky correctly.
|
|
|
|
8. Remove fatal failures in SuiteSparse when symbolic factorization
|
|
|
|
fails.
|
|
|
|
9. Fix all clients of SuiteSparse to deal with null symbolic factors.
|
2013-04-22 09:25:37 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This is a temporary fix to deal with some production problems. A more
|
|
|
|
extensive cleanup and testing regime will be put in place in a
|
|
|
|
subsequent CL.
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I1f60d539799dd95db7ecc340911e261fa4824f92
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit a674e0f8534ea6948f70a72fe9718e07b3d039ff
|
2013-04-08 17:05:48 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Thu Nov 21 22:12:15 2013 -0800
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Fix corrector_test.cc.
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Fix two death tests dealing with the sign of the gradient.
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Ic91d54a64cc509307c94fce6d1fca083078936e2
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit a8006af3110e98d64fb369e958fc00ec88d771a3
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Wed Nov 20 19:56:06 2013 +0000
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Adding threads libraries to exported dependencies if using OpenMP.
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Previously we were only adding the flags to the link flags for the
|
|
|
|
Ceres project, which resulted in them not being exported. Thus
|
|
|
|
projects importing Ceres (if using OpenMP) would have to manually
|
|
|
|
specify them in addition to CERES_LIBRARIES.
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: If0354cc07e84dbebfc870a8862e1a8ca64659791
|
2013-04-08 17:05:48 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 6c0d96424e2c27326757936a3738f9efc37c6c24
|
2013-04-05 09:22:54 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Wed Nov 20 11:52:01 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Minor documentation fix.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Thanks to Satya Mallick.
|
|
|
|
|
|
|
|
Change-Id: I556f1c141bf16739d54450351b0f29fd4ea40014
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 7747bb0e6b0e54366933ed75c1bcafe6a1109c3d
|
2013-09-05 10:48:44 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Wed Nov 20 11:29:22 2013 -0800
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Minor corrections to the documentation.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Thanks to Satya Mallick for reporting these.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Ia52e08a7e21d5247dc475cfbf10bf57265aa118f
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 3fca2c4b2fae9abcaa9611f2bd3885ce6b11963b
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Mon Nov 18 10:26:49 2013 +0000
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Decreasing update threshold for BFGS as per L-BFGS.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Improves performance of BFGS on NIST, as per L-BFGS.
|
|
|
|
- Adding explanation of origin and purpose of Secant condition
|
|
|
|
tolerance check for Hessian update in (L)BFGS.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: If57b9957d31d8629c772c19a069e1e56e727b350
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 54fcbf893852272ba2158d6a56572a2eb3ccc41f
|
2013-04-05 09:22:54 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Tue Nov 19 10:12:05 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Relax the requirements on loss functiond derivatives.
|
|
|
|
|
|
|
|
We now require that the first derivative of the loss function
|
|
|
|
be positive only if the second derivative is non-zero. This is
|
|
|
|
because when the second derivative is non-positive, we do not use
|
|
|
|
the second order correction suggested by BANS and instead use
|
|
|
|
a simpler first order strategy which does not use a division by
|
|
|
|
the gradient of the loss function.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I3d65713f152611998e196ff389a7081acfdfd8c1
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit db98425b94c9eff9b125bf4a854545162e8c1aec
|
2013-04-05 09:22:54 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Fri Nov 15 14:14:09 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Small bugfix to logging.h from Scott Ettinger.
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Ie6d51e7883adf36c6fc7a78ff95afab6a78e488b
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 4d0e626b55f36ab8f44a4acc8157b85cfecd4673
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Fri Nov 15 13:53:44 2013 +0000
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Fixing gflags HINTS variable names (adding missing “_DIR”).
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- The HINTS variables for gflags were incorrectly used as
|
|
|
|
GFLAGS_[INCLUDE/LIBRARY]_HINTS when they should have been
|
|
|
|
GFLAGS_[INCLUDE/LIBRARY]_DIR_HINTS as per the docs.
|
|
|
|
- Also removing a completed TODO in the main CMakeLists.
|
|
|
|
- Updating method of extracting current directory in CeresConfig.cmake
|
|
|
|
to avoid use of CMAKE_CURRENT_LIST_DIR, which was not present in
|
|
|
|
CMake =< v2.8.3.
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I42ae696e3b785febe48688d912f0f343e8947cb0
|
|
|
|
|
|
|
|
commit bf4c1b76e4926c738fc805e9ff4be0ed584d9eee
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Thu Nov 14 21:27:20 2013 +0000
|
|
|
|
|
|
|
|
Decreasing threshold at which L-BFGS Hessian is updated.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Decreasing threshold at which L-BFGS Hessian is updated from 1e-10
|
|
|
|
to 1e-14 results in a very significant improvement in NIST scores
|
|
|
|
(43 -> 53 for CUBIC).
|
|
|
|
- Adding comment in FindPolynomialRoots() explaining why behaviour
|
|
|
|
is correct.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: If668e087e7a86d29659aa74e8528b192b604c841
|
|
|
|
|
|
|
|
commit 7124c3474cd201134c3a3350b46aca468f1edafa
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Thu Nov 7 16:10:02 2013 +0000
|
|
|
|
|
|
|
|
Fixes for some line search bugs & corner cases.
|
|
|
|
|
|
|
|
- Increase precision of numeric values output in error messages to
|
|
|
|
allow for easier debugging.
|
|
|
|
- Ensure termination after Wolfe search bracketing phase if bracket
|
|
|
|
width has been shrunk to below tolerance.
|
|
|
|
- Cleaned up return value for BracketingPhase(), now false iff
|
|
|
|
optimisation should stop, true otherwise.
|
|
|
|
- Fix bug whereby we would mark a step size as satisfying the Wolfe
|
|
|
|
conditions when it did not due to numerical issues in the cost
|
|
|
|
function.
|
|
|
|
- Adding explanation of a subtlety in which a zoom could still be
|
|
|
|
acceptably invoked with bracket_low.f > bracket_high.f.
|
|
|
|
- Replacing hard check of a pre-condition of ZoomPhase() with a
|
|
|
|
conditional return if not satisfied to address issue whereby a
|
|
|
|
bracket could be incorrectly identified due to inconsistent values
|
|
|
|
& gradients returned from the cost function.
|
|
|
|
- Adding missing check for step size validity in line search minimizer.
|
|
|
|
- Adding ToDebugString() for FunctionSample.
|
|
|
|
|
|
|
|
Change-Id: Iad98e635749877f80c079ebad126bf022d82232d
|
|
|
|
|
|
|
|
commit 54fc9423673886ac9ed3fe329a80f07544aeea70
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Thu Nov 14 11:42:00 2013 +0000
|
|
|
|
|
|
|
|
Removing incorrect specialisation of install dirs on Windows.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Previously on Windows the leaf include & lib install directories
|
|
|
|
passed to CeresConfig.cmake.in when configured where capitalised on
|
|
|
|
Windows.
|
|
|
|
- This capitalisation was incorrect, as the actual paths used are
|
|
|
|
specified in the install() statements and are always in the standard
|
|
|
|
lower-case form.
|
|
|
|
- This likely did not cause any issues previously as although NTFS is
|
|
|
|
case sensitive, the Win32 API is not, and most applications access
|
|
|
|
files through the Win32 API, and are thus not case-sensitive.
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I335b6e2d10a1c64f320c2a1a68eeda1b22344e73
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit fcbbb11e37386097b1427dc3aa89f264d6951ded
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Wed Nov 13 22:22:30 2013 +0000
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Ensure build paths for dependencies are searched in FindPackage(Ceres)
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
- Append to hint locations used by FindPackage scripts for public
|
|
|
|
dependencies (glog & Eigen) the locations of the dependencies when
|
|
|
|
Ceres was built.
|
|
|
|
- This means that the user should not have to supply them again when
|
|
|
|
using find_package(Ceres) even if they are installed in a
|
|
|
|
non-standard location.
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I9550de91025ba47f01f1ea3c3fefe80fe38d14ff
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 7899e45d378f589a67ad8e042bf6a7cb7e15df00
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Wed Nov 13 21:08:27 2013 +0000
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Fixing a documentation typo, DIRS -> DIR in HINTS variables.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I42b75a5e0b8a451c3a43ab29d0c14856e4b86ab8
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 1a041c35b780e60c3b497eb096b72ad20f47960e
|
2013-04-05 09:22:54 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Tue Nov 12 14:17:52 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Update to 1.8.0.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Id42e594f03e3575d06e18c1ef66df64f43d86839
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 36b26139296060511718b3ef0da03a52706db481
|
|
|
|
Author: Alex Stewart <alexs.mac@gmail.com>
|
|
|
|
Date: Thu Nov 7 16:57:36 2013 +0000
|
|
|
|
|
|
|
|
Fix ordering of ParseCommandLineFlags() & InitGoogleTest() for Windows.
|
|
|
|
|
|
|
|
- On Windows gtest passes additional non-gflags command line flags
|
|
|
|
for death-tests, to avoid gflags invoking an error for these flags
|
|
|
|
InitGoogleTest() must be called before ParseCommandLineFlags() to
|
|
|
|
handle and remove them before gflags parses the remaining flags.
|
|
|
|
|
|
|
|
Change-Id: I0c705ecd3aa029b70a2589b592e6a2c192745c0e
|
|
|
|
|
|
|
|
commit 8c155d51fab099ee7bf64f4bdbfeda82881925a5
|
2013-04-05 09:22:54 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Fri Nov 8 08:04:44 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Speed up the application of robust loss functions.
|
|
|
|
|
|
|
|
Since we added special handling for the case for rho[2] < 0,
|
|
|
|
the bulk of CorrectJacobian is pointless in the common case.
|
|
|
|
So add a simple one dimensional loop which rescales the Jacobian.
|
|
|
|
This speeds up this method immensely.
|
|
|
|
|
|
|
|
The robustification of a Jacobian gets speeded up by > 50%.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: I97c4e897ccbb5521c053e1fb931c5d0d32f542c7
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit 58792dc8ee0e4b56331f33f753f1b1932c5c2960
|
2013-09-05 10:48:44 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Wed Nov 6 09:42:46 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Update to 1.8.0rc2.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Ifbf5312377bf1791a29aefd3edc3a765999c5824
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
commit af04d7f18740faf452e9171af530aa1bdead44bb
|
2013-09-05 10:48:44 +00:00
|
|
|
Author: Sameer Agarwal <sameeragarwal@google.com>
|
2013-11-28 13:06:35 +00:00
|
|
|
Date: Tue Nov 5 13:47:30 2013 -0800
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Remove DCHECK_GE checks from fixed_array.h
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This triggers -Wtype-limits warnings on comparisons
|
|
|
|
which are always true, since the test being done is
|
|
|
|
n >= 0, where n is of type size_t, which is always
|
|
|
|
true.
|
2013-09-05 10:48:44 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
This causes problems when compiling Ceres on linux
|
|
|
|
with miniglog.
|
2013-04-05 09:22:54 +00:00
|
|
|
|
2013-11-28 13:06:35 +00:00
|
|
|
Change-Id: Ia1d1d1483e03469c71fde029b62ca6d84e9b27e0
|