From bee5874172dfc81f382f801b5543dc962698e169 Mon Sep 17 00:00:00 2001 From: Pietro Incardona <incardon@mpi-cbg.de> Date: Tue, 21 Feb 2017 19:37:13 +0100 Subject: [PATCH] Adding missing file --- script/update_openfpm | 2 +- src/Vector/vector_dist_dlb_test.hpp | 115 ++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 src/Vector/vector_dist_dlb_test.hpp diff --git a/script/update_openfpm b/script/update_openfpm index 1d58478f4..376b29602 100755 --- a/script/update_openfpm +++ b/script/update_openfpm @@ -44,7 +44,7 @@ function update_openfpm() # git submodule update # sh autogen.sh -# make clean +# ./config.status # make install } diff --git a/src/Vector/vector_dist_dlb_test.hpp b/src/Vector/vector_dist_dlb_test.hpp new file mode 100644 index 000000000..27c46d9b3 --- /dev/null +++ b/src/Vector/vector_dist_dlb_test.hpp @@ -0,0 +1,115 @@ +/* + * vector_dist_dlb_test.hpp + * + * Created on: Feb 21, 2017 + * Author: i-bird + */ + +#ifndef SRC_VECTOR_VECTOR_DIST_DLB_TEST_HPP_ +#define SRC_VECTOR_VECTOR_DIST_DLB_TEST_HPP_ + +BOOST_AUTO_TEST_SUITE( vector_dist_dlb_test ) + +BOOST_AUTO_TEST_CASE( vector_dist_dlb_test_part ) +{ + Vcluster & v_cl = create_vcluster(); + + if (v_cl.getProcessingUnits() > 8) + return; + + Box<3,float> domain({0.0,0.0,0.0},{1.0,1.0,1.0}); + Ghost<3,float> g(0.1); + size_t bc[3] = {PERIODIC,PERIODIC,PERIODIC}; + + vector_dist<3,float,aggregate<float>> vd(0,domain,bc,g,DEC_GRAN(2048)); + + // Only processor 0 initialy add particles on a corner of a domain + + if (v_cl.getProcessUnitID() == 0) + { + for(size_t i = 0 ; i < 10000 ; i++) + { + vd.add(); + + vd.getLastPos()[0] = ((float)rand())/RAND_MAX * 0.3; + vd.getLastPos()[1] = ((float)rand())/RAND_MAX * 0.3; + vd.getLastPos()[2] = ((float)rand())/RAND_MAX * 0.3; + } + } + + + + vd.map(); + vd.ghost_get<>(); + + ModelSquare md; + vd.addComputationCosts(md); + vd.getDecomposition().decompose(); + vd.map(); + + vd.addComputationCosts(md); + + openfpm::vector<size_t> loads; + size_t load = vd.getDecomposition().getDistribution().getProcessorLoad(); + v_cl.allGather(load,loads); + v_cl.execute(); + + for (size_t i = 0 ; i < loads.size() ; i++) + { + float load_f = load; + float load_fc = loads.get(i); + + BOOST_REQUIRE_CLOSE(load_f,load_fc,7.0); + } + + BOOST_REQUIRE(vd.size_local() != 0); + + Point<3,float> v({1.0,1.0,1.0}); + + for (size_t i = 0 ; i < 25 ; i++) + { + // move the particles by 0.1 + + auto it = vd.getDomainIterator(); + + while (it.isNext()) + { + auto p = it.get(); + + vd.getPos(p)[0] += v.get(0) * 0.09; + vd.getPos(p)[1] += v.get(1) * 0.09; + vd.getPos(p)[2] += v.get(2) * 0.09; + + ++it; + } + vd.map(); + + ModelSquare md; + vd.addComputationCosts(md); + vd.getDecomposition().redecompose(200); + vd.map(); + + BOOST_REQUIRE(vd.size_local() != 0); + + vd.ghost_get<>(); + + vd.addComputationCosts(md); + + openfpm::vector<size_t> loads; + size_t load = vd.getDecomposition().getDistribution().getProcessorLoad(); + v_cl.allGather(load,loads); + v_cl.execute(); + + for (size_t i = 0 ; i < loads.size() ; i++) + { + float load_f = load; + float load_fc = loads.get(i); + + BOOST_REQUIRE_CLOSE(load_f,load_fc,7.0); + } + } +} + +BOOST_AUTO_TEST_SUITE_END() + +#endif /* SRC_VECTOR_VECTOR_DIST_DLB_TEST_HPP_ */ -- GitLab