From d72b799637ed062d3b0a5b1fd4b16e13e46c48b6 Mon Sep 17 00:00:00 2001 From: theos <theo.steininger@ultimanet.de> Date: Wed, 20 Apr 2016 23:47:29 +0200 Subject: [PATCH] Replaced the sendrecv by a Sendrecv in the slicing_distributor. --- d2o/distributor_factory.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/d2o/distributor_factory.py b/d2o/distributor_factory.py index c9af9e37e..6a3b08c8e 100644 --- a/d2o/distributor_factory.py +++ b/d2o/distributor_factory.py @@ -1054,6 +1054,8 @@ class _slicing_distributor(distributor): return global_result def _invert_mpi_data_ordering(self, data): + data = np.ascontiguousarray(data) + comm = self.comm s = comm.size r = comm.rank @@ -1061,10 +1063,18 @@ class _slicing_distributor(distributor): return data partner = s - 1 - r - new_data = comm.sendrecv(sendobj=data, - dest=partner, - source=partner) - comm.barrier() + + new_shape = comm.sendrecv(sendobj=data.shape, + dest=partner, + source=partner) + new_data = np.empty(new_shape, + dtype=self.dtype) + + comm.Sendrecv(sendbuf=[data, self.mpi_dtype], + recvbuf=[new_data, self.mpi_dtype], + dest=partner, + source=partner) + return new_data def collect_data_from_slices(self, data, slice_objects, copy=True, -- GitLab