From 77ebd35be9a43f6b8a8c5c0ca3c9f44753d66446 Mon Sep 17 00:00:00 2001 From: Pietro Incardona <incardon@mpi-cbg.de> Date: Tue, 28 Nov 2017 23:59:01 +0100 Subject: [PATCH] Fix for layout gpu --- src/Draw/DrawParticles.hpp | 12 ++++++------ src/Draw/PointIteratorSkin.hpp | 11 +++++++++-- .../Vector/vector_dist_operators_functions.hpp | 13 ++++++++++++- .../Vector/vector_dist_operators_unit_tests.hpp | 2 +- src/PSE/Kernels_test_util.hpp | 2 +- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/Draw/DrawParticles.hpp b/src/Draw/DrawParticles.hpp index 12d46dc..e936b02 100644 --- a/src/Draw/DrawParticles.hpp +++ b/src/Draw/DrawParticles.hpp @@ -43,8 +43,8 @@ public: * \return an iterator to the selected particles * */ - template<unsigned int dim, typename T, typename aggr, typename Decomposition> static PointIteratorSkin<dim,T,Decomposition> - DrawSkin(vector_dist<dim,T,aggr,Decomposition> & vd, + template<unsigned int dim, typename T, typename aggr, typename layout, template<typename> class layout_base ,typename Decomposition> static PointIteratorSkin<dim,T,Decomposition> + DrawSkin(vector_dist<dim,T,aggr,layout,layout_base,Decomposition> & vd, size_t (& sz)[dim], Box<dim,T> & domain, Box<dim,T> & sub_A, @@ -79,8 +79,8 @@ public: * \return an iterator to the selected particles * */ - template<unsigned int dim, typename T, typename aggr, typename Decomposition> static PointIteratorSkin<dim,T,Decomposition> - DrawSkin(vector_dist<dim,T,aggr,Decomposition> & vd, + template<unsigned int dim, typename T, typename aggr, typename layout, template <typename> class layout_base, typename Decomposition> static PointIteratorSkin<dim,T,Decomposition> + DrawSkin(vector_dist<dim,T,aggr,layout,layout_base,Decomposition> & vd, size_t (& sz)[dim], Box<dim,T> & domain, openfpm::vector<Box<dim,T>> & sub_A, @@ -117,8 +117,8 @@ public: * \return an iterator to the selected particles * */ - template<unsigned int dim, typename T, typename aggr, typename Decomposition> static PointIterator<dim,T,Decomposition> - DrawBox(vector_dist<dim,T,aggr,Decomposition> & vd, + template<unsigned int dim, typename T, typename aggr, typename layout, template <typename> class layout_base, typename Decomposition> static PointIterator<dim,T,Decomposition> + DrawBox(vector_dist<dim,T,aggr,layout,layout_base,Decomposition> & vd, size_t (& sz)[dim], Box<dim,T> & domain, Box<dim,T> & sub) diff --git a/src/Draw/PointIteratorSkin.hpp b/src/Draw/PointIteratorSkin.hpp index fc5e7fd..6fded69 100644 --- a/src/Draw/PointIteratorSkin.hpp +++ b/src/Draw/PointIteratorSkin.hpp @@ -136,8 +136,15 @@ public: * \param sp grid spacing * */ - PointIteratorSkin( Decomposition & dec, size_t (& sz)[dim], const Box<dim,T> & domain, const Box<dim,T> & sub_A, const Box<dim,T> & sub_B, size_t (& bc)[dim]) - :grid_dist_id_iterator_dec_skin<Decomposition>(dec, sz, getAB(sz,domain,sub_A,sub_B,sp,RETURN_A), getAB(sz,domain,sub_A,sub_B,sp,RETURN_B), bc),domain(domain) + PointIteratorSkin( Decomposition & dec, + size_t (& sz)[dim], + const Box<dim,T> & domain, + const Box<dim,T> & sub_A, + const Box<dim,T> & sub_B, + size_t (& bc)[dim]) + :grid_dist_id_iterator_dec_skin<Decomposition>(dec, sz, getAB(sz,domain,sub_A,sub_B,sp,RETURN_A), + getAB(sz,domain,sub_A,sub_B,sp,RETURN_B), bc), + domain(domain) { sub_domainA.add(sub_A); calculateAp(); diff --git a/src/Operators/Vector/vector_dist_operators_functions.hpp b/src/Operators/Vector/vector_dist_operators_functions.hpp index 50e397b..6f8fe79 100644 --- a/src/Operators/Vector/vector_dist_operators_functions.hpp +++ b/src/Operators/Vector/vector_dist_operators_functions.hpp @@ -204,7 +204,6 @@ fun_name(double d, const vector_dist_expression_op<exp1,exp2,op1> & va)\ CREATE_VDIST_ARG2_FUNC(pmul,pmul,VECT_PMUL) - ////////// Special function reduce ///////////////////////// @@ -291,5 +290,17 @@ rsum(const vector_dist_expression<prp1,v1> & va, const vector_type & vd) return exp_sum; } +namespace openfpm +{ + /*! \brief General distance formula + * + * + */ + template <typename T, typename P> auto distance(T exp1, P exp2) -> decltype(norm(exp1 - exp2)) + { + return norm(exp1 - exp2); + } +} + #endif /* OPENFPM_NUMERICS_SRC_OPERATORS_VECTOR_VECTOR_DIST_OPERATORS_FUNCTIONS_HPP_ */ diff --git a/src/Operators/Vector/vector_dist_operators_unit_tests.hpp b/src/Operators/Vector/vector_dist_operators_unit_tests.hpp index d2d7a12..6ed8a54 100644 --- a/src/Operators/Vector/vector_dist_operators_unit_tests.hpp +++ b/src/Operators/Vector/vector_dist_operators_unit_tests.hpp @@ -937,7 +937,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_operators_test ) // normalization function - vA = vVB * vVC + norm(vVC + vVB) + distance(vVC,vVB); + vA = vVB * vVC + norm(vVC + vVB) + openfpm::distance(vVC,vVB); check_values_scal_norm_dist(vd); Point<3,float> p0({2.0,2.0,2.0}); diff --git a/src/PSE/Kernels_test_util.hpp b/src/PSE/Kernels_test_util.hpp index f74682b..c179f6b 100644 --- a/src/PSE/Kernels_test_util.hpp +++ b/src/PSE/Kernels_test_util.hpp @@ -86,7 +86,7 @@ template<typename T, typename Kernel> void PSE_test(size_t Npart, size_t overlap size_t bc[1]={NON_PERIODIC}; Ghost<1,T> g(20*eps); - vector_dist<1,T, aggregate<T>, CartDecomposition<1,T> > vd(Npart,box,bc,g); + vector_dist<1,T, aggregate<T> > vd(Npart,box,bc,g); auto it2 = vd.getIterator(); -- GitLab