mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
Expand reporting of timing information.
1. Add an ExecutionSummary object to record execution information about Ceres objects. 2. Add an EventLogger object to log events in a function call. 3. Add a ScopedExecutionTimer object to log times in ExecutionSummary. 4. Instrument ProgramEvaluator and all the linear solvers to report their timing statistics. 5. Connect the timing statistics to Summary::FullReport. 6. Add high precision timer on unix systems using gettimeofday() call. 7. Various minor clean ups all around. Change-Id: I5e09804b730b09535484124be7dbc1c58eccd1d4
This commit is contained in:
@@ -34,10 +34,11 @@
|
||||
|
||||
#include "Eigen/Dense"
|
||||
#include "ceres/dense_sparse_matrix.h"
|
||||
#include "ceres/linear_solver.h"
|
||||
#include "ceres/internal/eigen.h"
|
||||
#include "ceres/internal/scoped_ptr.h"
|
||||
#include "ceres/linear_solver.h"
|
||||
#include "ceres/types.h"
|
||||
#include "ceres/wall_time.h"
|
||||
|
||||
namespace ceres {
|
||||
namespace internal {
|
||||
@@ -50,10 +51,10 @@ LinearSolver::Summary DenseQRSolver::SolveImpl(
|
||||
const double* b,
|
||||
const LinearSolver::PerSolveOptions& per_solve_options,
|
||||
double* x) {
|
||||
EventLogger event_logger("DenseQRSolver::Solve");
|
||||
|
||||
const int num_rows = A->num_rows();
|
||||
const int num_cols = A->num_cols();
|
||||
VLOG(2) << "DenseQRSolver: "
|
||||
<< num_rows << " x " << num_cols << " system.";
|
||||
|
||||
if (per_solve_options.D != NULL) {
|
||||
// Temporarily append a diagonal block to the A matrix, but undo
|
||||
@@ -68,9 +69,11 @@ LinearSolver::Summary DenseQRSolver::SolveImpl(
|
||||
rhs_.setZero();
|
||||
}
|
||||
rhs_.head(num_rows) = ConstVectorRef(b, num_rows);
|
||||
event_logger.AddEvent("Setup");
|
||||
|
||||
// Solve the system.
|
||||
VectorRef(x, num_cols) = A->matrix().colPivHouseholderQr().solve(rhs_);
|
||||
event_logger.AddEvent("Solve");
|
||||
|
||||
if (per_solve_options.D != NULL) {
|
||||
// Undo the modifications to the matrix A.
|
||||
@@ -83,6 +86,8 @@ LinearSolver::Summary DenseQRSolver::SolveImpl(
|
||||
LinearSolver::Summary summary;
|
||||
summary.num_iterations = 1;
|
||||
summary.termination_type = TOLERANCE;
|
||||
|
||||
event_logger.AddEvent("TearDown");
|
||||
return summary;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user