From b89b618c736884a0d2fde939025505afaf729be4 Mon Sep 17 00:00:00 2001 From: Pietro Incardona <incardon@mpi-cbg.de> Date: Wed, 25 Sep 2019 17:34:39 +0200 Subject: [PATCH] Refactorized grid pack --- src/Grid/grid_dist_id_comm.hpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Grid/grid_dist_id_comm.hpp b/src/Grid/grid_dist_id_comm.hpp index 2f97d382a..ade70484b 100644 --- a/src/Grid/grid_dist_id_comm.hpp +++ b/src/Grid/grid_dist_id_comm.hpp @@ -158,7 +158,7 @@ class grid_dist_id_comm openfpm::vector<size_t> send_size; //! receiving buffers in case of dynamic - openfpm::vector<BMemory<HeapMemory>> recv_buffers; + openfpm::vector<BMemory<Memory>> recv_buffers; //! receiving processors openfpm::vector<size_t> recv_proc; @@ -553,7 +553,7 @@ class grid_dist_id_comm // Unpack the ghost box global-id - unpack_data_to_ext_ghost<HeapMemory,prp ...>(prRecv_prp,loc_grid,i, + unpack_data_to_ext_ghost<Memory,prp ...>(prRecv_prp,loc_grid,i, eg_box,g_id_to_external_ghost_box,eb_gid_list, ps); } @@ -567,14 +567,14 @@ class grid_dist_id_comm Unpack_stat ps; size_t mark_here = ps.getOffset(); - ExtPreAlloc<BMemory<HeapMemory>> mem(recv_buffers.get(i).size(),recv_buffers.get(i)); + ExtPreAlloc<BMemory<Memory>> mem(recv_buffers.get(i).size(),recv_buffers.get(i)); // for each external ghost box while (ps.getOffset() - mark_here < recv_buffers.get(i).size()) { // Unpack the ghost box global-id - unpack_data_to_ext_ghost<BMemory<HeapMemory>,prp ...>(mem,loc_grid,i, + unpack_data_to_ext_ghost<BMemory<Memory>,prp ...>(mem,loc_grid,i, eg_box,g_id_to_external_ghost_box,eb_gid_list, ps); } @@ -969,6 +969,11 @@ public: size_t req = 0; + // first we initialize the pack buffer on all internal grids + + for (size_t i = 0 ; i < loc_grid.size() ; i++) + {loc_grid.get(i).packReset();} + // Calculating the size to pack all the data to send for ( size_t i = 0 ; i < ig_box.size() ; i++ ) { @@ -995,6 +1000,10 @@ public: } } + // Finalize calculation + for (size_t i = 0 ; i < loc_grid.size() ; i++) + {loc_grid.get(i).packCalculate(req,v_cl.getmgpuContext());} + // resize the property buffer memory g_send_prp_mem.resize(req); -- GitLab