From da9decdc5335ee5e8449162011dcd8b252ca722c Mon Sep 17 00:00:00 2001 From: Pietro Incardona <i-bird@private-incardon-3.mpi-cbg.de> Date: Wed, 3 Aug 2016 16:26:56 +0200 Subject: [PATCH] Fixing for extprealloc --- install | 26 ++++++++++++++++++++++---- src/Grid/grid_dist_id.hpp | 11 +++++------ src/Vector/vector_dist.hpp | 23 ++++------------------- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/install b/install index 501786ca5..780317adf 100755 --- a/install +++ b/install @@ -216,6 +216,9 @@ fi if [ -d "$i_dir/HDF5" ]; then configure_options=" $configure_options --with-hdf5=$i_dir/HDF5/bin/h5pcc " fi +if [ -d "$i_dir/LIBHILBERT" ]; then + configure_options=" $configure_options --with-libhilbert=$i_dir/LIBHILBERT " +fi ### MPI @@ -250,6 +253,7 @@ EIGEN_installed=0 EIGEN_System_prv=1 HDF5_installed=0 HDF5_System_prv=1 +LIBHILBERT_installed=0 conf_err=1 if [ $install_req -eq 0 ]; then @@ -309,6 +313,15 @@ else ./script/install_HDF5.sh $i_dir $ncore configure_options=" $configure_options --with-hdf5=$i_dir/HDF5/bin/h5pcc " HDF5_installed=1 + elif [ $conf_err -eq 210 ]; then + echo "LIBHILBERT not found try to install" + if [ $LIBHILBERT_installed -eq 1 ]; then + echo "Error the installation of LIBHILBERT failed" + exit 1 + fi + ./script/install_LIBHILBERT.sh $i_dir $ncore + configure_options=" $configure_options --with-libhilbert=$i_dir/LIBHILBERT " + LIBHILBERT_installed=1 elif [ $conf_err -ne 0 ]; then echo "I do not know how to recover from this error" exit 1 @@ -333,10 +346,10 @@ fi ### Create example.mk install_base=$(cat install_dir) -echo "INCLUDE_PATH=-I. -I$install_base/openfpm_numerics/include -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include -I$i_dir/METIS/include -I$i_dir/PARMETIS/include -I$i_dir/BOOST/include -I$i_dir/HDF5/include $lin_alg_inc" > example.mk -echo "LIBS_PATH= -L$install_base/openfpm_devices/lib -L$install_base/openfpm_pdata/lib -L$install_base/openfpm_vcluster/lib -L$i_dir/METIS/lib -L$i_dir/PARMETIS/lib -L$i_dir/BOOST/lib -L$i_dir/HDF5/lib $lin_alg_dir" >> example.mk -echo "LIBS=-lvcluster -lofpm_pdata -lofpmmemory -lparmetis -lmetis -lboost_iostreams -lhdf5 $lin_alg_lib" >> example.mk -echo "LIBS_SE2=-lvcluster -lofpmmemory_se2 -lparmetis -lmetis -lboost_iostreams -lhdf5 $lin_alg_lib" >> example.mk +echo "INCLUDE_PATH=-I. -I$install_base/openfpm_numerics/include -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include -I$i_dir/METIS/include -I$i_dir/PARMETIS/include -I$i_dir/BOOST/include -I$i_dir/HDF5/include -I$i_dir/LIBHILBERT/include $lin_alg_inc" > example.mk +echo "LIBS_PATH= -L$install_base/openfpm_devices/lib -L$install_base/openfpm_pdata/lib -L$install_base/openfpm_vcluster/lib -L$i_dir/METIS/lib -L$i_dir/PARMETIS/lib -L$i_dir/BOOST/lib -L$i_dir/HDF5/lib -L$i_dir/LIBHILBERT/lib $lin_alg_dir" >> example.mk +echo "LIBS=-lvcluster -lofpm_pdata -lofpmmemory -lparmetis -lmetis -lboost_iostreams -lhdf5 -llibhilbert $lin_alg_lib" >> example.mk +echo "LIBS_SE2=-lvcluster -lofpmmemory_se2 -lparmetis -lmetis -lboost_iostreams -lhdf5 -llibhilbert $lin_alg_lib" >> example.mk cp example.mk src/example.mk cp example.mk example/example.mk @@ -396,6 +409,11 @@ if [ -d "$i_dir/HDF5" ]; then bash_library="$bash_library:$i_dir/HDF5/lib" fi +if [ -d "$i_dir/LIBHILBERT" ]; then + installation_report="$installation_report \033[92;1mLibHilbert\033[0m Installed: \033[1m $i_dir/LIBHILBERT \033[0m\n" + bash_library="$bash_library:$i_dir/LIBHILBERT/lib" +fi + echo -e "$installation_report" echo "" diff --git a/src/Grid/grid_dist_id.hpp b/src/Grid/grid_dist_id.hpp index 54d187aae..b9d3df791 100644 --- a/src/Grid/grid_dist_id.hpp +++ b/src/Grid/grid_dist_id.hpp @@ -1270,9 +1270,7 @@ public: void * pointer2 = prAlloc_prp.getPointerEnd(); - v_cl.send(ig_box.get(i).prc,0,pointer/*sts.getMarkPointer(prAlloc_prp)*/,(char *)pointer2 - (char *)pointer /*sts.getMarkSize(prAlloc_prp)*/); - -// pointer = prAlloc_prp.getPointerEnd(); + v_cl.send(ig_box.get(i).prc,0,pointer,(char *)pointer2 - (char *)pointer); } // Calculate the total information to receive from each processors @@ -1292,12 +1290,13 @@ public: } } + size_t tot_recv = ExtPreAlloc<Memory>::calculateMem(prp_recv); + //! Resize the receiving buffer - g_recv_prp_mem.resize(ExtPreAlloc<Memory>::calculateMem(prp_recv)); + g_recv_prp_mem.resize(tot_recv); // Create an object of preallocated memory for properties - ExtPreAlloc<Memory> & prRecv_prp = *(new ExtPreAlloc<Memory>(req,g_recv_prp_mem)); - + ExtPreAlloc<Memory> & prRecv_prp = *(new ExtPreAlloc<Memory>(tot_recv,g_recv_prp_mem)); prRecv_prp.incRef(); // queue the receives diff --git a/src/Vector/vector_dist.hpp b/src/Vector/vector_dist.hpp index 14e767238..eeb642f1e 100644 --- a/src/Vector/vector_dist.hpp +++ b/src/Vector/vector_dist.hpp @@ -756,21 +756,17 @@ private: * * \param size_byte_prp total size for the property buffer * \param size_byte_pos total size for the position buffer - * \param pap_prp allocation sequence for the property buffer - * \param pap_pos allocation sequence for the position buffer * */ - template<typename prp_object> void calc_send_ghost_buf(size_t & size_byte_prp, size_t & size_byte_pos, std::vector<size_t> & pap_prp, std::vector<size_t> & pap_pos) + template<typename prp_object> void calc_send_ghost_buf(size_t & size_byte_prp, size_t & size_byte_pos) { // Calculate the total size required for the sending buffer for (size_t i = 0; i < ghost_prc_sz.size(); i++) { size_t alloc_ele = openfpm::vector<prp_object, HeapMemory, typename memory_traits_lin<prp_object>::type, memory_traits_lin , openfpm::grow_policy_identity>::calculateMem(ghost_prc_sz.get(i), 0); - pap_prp.push_back(alloc_ele); size_byte_prp += alloc_ele; alloc_ele = openfpm::vector<Point<dim, St>, HeapMemory, typename memory_traits_lin<Point<dim, St>>::type, memory_traits_lin, openfpm::grow_policy_identity>::calculateMem(ghost_prc_sz.get(i), 0); - pap_pos.push_back(alloc_ele); size_byte_pos += alloc_ele; } } @@ -1137,11 +1133,7 @@ public: size_t size_byte_prp = 0; size_t size_byte_pos = 0; - // allocation patterns for property and position send buffer - std::vector<size_t> pap_prp; - std::vector<size_t> pap_pos; - - calc_send_ghost_buf<prp_object>(size_byte_prp, size_byte_pos, pap_prp, pap_pos); + calc_send_ghost_buf<prp_object>(size_byte_prp, size_byte_pos); // Create memory for the send buffer @@ -1151,11 +1143,8 @@ public: // Create and fill send buffer for particle properties -//////////////////////////////////////////////// - size_t req = ExtPreAlloc<Memory>::calculateMem(pap_prp); + ExtPreAlloc<Memory> * prAlloc_prp = new ExtPreAlloc<Memory>(size_byte_prp, g_prp_mem); - ExtPreAlloc<Memory> * prAlloc_prp = new ExtPreAlloc<Memory>(req, g_prp_mem); -///////////////////////////////////////////////// openfpm::vector<send_vector> g_send_prp; fill_send_ghost_prp_buf<send_vector, prp_object, prp...>(g_send_prp, prAlloc_prp); @@ -1165,11 +1154,7 @@ public: openfpm::vector<send_pos_vector> g_pos_send; if (opt != NO_POSITION) { -//////////////////////////////////////////////// - size_t req1 = ExtPreAlloc<Memory>::calculateMem(pap_pos); - - prAlloc_pos = new ExtPreAlloc<Memory>(req1, g_pos_mem); -//////////////////////////////////////////////////////// + prAlloc_pos = new ExtPreAlloc<Memory>(size_byte_pos, g_pos_mem); fill_send_ghost_pos_buf(g_pos_send, prAlloc_pos); } -- GitLab