diff options
author | Anton Khirnov <anton@khirnov.net> | 2018-02-09 14:58:47 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2018-02-09 15:06:35 +0100 |
commit | 9c53354d9af808f36e668579a54a45af4ed8f722 (patch) | |
tree | e114d604cfe4eb67a48ed62aee8d739e283f57e3 | |
parent | 56b797850884656ae28eef80560563ccf42db007 (diff) |
nlsolve: log var evaluation and coeff calc timing
-rw-r--r-- | nlsolve.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -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) @@ -221,6 +231,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", (double)s->calc_eq_coeffs_time * 100 / s->solve_time, |