Evaluation callback API
This adds a callback mechanism to for users to get notified just
before jacobian and residual evaluations. This will enable
aggressive caching and sharing of compute between cost functions.
Change-Id: I67993726920218edf71ab9ae70c34c204756c71a
diff --git a/internal/ceres/evaluator.h b/internal/ceres/evaluator.h
index cbb7aa2..532f437 100644
--- a/internal/ceres/evaluator.h
+++ b/internal/ceres/evaluator.h
@@ -44,6 +44,7 @@
namespace ceres {
struct CRSMatrix;
+class EvaluationCallback;
namespace internal {
@@ -64,13 +65,15 @@
num_eliminate_blocks(-1),
linear_solver_type(DENSE_QR),
dynamic_sparsity(false),
- context(NULL) {}
+ context(NULL),
+ evaluation_callback(NULL) {}
int num_threads;
int num_eliminate_blocks;
LinearSolverType linear_solver_type;
bool dynamic_sparsity;
ContextImpl* context;
+ EvaluationCallback* evaluation_callback;
};
static Evaluator* Create(const Options& options,
@@ -98,12 +101,16 @@
// Options struct to control Evaluator::Evaluate;
struct EvaluateOptions {
EvaluateOptions()
- : apply_loss_function(true) {
+ : apply_loss_function(true),
+ new_evaluation_point(true) {
}
// If false, the loss function correction is not applied to the
// residual blocks.
bool apply_loss_function;
+
+ // If false, this evaluation point is the same as the last one.
+ bool new_evaluation_point;
};
// Evaluate the cost function for the given state. Returns the cost,