8 #ifndef SRC_VECTOR_VECTOR_DIST_COMPLEX_PRP_UNIT_TEST_HPP_
9 #define SRC_VECTOR_VECTOR_DIST_COMPLEX_PRP_UNIT_TEST_HPP_
12 BOOST_AUTO_TEST_CASE( vector_dist_periodic_complex_prp_test_use_3d )
22 std::default_random_engine eg;
23 std::uniform_real_distribution<float> ud(0.0f, 1.0f);
25 #ifdef TEST_COVERAGE_MODE
31 long int big_step = k / 4;
32 big_step = (big_step == 0)?1:big_step;
34 print_test_v(
"Testing 3D vector full complex prp vector k<=",k);
37 for ( ; k >= 2 ; k-= decrement(k,big_step) )
39 BOOST_TEST_CHECKPOINT(
"Testing 3D full complex prp vector k=" << k );
44 size_t bc[3]={NON_PERIODIC,NON_PERIODIC,NON_PERIODIC};
47 float factor = pow(create_vcluster().getProcessingUnits()/2.0f,1.0f/3.0f);
58 auto it = vd.getIterator();
64 vd.getPos(
key)[0] = ud(eg);
65 vd.getPos(
key)[1] = ud(eg);
66 vd.getPos(
key)[2] = ud(eg);
70 vd.getProp<0>(
key).add(vd.getPos(
key)[0]);
71 vd.getProp<0>(
key).add(vd.getPos(
key)[1]);
72 vd.getProp<0>(
key).add(vd.getPos(
key)[2]);
74 vd.getProp<0>(
key).add(vd.getPos(
key)[0]+vd.getPos(
key)[1]);
75 vd.getProp<0>(
key).add(vd.getPos(
key)[1]+vd.getPos(
key)[2]);
76 vd.getProp<0>(
key).add(vd.getPos(
key)[0]+vd.getPos(
key)[2]);
79 size_t sz[] = {3,3,3};
80 vd.getProp<1>(
key).resize(sz);
82 vd.getProp<1>(
key).get<0>({0,0,0}) = vd.getPos(
key)[0];
83 vd.getProp<1>(
key).get<0>({0,0,1}) = vd.getPos(
key)[1];
84 vd.getProp<1>(
key).get<0>({0,0,2}) = vd.getPos(
key)[2];
86 vd.getProp<1>(
key).get<0>({0,1,0}) = 2.0*vd.getPos(
key)[0];
87 vd.getProp<1>(
key).get<0>({0,1,1}) = 2.0*vd.getPos(
key)[1];
88 vd.getProp<1>(
key).get<0>({0,1,2}) = 2.0*vd.getPos(
key)[2];
90 vd.getProp<1>(
key).get<0>({0,2,0}) = 3.0*vd.getPos(
key)[0];
91 vd.getProp<1>(
key).get<0>({0,2,1}) = 3.0*vd.getPos(
key)[1];
92 vd.getProp<1>(
key).get<0>({0,2,2}) = 3.0*vd.getPos(
key)[2];
94 vd.getProp<1>(
key).get<0>({1,0,0}) = 4.0*vd.getPos(
key)[0];
95 vd.getProp<1>(
key).get<0>({1,0,1}) = 4.0*vd.getPos(
key)[1];
96 vd.getProp<1>(
key).get<0>({1,0,2}) = 4.0*vd.getPos(
key)[2];
98 vd.getProp<1>(
key).get<0>({1,1,0}) = 5.0*vd.getPos(
key)[0];
99 vd.getProp<1>(
key).get<0>({1,1,1}) = 5.0*vd.getPos(
key)[1];
100 vd.getProp<1>(
key).get<0>({1,1,2}) = 5.0*vd.getPos(
key)[2];
102 vd.getProp<1>(
key).get<0>({1,2,0}) = 6.0*vd.getPos(
key)[0];
103 vd.getProp<1>(
key).get<0>({1,2,1}) = 6.0*vd.getPos(
key)[1];
104 vd.getProp<1>(
key).get<0>({1,2,2}) = 6.0*vd.getPos(
key)[2];
106 vd.getProp<1>(
key).get<0>({2,0,0}) = 7.0*vd.getPos(
key)[0];
107 vd.getProp<1>(
key).get<0>({2,0,1}) = 7.0*vd.getPos(
key)[1];
108 vd.getProp<1>(
key).get<0>({2,0,2}) = 7.0*vd.getPos(
key)[2];
110 vd.getProp<1>(
key).get<0>({2,1,0}) = 8.0*vd.getPos(
key)[0];
111 vd.getProp<1>(
key).get<0>({2,1,1}) = 8.0*vd.getPos(
key)[1];
112 vd.getProp<1>(
key).get<0>({2,1,2}) = 8.0*vd.getPos(
key)[2];
114 vd.getProp<1>(
key).get<0>({2,2,0}) = 9.0*vd.getPos(
key)[0];
115 vd.getProp<1>(
key).get<0>({2,2,1}) = 9.0*vd.getPos(
key)[1];
116 vd.getProp<1>(
key).get<0>({2,2,2}) = 9.0*vd.getPos(
key)[2];
135 auto it2 = vd.getIterator();
136 count_local_n_local<3,vector_dist<3,float, aggregate<openfpm::vector<float>,
grid_cpu<3,aggregate<double,double[3]>>>> >(vd,it2,bc,box,dom_ext,l_cnt,nl_cnt,n_out);
139 BOOST_REQUIRE_EQUAL(n_out,0ul);
144 BOOST_REQUIRE(nl_cnt != 0);
145 BOOST_REQUIRE(l_cnt > nl_cnt);
151 BOOST_REQUIRE_EQUAL(l_cnt,(
size_t)k);
157 auto itg = vd.getGhostIterator();
158 count_local_n_local<3, vector_dist<3,float, aggregate<openfpm::vector<float>,
grid_cpu<3,aggregate<double,double[3]>>>> >(vd,itg,bc,box,dom_ext,l_cnt,nl_cnt,n_out);
161 BOOST_REQUIRE_EQUAL(l_cnt,0ul);
166 BOOST_REQUIRE(nl_cnt != 0);
172 auto it3 = vd.getDomainAndGhostIterator();
176 auto key = it3.get();
178 ret &= vd.getProp<0>(
key).size() == 6;
180 ret &= vd.getProp<0>(
key).
get(0) == vd.getPos(
key)[0];
181 ret &= vd.getProp<0>(
key).
get(1) == vd.getPos(
key)[1];
182 ret &= vd.getProp<0>(
key).
get(2) == vd.getPos(
key)[2];
184 ret &= vd.getProp<0>(
key).
get(3) == vd.getPos(
key)[0]+vd.getPos(
key)[1];
185 ret &= vd.getProp<0>(
key).
get(4) == vd.getPos(
key)[1]+vd.getPos(
key)[2];
186 ret &= vd.getProp<0>(
key).
get(5) == vd.getPos(
key)[0]+vd.getPos(
key)[2];
190 ret &= vd.getProp<1>(
key).size() == 3*3*3;
191 ret &= vd.getProp<1>(
key).get<0>({0,0,0}) == vd.getPos(
key)[0];
192 ret &= vd.getProp<1>(
key).get<0>({0,0,1}) == vd.getPos(
key)[1];
193 ret &= vd.getProp<1>(
key).get<0>({0,0,2}) == vd.getPos(
key)[2];
195 ret &= vd.getProp<1>(
key).get<0>({0,1,0}) == 2.0*vd.getPos(
key)[0];
196 ret &= vd.getProp<1>(
key).get<0>({0,1,1}) == 2.0*vd.getPos(
key)[1];
197 ret &= vd.getProp<1>(
key).get<0>({0,1,2}) == 2.0*vd.getPos(
key)[2];
199 ret &= vd.getProp<1>(
key).get<0>({0,2,0}) == 3.0*vd.getPos(
key)[0];
200 ret &= vd.getProp<1>(
key).get<0>({0,2,1}) == 3.0*vd.getPos(
key)[1];
201 ret &= vd.getProp<1>(
key).get<0>({0,2,2}) == 3.0*vd.getPos(
key)[2];
203 ret &= vd.getProp<1>(
key).get<0>({1,0,0}) == 4.0*vd.getPos(
key)[0];
204 ret &= vd.getProp<1>(
key).get<0>({1,0,1}) == 4.0*vd.getPos(
key)[1];
205 ret &= vd.getProp<1>(
key).get<0>({1,0,2}) == 4.0*vd.getPos(
key)[2];
207 ret &= vd.getProp<1>(
key).get<0>({1,1,0}) == 5.0*vd.getPos(
key)[0];
208 ret &= vd.getProp<1>(
key).get<0>({1,1,1}) == 5.0*vd.getPos(
key)[1];
209 ret &= vd.getProp<1>(
key).get<0>({1,1,2}) == 5.0*vd.getPos(
key)[2];
211 ret &= vd.getProp<1>(
key).get<0>({1,2,0}) == 6.0*vd.getPos(
key)[0];
212 ret &= vd.getProp<1>(
key).get<0>({1,2,1}) == 6.0*vd.getPos(
key)[1];
213 ret &= vd.getProp<1>(
key).get<0>({1,2,2}) == 6.0*vd.getPos(
key)[2];
215 ret &= vd.getProp<1>(
key).get<0>({2,0,0}) == 7.0*vd.getPos(
key)[0];
216 ret &= vd.getProp<1>(
key).get<0>({2,0,1}) == 7.0*vd.getPos(
key)[1];
217 ret &= vd.getProp<1>(
key).get<0>({2,0,2}) == 7.0*vd.getPos(
key)[2];
219 ret &= vd.getProp<1>(
key).get<0>({2,1,0}) == 8.0*vd.getPos(
key)[0];
220 ret &= vd.getProp<1>(
key).get<0>({2,1,1}) == 8.0*vd.getPos(
key)[1];
221 ret &= vd.getProp<1>(
key).get<0>({2,1,2}) == 8.0*vd.getPos(
key)[2];
223 ret &= vd.getProp<1>(
key).get<0>({2,2,0}) == 9.0*vd.getPos(
key)[0];
224 ret &= vd.getProp<1>(
key).get<0>({2,2,1}) == 9.0*vd.getPos(
key)[1];
225 ret &= vd.getProp<1>(
key).get<0>({2,2,2}) == 9.0*vd.getPos(
key)[2];
230 BOOST_REQUIRE_EQUAL(ret,
true);
void sum(T &num)
Sum the numbers across all processors and get the result.
size_t getProcessUnitID()
Get the process unit id.
void execute()
Execute all the requests.
Implementation of VCluster class.
void enlarge(const Box< dim, T > &gh)
Enlarge the box with ghost margin.
This class is a trick to indicate the compiler a specific specialization pattern. ...
size_t getProcessingUnits()
Get the total number of processors.