From 6d9c352ff599201dacff330004a7c6cd54705aaa Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 26 Jun 2019 17:29:36 +0200 Subject: mg2d: make init_guess() MPI-aware API and ABI break. --- libmg2d.v | 2 +- mg2d.c | 23 ++++++++++++++--------- mg2d.h | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/libmg2d.v b/libmg2d.v index 5c9f863..526ba87 100644 --- a/libmg2d.v +++ b/libmg2d.v @@ -1,4 +1,4 @@ -LIBMG2D_13 { +LIBMG2D_14 { global: mg2d_*; local: *; }; diff --git a/mg2d.c b/mg2d.c index 9775c16..113830b 100644 --- a/mg2d.c +++ b/mg2d.c @@ -1971,6 +1971,7 @@ unsigned int mg2d_max_fd_stencil(void) int mg2d_init_guess(MG2DContext *ctx, const double *src, ptrdiff_t src_stride, + const ptrdiff_t src_start[2], const size_t src_size[2], const double src_step[2]) { @@ -2000,22 +2001,26 @@ int mg2d_init_guess(MG2DContext *ctx, const double *src, priv->transfer_init->tp = priv->tp; priv->transfer_init->cpuflags = priv->cpuflags; - priv->transfer_init->src.size[0] = src_size[0]; - priv->transfer_init->src.size[1] = src_size[1]; - priv->transfer_init->src.step[0] = src_step[0]; - priv->transfer_init->src.step[1] = src_step[1]; + priv->transfer_init->src.start[0] = src_start[1]; + priv->transfer_init->src.start[1] = src_start[0]; + priv->transfer_init->src.size[0] = src_size[1]; + priv->transfer_init->src.size[1] = src_size[0]; + priv->transfer_init->src.step[0] = src_step[1]; + priv->transfer_init->src.step[1] = src_step[0]; - priv->transfer_init->dst.size[0] = ctx->local_size[0]; - priv->transfer_init->dst.size[1] = ctx->local_size[1]; - priv->transfer_init->dst.step[0] = ctx->step[0]; - priv->transfer_init->dst.step[1] = ctx->step[1]; + priv->transfer_init->dst.start[0] = ctx->local_start[1]; + priv->transfer_init->dst.start[1] = ctx->local_start[0]; + priv->transfer_init->dst.size[0] = ctx->local_size[1]; + priv->transfer_init->dst.size[1] = ctx->local_size[0]; + priv->transfer_init->dst.step[0] = ctx->step[1]; + priv->transfer_init->dst.step[1] = ctx->step[0]; ret = mg2di_gt_init(priv->transfer_init); if (ret < 0) return ret; } - ret = mg2di_ndarray_wrap(&a_src, 2, src_size, src, + ret = mg2di_ndarray_wrap(&a_src, 2, (size_t [2]){ src_size[1], src_size[0] }, src, (ptrdiff_t [2]){ src_stride, 1 }); if (ret < 0) return ret; diff --git a/mg2d.h b/mg2d.h index 2f593bc..867d77e 100644 --- a/mg2d.h +++ b/mg2d.h @@ -288,6 +288,7 @@ unsigned int mg2d_max_fd_stencil(void); int mg2d_init_guess(MG2DContext *ctx, const double *src, ptrdiff_t src_stride, + const ptrdiff_t src_start[2], const size_t src_size[2], const double src_step[2]); -- cgit v1.2.3