summaryrefslogtreecommitdiff
path: root/ell_relax.c
diff options
context:
space:
mode:
Diffstat (limited to 'ell_relax.c')
-rw-r--r--ell_relax.c13
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);