From d0ec0a0ba813dd20a7d4c34d77dacd9b81c63b6e Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 16 Jan 2019 11:27:08 +0100 Subject: mg2d: factor out the relaxation step call --- mg2d.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'mg2d.c') diff --git a/mg2d.c b/mg2d.c index 886ef27..5d089b8 100644 --- a/mg2d.c +++ b/mg2d.c @@ -240,6 +240,20 @@ static void prolong_solution(MG2DContext *ctx, MG2DLevel *dst, MG2DLevel *src) } } +static int mg_relax_step(MG2DLevel *level) +{ + int64_t start; + int ret; + + start = gettime(); + + ret = mg2di_ell_relax_step(level->solver); + + level->time_relax += gettime() - start; + + return ret; +} + static int mg_solve_subgrid(MG2DContext *ctx, MG2DLevel *level) { int ret; @@ -258,15 +272,12 @@ static int mg_solve_subgrid(MG2DContext *ctx, MG2DLevel *level) /* handle coarsest grid */ if (!level->child) { - int64_t start = gettime(); for (int j = 0; j < 16; j++) { - ret = mg2di_ell_relax_step(level->solver); + ret = mg_relax_step(level); if (ret < 0) return ret; } - - level->time_relax += gettime() - start; level->count_cycles++; goto finish; @@ -276,13 +287,11 @@ static int mg_solve_subgrid(MG2DContext *ctx, MG2DLevel *level) int64_t start; /* pre-restrict relaxation */ - start = gettime(); for (int j = 0; j < ctx->nb_relax_pre; j++) { - ret = mg2di_ell_relax_step(level->solver); + ret = mg_relax_step(level); if (ret < 0) return ret; } - level->time_relax += gettime() - start; /* restrict the residual as to the coarser-level rhs */ start = gettime(); @@ -314,13 +323,11 @@ static int mg_solve_subgrid(MG2DContext *ctx, MG2DLevel *level) level->time_reinit += gettime() - start; /* post-correct relaxation */ - start = gettime(); for (int j = 0; j < ctx->nb_relax_pre; j++) { - ret = mg2di_ell_relax_step(level->solver); + ret = mg_relax_step(level); if (ret < 0) return ret; } - level->time_relax += gettime() - start; level->count_cycles++; } -- cgit v1.2.3