More refined event logging in solver_impl.cc Change-Id: Ie3061c921c006d2600d16185c690f52ccf816f68
diff --git a/internal/ceres/solver.cc b/internal/ceres/solver.cc index 2ae255a..3004717 100644 --- a/internal/ceres/solver.cc +++ b/internal/ceres/solver.cc
@@ -266,23 +266,23 @@ num_unsuccessful_steps); StringAppendF(&report, "Total % 20d\n", num_successful_steps + num_unsuccessful_steps); - StringAppendF(&report, "\nTime (in seconds):\n"); - StringAppendF(&report, "Preprocessor % 25.3e\n", - preprocessor_time_in_seconds); - StringAppendF(&report, "\n Residual Evaluations % 22.3e\n", + StringAppendF(&report, "\nTime (in seconds):\n"); + StringAppendF(&report, "Preprocessor %25.3f\n", + preprocessor_time_in_seconds); + StringAppendF(&report, "\n Residual Evaluations %22.3f\n", residual_evaluation_time_in_seconds); - StringAppendF(&report, " Jacobian Evaluations % 22.3e\n", + StringAppendF(&report, " Jacobian Evaluations %22.3f\n", jacobian_evaluation_time_in_seconds); - StringAppendF(&report, " Linear Solver % 23.3e\n", + StringAppendF(&report, " Linear Solver %23.3f\n", linear_solver_time_in_seconds); - StringAppendF(&report, "Minimizer % 25.3e\n\n", + StringAppendF(&report, "Minimizer %25.3f\n\n", minimizer_time_in_seconds); - StringAppendF(&report, "Postprocessor % 24.3e\n", + StringAppendF(&report, "Postprocessor %24.3f\n", postprocessor_time_in_seconds); - StringAppendF(&report, "Total % 25.3e\n\n", + StringAppendF(&report, "Total %25.3f\n\n", total_time_in_seconds); StringAppendF(&report, "Termination: %25s\n",
diff --git a/internal/ceres/solver_impl.cc b/internal/ceres/solver_impl.cc index 9b56f28..a070ce6 100644 --- a/internal/ceres/solver_impl.cc +++ b/internal/ceres/solver_impl.cc
@@ -256,6 +256,7 @@ minimizer_options.evaluator = evaluator; scoped_ptr<SparseMatrix> jacobian(evaluator->CreateJacobian()); + minimizer_options.jacobian = jacobian.get(); minimizer_options.inner_iteration_minimizer = inner_iteration_minimizer; @@ -414,6 +415,7 @@ event_logger.AddEvent("InitialEvaluate"); original_program->SetParameterBlockStatePtrsToUserStatePtrs(); + event_logger.AddEvent("SetParameterBlockPtrs"); // If the user requests gradient checking, construct a new // ProblemImpl by wrapping the CostFunctions of problem_impl inside @@ -438,8 +440,10 @@ LOG(ERROR) << summary->error; return; } + event_logger.AddEvent("CheckOrdering"); options.linear_solver_ordering = new ParameterBlockOrdering(*original_options.linear_solver_ordering); + event_logger.AddEvent("CopyOrdering"); } else { options.linear_solver_ordering = new ParameterBlockOrdering; const ProblemImpl::ParameterMap& parameter_map = @@ -449,10 +453,9 @@ ++it) { options.linear_solver_ordering->AddElementToGroup(it->first, 0); } + event_logger.AddEvent("ConstructOrdering"); } - event_logger.AddEvent("ConstructOrdering"); - // Create the three objects needed to minimize: the transformed program, the // evaluator, and the linear solver. scoped_ptr<Program> reduced_program(CreateReducedProgram(&options, @@ -589,7 +592,6 @@ summary->preprocessor_time_in_seconds = minimizer_start_time - solver_start_time; - event_logger.AddEvent("FinalInit"); // Run the optimization. TrustRegionMinimize(options, reduced_program.get(), @@ -1068,7 +1070,7 @@ return NULL; } - event_logger.AddEvent("RemovedFixedBlocks"); + event_logger.AddEvent("RemoveFixedBlocks"); if (transformed_program->NumParameterBlocks() == 0) { if (transformed_program->NumResidualBlocks() > 0) {
diff --git a/internal/ceres/wall_time.cc b/internal/ceres/wall_time.cc index 7de7e06..e63d20c 100644 --- a/internal/ceres/wall_time.cc +++ b/internal/ceres/wall_time.cc
@@ -64,7 +64,7 @@ last_event_time_(start_time_), events_("") { StringAppendF(&events_, - "\n%s\n Delta Cumulative\n", + "\n%s\n Delta Cumulative\n", logger_name.c_str()); } @@ -86,10 +86,10 @@ last_event_time_ = current_time; StringAppendF(&events_, - " %25s : %8.3f %8.3f\n", + " %25s : %10.5f %10.5f\n", event_name.c_str(), - 1000 * relative_time_delta, - 1000 * absolute_time_delta); + relative_time_delta, + absolute_time_delta); } } // namespace internal