diff options
author | Anton Khirnov <anton@khirnov.net> | 2019-06-26 17:29:36 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2019-06-29 11:19:32 +0200 |
commit | 6d9c352ff599201dacff330004a7c6cd54705aaa (patch) | |
tree | 600d537d11bfacb4fda664447520aae267e90dc6 /mg2d.c | |
parent | 2bd55ca0e3fb500bff5cf5ceb36a80a196f0f29d (diff) |
mg2d: make init_guess() MPI-aware
API and ABI break.
Diffstat (limited to 'mg2d.c')
-rw-r--r-- | mg2d.c | 23 |
1 files changed, 14 insertions, 9 deletions
@@ -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; |