From 9c53354d9af808f36e668579a54a45af4ed8f722 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 9 Feb 2018 14:58:47 +0100 Subject: nlsolve: log var evaluation and coeff calc timing --- nlsolve.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/nlsolve.c b/nlsolve.c index 5d691e0..cdc403e 100644 --- a/nlsolve.c +++ b/nlsolve.c @@ -94,6 +94,9 @@ struct NLSolvePriv { uint64_t calc_eq_coeffs_count; uint64_t calc_eq_coeffs_time; + + uint64_t var_eval_count; + uint64_t var_eval_time; }; int tdi_nlsolve_solve(NLSolveContext *ctx, NLEqCallback eq_eval, @@ -129,6 +132,10 @@ int tdi_nlsolve_solve(NLSolveContext *ctx, NLEqCallback eq_eval, var_ctx->transform_tmp, ctx->solve_order[i][0], 0.0, var_ctx->vars[j], ctx->solve_order[i][0]); } } + s->var_eval_count++; + s->var_eval_time += gettime() - start; + + start = gettime(); // build equation coeffs for (int i = 0; i < s->nb_equations; i++) { @@ -188,6 +195,9 @@ int tdi_nlsolve_solve(NLSolveContext *ctx, NLEqCallback eq_eval, } } + s->calc_eq_coeffs_count++; + s->calc_eq_coeffs_time += gettime() - start; + // solve for delta ret = tdi_pssolve_solve(s->ps_ctx, s->eq_coeffs, s->rhs, s->delta); if (ret < 0) @@ -220,6 +230,12 @@ void tdi_solver_print_stats(NLSolveContext *ctx) { NLSolvePriv *s = ctx->priv; + tdi_log(&ctx->logger, 2, + "%g%% variables evaluation: %lu, " + "total time %g s, avg time per call %g ms\n", + (double)s->var_eval_time * 100 / s->solve_time, + s->var_eval_count, (double)s->var_eval_time / 1e6, + (double)s->var_eval_time / s->var_eval_count / 1e3); tdi_log(&ctx->logger, 2, "%g%% calc equation coefficients: %lu, " "total time %g s, avg time per call %g ms\n", -- cgit v1.2.3