diff options
Diffstat (limited to 'ell_grid_solve.c')
-rw-r--r-- | ell_grid_solve.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/ell_grid_solve.c b/ell_grid_solve.c index f8512f6..978c26f 100644 --- a/ell_grid_solve.c +++ b/ell_grid_solve.c @@ -171,11 +171,12 @@ static void boundaries_apply_reflect(double *dst, const ptrdiff_t dst_stride[2], for (int j = 1; j <= FD_STENCIL_MAX; j++) memcpy(dst + j * dst_stride[1], dst - j * dst_stride[1], sizeof(*dst) * boundary_size); } else { +//#pragma omp parallel for for (size_t i = 0; i < boundary_size; i++) { for (int j = 1; j <= FD_STENCIL_MAX; j++) - dst[dst_stride[1] * j] = dst[-dst_stride[1] * j]; + dst[dst_stride[0] * i + dst_stride[1] * j] = dst[dst_stride[0] * i -dst_stride[1] * j]; - dst += dst_stride[0]; + //dst += dst_stride[0]; } } } @@ -304,7 +305,7 @@ static void line_madd_c(ptrdiff_t linesize, double *dst, const double *src, doub dst[i] += c * src[i]; } -static int residual_add_task(void *arg, unsigned int job_idx, unsigned int thread_idx) +static inline int residual_add_task(void *arg, unsigned int job_idx, unsigned int thread_idx) { #if 1 EGSContext *ctx = arg; @@ -313,6 +314,8 @@ static int residual_add_task(void *arg, unsigned int job_idx, unsigned int threa priv->r.line_add(ctx->domain_size[0], ctx->u->data + ctx->u->stride[0] * job_idx, ctx->residual->data + ctx->residual->stride[0] * job_idx, priv->r.relax_factor); #else + EGSContext *ctx = arg; + EGSInternal *priv = ctx->priv; for (int idx0 = 0; idx0 < ctx->domain_size[0]; idx0++) { ptrdiff_t idx = job_idx * ctx->u->stride[0] + idx0; |