diff options
author | Anton Khirnov <anton@khirnov.net> | 2018-04-16 19:30:05 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2018-04-17 12:22:46 +0200 |
commit | 6a0eeab600032901e0116e59f304e2643e72d776 (patch) | |
tree | dd363c150ceb86f03a0931e1c37351ddc128db61 /src/qms_solve.c | |
parent | 29091dc1b2dfc37f7e681b91a7dbfcab1c01f9f1 (diff) |
Faster W evaluation.wip
Diffstat (limited to 'src/qms_solve.c')
-rw-r--r-- | src/qms_solve.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/qms_solve.c b/src/qms_solve.c index 3ce463b..08c298f 100644 --- a/src/qms_solve.c +++ b/src/qms_solve.c @@ -992,28 +992,38 @@ int qms_solver_solve(QMSSolver *ctx) return 0; } -void qms_solver_print_stats(QMSSolver *ctx) +static void indent(int level) +{ + for (int i = 0; i < level; i++) + fprintf(stderr, " "); +} + +void qms_solver_print_stats(QMSSolver *ctx, int indent_level) { QMSSolverPriv *s = ctx->priv; + indent(indent_level); fprintf(stderr, "%g%% interpolate geometry: %lu, " "total time %g s, avg time per call %g ms\n", (double)s->interp_geometry_time * 100 / s->solve_time, s->interp_geometry_count, (double)s->interp_geometry_time / 1e6, (double)s->interp_geometry_time / s->interp_geometry_count / 1e3); + indent(indent_level); fprintf(stderr, "%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, s->calc_eq_coeffs_count, (double)s->calc_eq_coeffs_time / 1e6, (double)s->calc_eq_coeffs_time / s->calc_eq_coeffs_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% pseudospectral matrix construction: %lu, " "total time %g s, avg time per call %g ms\n", (double)s->ps_ctx->construct_matrix_time * 100 / s->solve_time, s->ps_ctx->construct_matrix_count, (double)s->ps_ctx->construct_matrix_time / 1e6, (double)s->ps_ctx->construct_matrix_time / s->ps_ctx->construct_matrix_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% BiCGSTAB %lu solves, " "%lu iterations, total time %g s, " @@ -1024,6 +1034,7 @@ void qms_solver_print_stats(QMSSolver *ctx) (double)s->ps_ctx->cg_iter_count / s->ps_ctx->cg_solve_count, (double)s->ps_ctx->cg_time_total / s->ps_ctx->cg_solve_count / 1e3, (double)s->ps_ctx->cg_time_total / s->ps_ctx->cg_iter_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% LU %lu solves, total time %g s, avg time per solve %g ms\n", (double)s->ps_ctx->lu_solves_time * 100 / s->solve_time, |