Skip to content

Commit df7547e

Browse files
committed
implemented all other type tests
1 parent 52f3694 commit df7547e

File tree

1 file changed

+139
-11
lines changed

1 file changed

+139
-11
lines changed

test/MeshField.cpp

Lines changed: 139 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ void single_type(int num_tuples) {
1414
Controller c(num_tuples);
1515
MeshField::MeshField<Controller> cabMeshField(c);
1616

17-
auto field = cabMeshField.makeField<0>();
17+
auto field0 = cabMeshField.makeField<0>();
1818

1919
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
2020
{
21-
field.access(s,a);
22-
printf("test %d %d\n", s,a);
21+
double d0 = 10;
22+
field0.access(s,a) = d0;
23+
assert(field0.access(s,a) == d0);
2324
};
2425

2526
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"single_type_pfor");
@@ -39,7 +40,28 @@ void multi_type(int num_tuples) {
3940
auto field2 = cabMeshField.makeField<2>();
4041
auto field3 = cabMeshField.makeField<3>();
4142
auto field4 = cabMeshField.makeField<4>();
42-
43+
44+
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
45+
{
46+
double d0 = 10.456;
47+
field0.access(s,a) = d0;
48+
double d1 = 43.973234567;
49+
field1.access(s,a) = d1;
50+
float f0 = 123.45;
51+
field2.access(s,a) = f0;
52+
int i0 = 22;
53+
field3.access(s,a) = i0;
54+
char c0 = 'a';
55+
field4.access(s,a) = c0;
56+
57+
assert(field0.access(s,a) == d0);
58+
assert(field1.access(s,a) == d1);
59+
assert(field2.access(s,a) == f0);
60+
assert(field3.access(s,a) == i0);
61+
assert(field4.access(s,a) == c0);
62+
};
63+
64+
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"multi_type_pfor");
4365
}
4466

4567
void many_type(int num_tuples) {
@@ -59,6 +81,34 @@ void many_type(int num_tuples) {
5981
auto field4 = cabMeshField.makeField<4>();
6082
auto field5 = cabMeshField.makeField<5>();
6183
auto field6 = cabMeshField.makeField<6>();
84+
85+
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
86+
{
87+
double d0 = 10.456;
88+
field0.access(s,a) = d0;
89+
double d1 = 43.973234567;
90+
field1.access(s,a) = d1;
91+
float f0 = 123.45;
92+
field2.access(s,a) = f0;
93+
float f1 = 543.21;
94+
field3.access(s,a) = f1;
95+
int i0 = 222;
96+
field4.access(s,a) = i0;
97+
short int i1 = 50;
98+
field5.access(s,a) = i1;
99+
char c0 = 'h';
100+
field6.access(s,a) = c0;
101+
102+
assert(field0.access(s,a) == d0);
103+
assert(field1.access(s,a) == d1);
104+
assert(field2.access(s,a) == f0);
105+
assert(field3.access(s,a) == f1);
106+
assert(field4.access(s,a) == i0);
107+
assert(field5.access(s,a) == i1);
108+
assert(field6.access(s,a) == c0);
109+
};
110+
111+
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"many_type_pfor");
62112
}
63113

64114
void rank1_arr(int num_tuples) {
@@ -70,6 +120,19 @@ void rank1_arr(int num_tuples) {
70120
MeshField::MeshField<Controller> cabMeshField(c);
71121

72122
auto field0 = cabMeshField.makeField<0>();
123+
124+
125+
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
126+
{
127+
for (int i = 0; i < width; i++)
128+
{
129+
double d0 = 10+i;
130+
field0.access(s,a,i) = d0;
131+
assert(field0.access(s,a,i) == d0);
132+
}
133+
};
134+
135+
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"rank1_arr_pfor");
73136
}
74137

75138
void rank2_arr(int num_tuples) {
@@ -83,6 +146,21 @@ void rank2_arr(int num_tuples) {
83146
MeshField::MeshField<Controller> cabMeshField(c);
84147

85148
auto field0 = cabMeshField.makeField<0>();
149+
150+
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
151+
{
152+
for (int i = 0; i < width; i++)
153+
{
154+
for (int j = 0; j < height; j++)
155+
{
156+
double d0 = (10+i)/(j+1);
157+
field0.access(s,a,i,j) = d0;
158+
assert(field0.access(s,a,i,j) == d0);
159+
}
160+
}
161+
};
162+
163+
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"rank2_arr_pfor");
86164
}
87165

88166
void rank3_arr(int num_tuples) {
@@ -97,6 +175,25 @@ void rank3_arr(int num_tuples) {
97175
MeshField::MeshField<Controller> cabMeshField(c);
98176

99177
auto field0 = cabMeshField.makeField<0>();
178+
179+
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
180+
{
181+
for (int i = 0; i < width; i++)
182+
{
183+
for (int j = 0; j < height; j++)
184+
{
185+
for (int k = 0; k < depth; k++)
186+
{
187+
double d0 = ((10+i)*(k+1))/(j+1);
188+
field0.access(s,a,i,j,k) = d0;
189+
assert(field0.access(s,a,i,j,k) == d0);
190+
}
191+
}
192+
}
193+
};
194+
195+
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"rank3_arr_pfor");
196+
100197
}
101198

102199
void mix_arr(int num_tuples) {
@@ -116,19 +213,50 @@ void mix_arr(int num_tuples) {
116213
auto field1 = cabMeshField.makeField<1>();
117214
auto field2 = cabMeshField.makeField<2>();
118215
auto field3 = cabMeshField.makeField<3>();
216+
217+
auto vector_kernel = KOKKOS_LAMBDA(const int s, const int a)
218+
{
219+
float f0;
220+
int i0;
221+
char c0 = 's';
222+
field3.access(s,a) = c0;
223+
224+
for (int i = 0; i < width; i++)
225+
{
226+
i0 = i+s+a;
227+
field2.access(s,a,i) = i0;
228+
for (int j = 0; j < height; j++)
229+
{
230+
f0 = i0 / (i+j+1.123);
231+
field1.access(s,a,i,j) = f0;
232+
for (int k = 0; k < depth; k++)
233+
{
234+
double d0 = ((10+i)*(k+1))/(j+1);
235+
field0.access(s,a,i,j,k) = d0;
236+
assert(field0.access(s,a,i,j,k) == d0);
237+
}
238+
assert(field1.access(s,a,i,j) == f0);
239+
}
240+
assert(field2.access(s,a,i) == i0);
241+
}
242+
assert(field3.access(s,a) == c0);
243+
};
244+
245+
cabMeshField.parallel_for(0,num_tuples,vector_kernel,"mix_arr_pfor");
246+
119247
}
120248

121249
int main(int argc, char* argv[]) {
122250
int num_tuples = (argc < 2) ? (1000) : (atoi(argv[1]));
123251
Kokkos::ScopeGuard scope_guard(argc, argv);
124-
printf("num_tuples: %d\n", num_tuples);
252+
125253
single_type(num_tuples);
126-
//multi_type(num_tuples);
127-
//many_type(num_tuples);
128-
//rank1_arr(num_tuples);
129-
//rank2_arr(num_tuples);
130-
//rank3_arr(num_tuples);
131-
//mix_arr(num_tuples);
254+
multi_type(num_tuples);
255+
many_type(num_tuples);
256+
rank1_arr(num_tuples);
257+
rank2_arr(num_tuples);
258+
rank3_arr(num_tuples);
259+
mix_arr(num_tuples);
132260

133261
return 0;
134262
}

0 commit comments

Comments
 (0)