Add an EventLogger to TrustRegionPreprocessor Change-Id: I808567a6462f9326f385e88fdf2849537595ef7b
diff --git a/internal/ceres/trust_region_preprocessor.cc b/internal/ceres/trust_region_preprocessor.cc index b92e216..9d7a37d 100644 --- a/internal/ceres/trust_region_preprocessor.cc +++ b/internal/ceres/trust_region_preprocessor.cc
@@ -40,6 +40,7 @@ #include "ceres/callbacks.h" #include "ceres/context_impl.h" #include "ceres/evaluator.h" +#include "ceres/event_logger.h" #include "ceres/linear_solver.h" #include "ceres/minimizer.h" #include "ceres/parameter_block.h" @@ -377,19 +378,22 @@ bool TrustRegionPreprocessor::Preprocess(const Solver::Options& options, ProblemImpl* problem, PreprocessedProblem* pp) { + EventLogger event_logger("TrustRegionPreprocessor::Preprocess"); CHECK(pp != nullptr); pp->options = options; ChangeNumThreadsIfNeeded(&pp->options); pp->problem = problem; Program* program = problem->mutable_program(); - if (!IsProgramValid(*program, &pp->error)) { + bool status = IsProgramValid(*program, &pp->error); + event_logger.AddEvent("IsProgramValid"); + if (!status) { return false; } pp->reduced_program = program->CreateReducedProgram( &pp->removed_parameter_blocks, &pp->fixed_cost, &pp->error); - + event_logger.AddEvent("CreateReducedProgram"); if (pp->reduced_program.get() == nullptr) { return false; } @@ -400,12 +404,27 @@ return true; } - if (!SetupLinearSolver(pp) || !SetupEvaluator(pp) || - !SetupInnerIterationMinimizer(pp)) { + status = SetupLinearSolver(pp); + event_logger.AddEvent("SetupLinearSolver"); + if (!status) { return false; } - return SetupMinimizerOptions(pp); + status = SetupEvaluator(pp); + event_logger.AddEvent("SetupEvaluator"); + if (!status) { + return false; + } + + status = SetupInnerIterationMinimizer(pp); + event_logger.AddEvent("SetupInnerIterations"); + if (!status) { + return false; + } + + status = SetupMinimizerOptions(pp); + event_logger.AddEvent("SetupMinimizerOptions"); + return status; } } // namespace ceres::internal