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