diff options
Diffstat (limited to 'ell_relax.c')
-rw-r--r-- | ell_relax.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ell_relax.c b/ell_relax.c index 96038e8..d79921a 100644 --- a/ell_relax.c +++ b/ell_relax.c @@ -100,7 +100,9 @@ derivatives_calc_s2(EllRelaxContext *ctx, double *dst, ptrdiff_t idx, ptrdiff_t static void residual_calc(EllRelaxContext *ctx) { EllRelaxInternal *priv = ctx->priv; + int64_t start; + start = gettime(); for (int idx1 = 0; idx1 < ctx->domain_size[1]; idx1++) for (int idx0 = 0; idx0 < ctx->domain_size[0]; idx0++) { ptrdiff_t idx = idx1 * priv->stride + idx0; @@ -134,6 +136,9 @@ static void residual_calc(EllRelaxContext *ctx) } } } + + ctx->time_res_calc += gettime() - start; + ctx->count_res++; } static void boundaries_apply_fixval(double *dst, ptrdiff_t dst_stride, @@ -172,7 +177,9 @@ static void boundaries_apply(EllRelaxContext *ctx) { EllRelaxInternal *priv = ctx->priv; const ptrdiff_t strides[2] = { 1, priv->stride }; + int64_t start; + start = gettime(); for (int i = 0; i < ARRAY_ELEMS(ctx->boundaries); i++) { const int si = boundary_def[i].stride_idx; const ptrdiff_t stride_boundary = strides[si]; @@ -227,19 +234,25 @@ static void boundaries_apply(EllRelaxContext *ctx) dst[-idx] = dst[idx]; } } + ctx->time_boundaries += gettime() - start; + ctx->count_boundaries++; } int mg2di_ell_relax_step(EllRelaxContext *ctx) { EllRelaxInternal *priv = ctx->priv; const double cfl_fac = (1.0 / 5.0) * ctx->step[0] * ctx->step[1]; + int64_t start; + start = gettime(); for (int idx1 = 0; idx1 < ctx->domain_size[1]; idx1++) for (int idx0 = 0; idx0 < ctx->domain_size[0]; idx0++) { ptrdiff_t idx = idx1 * priv->stride + idx0; ctx->u[idx] += cfl_fac * ctx->residual[idx]; } + ctx->time_correct += gettime() - start; + ctx->count_correct++; boundaries_apply(ctx); residual_calc(ctx); |