From aae73e55906244b4f382a59c138acb91f15105ba Mon Sep 17 00:00:00 2001 From: Rafael Ravedutti <rafaelravedutti@gmail.com> Date: Fri, 1 Dec 2023 02:58:06 +0100 Subject: [PATCH] Optimize copies with only needed sizes Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com> --- runtime/pairs.cpp | 8 ++------ src/pairs/sim/comm.py | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/runtime/pairs.cpp b/runtime/pairs.cpp index bb18af1..9ec1f23 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 83db6e0..e6fc4f6 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) -- GitLab