diff --git a/runtime/pairs.cpp b/runtime/pairs.cpp
index bb18af189a7bf0137d4bf15f9fbeb8ddb512801a..9ec1f23a2bfc64eb2665d99a7625bcd731d9618a 100644
--- a/runtime/pairs.cpp
+++ b/runtime/pairs.cpp
@@ -325,7 +325,6 @@ void PairsSimulation::communicateData(
     copyArrayToHost(nsend_id, ReadOnly);
     copyArrayToHost(nrecv_id, ReadOnly);
 
-    /*
     int nsend_all = 0;
     int nrecv_all = 0;
     for(int d = 0; d <= dim; d++) {
@@ -334,18 +333,15 @@ void PairsSimulation::communicateData(
         nrecv_all += nrecv[d * 2 + 0];
         nrecv_all += nrecv[d * 2 + 1];
     }
-    */
 
-    copyArrayToHost(send_buf_id, ReadOnly);
-    //copyArrayToHost(send_buf_id, Ignore, nsend_all * elem_size * sizeof(real_t));
+    copyArrayToHost(send_buf_id, Ignore, nsend_all * elem_size * sizeof(real_t));
 
     array_flags->setHostFlag(recv_buf_id);
     array_flags->clearDeviceFlag(recv_buf_id);
     this->getDomainPartitioner()->communicateData(
         dim, elem_size, send_buf, send_offsets, nsend, recv_buf, recv_offsets, nrecv);
 
-    //copyArrayToHost(recv_buf_id, Ignore);
-    //copyArrayToHost(recv_buf_id, Ignore, nrecv_all * elem_size * sizeof(real_t));
+    copyArrayToDevice(recv_buf_id, Ignore, nrecv_all * elem_size * sizeof(real_t));
 
     /*
     // Debug messages
diff --git a/src/pairs/sim/comm.py b/src/pairs/sim/comm.py
index 83db6e06db2717bdaf545a02b252ba729a6edc11..e6fc4f661c906f9db55af61aa2885a841ebcce69 100644
--- a/src/pairs/sim/comm.py
+++ b/src/pairs/sim/comm.py
@@ -26,14 +26,14 @@ class Comm:
         self.neigh_capacity = sim.add_var('neigh_capacity', Types.Int32, 10)
         self.nsend          = sim.add_array('nsend', [self.neigh_capacity], Types.Int32)
         self.send_offsets   = sim.add_array('send_offsets', [self.neigh_capacity], Types.Int32)
-        self.send_buffer    = sim.add_array('send_buffer', [self.send_capacity, self.elem_capacity], Types.Real)
+        self.send_buffer    = sim.add_array('send_buffer', [self.send_capacity, self.elem_capacity], Types.Real, arr_sync=False)
         self.send_map       = sim.add_array('send_map', [self.send_capacity], Types.Int32)
         self.exchg_flag     = sim.add_array('exchg_flag', [sim.particle_capacity], Types.Int32)
         self.exchg_copy_to  = sim.add_array('exchg_copy_to', [self.send_capacity], Types.Int32)
         self.send_mult      = sim.add_array('send_mult', [self.send_capacity, sim.ndims()], Types.Int32)
         self.nrecv          = sim.add_array('nrecv', [self.neigh_capacity], Types.Int32)
         self.recv_offsets   = sim.add_array('recv_offsets', [self.neigh_capacity], Types.Int32)
-        self.recv_buffer    = sim.add_array('recv_buffer', [self.recv_capacity, self.elem_capacity], Types.Real)
+        self.recv_buffer    = sim.add_array('recv_buffer', [self.recv_capacity, self.elem_capacity], Types.Real, arr_sync=False)
         self.recv_map       = sim.add_array('recv_map', [self.recv_capacity], Types.Int32)
         self.recv_mult      = sim.add_array('recv_mult', [self.recv_capacity, sim.ndims()], Types.Int32)