Skip to content
Snippets Groups Projects
Commit a3750c9b authored by Pietro Incardona's avatar Pietro Incardona
Browse files

Refactoring test

parent f2d7c8d3
No related branches found
No related tags found
No related merge requests found
......@@ -10,123 +10,11 @@
BOOST_AUTO_TEST_SUITE( vector_dist_dlb_test )
template<typename vector_type> void test_dlb_vector()
template<typename vector_type>
void mp_test_template(vector_type & vd0, vector_type & vd1, vector_type & vd2, vector_type & vd3)
{
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_type 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 < 50000 ; 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.template ghost_get<>();
ModelSquare md;
md.factor = 10;
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.template 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,10.0);
}
}
}
template<typename vector_type> void test_dlb_multi_phase_vector()
{
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_type vd0(0,domain,bc,g,DEC_GRAN(2048));
vector_type vd1(0,domain,bc,g,DEC_GRAN(2048));
vector_type vd2(0,domain,bc,g,DEC_GRAN(2048));
vector_type vd3(0,domain,bc,g,DEC_GRAN(2048));
// Only processor 0 initialy add particles on a corner of a domain
if (v_cl.getProcessUnitID() == 0)
......@@ -320,6 +208,156 @@ template<typename vector_type> void test_dlb_multi_phase_vector()
}
}
template<typename vector_type> void test_dlb_vector()
{
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_type 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 < 50000 ; 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.template ghost_get<>();
ModelSquare md;
md.factor = 10;
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.template 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,10.0);
}
}
}
template<typename vector_type> void test_dlb_multi_phase_vector()
{
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_type vd0(0,domain,bc,g,DEC_GRAN(2048));
vector_type vd1(0,domain,bc,g,DEC_GRAN(2048));
vector_type vd2(0,domain,bc,g,DEC_GRAN(2048));
vector_type vd3(0,domain,bc,g,DEC_GRAN(2048));
mp_test_template(vd0,vd1,vd2,vd3);
}
template<typename vector_type> void test_dlb_multi_phase_v_vector()
{
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};
openfpm::vector<vector_type> v_phases;
{
vector_type vd0(0,domain,bc,g,DEC_GRAN(2048));
v_phases.add(vd0);
v_phases.add(vector_type(vd0.getDecomposition(),0));
v_phases.add(vector_type(vd0.getDecomposition(),0));
v_phases.add(vector_type(vd0.getDecomposition(),0));
}
auto & vd0 = v_phases.get(0);
auto & vd1 = v_phases.get(1);
auto & vd2 = v_phases.get(2);
auto & vd3 = v_phases.get(3);
mp_test_template(vd0,vd1,vd2,vd3);
}
BOOST_AUTO_TEST_CASE( vector_dist_dlb_test_part )
{
test_dlb_vector<vector_dist<3,float,aggregate<float>>>();
......@@ -330,6 +368,11 @@ BOOST_AUTO_TEST_CASE( vector_dist_dlb_multi_phase_test_part )
test_dlb_multi_phase_vector<vector_dist<3,float,aggregate<float>>>();
}
BOOST_AUTO_TEST_CASE( vector_dist_dlb_multi_phase_v_test_part )
{
test_dlb_multi_phase_v_vector<vector_dist<3,float,aggregate<float>>>();
}
BOOST_AUTO_TEST_CASE( vector_dist_dlb_metis_test_part )
{
test_dlb_vector<vector_dist<3,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment