74 cout <<
"Test of Kernel with double..." << flush;
85 using namespace elementOperators;
93 vector<cl_double> output0(10), output1(10);
97 bool status(output0[9]<10.1 && output1[2]>2-1e-4 && output1[3]<3+1e-4);
106 cout <<
"Test of KernelSIMD..." << flush;
111 vector<cl_float> input0(11, 3);
112 vector<cl_float> input1(11, 5);
113 vector<cl_float> output(11, 0);
114 vector<cl_float> expected({8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8});
120 using namespace elementOperators;
129 bool status(output == expected);
130 errorMessage(status);
138 cout <<
"Test of KernelSIMDUA..." << flush;
143 vector<cl_float> input0(11, 3);
144 vector<cl_float> input1(11, 5);
145 vector<cl_float> output(11, 0);
146 vector<cl_float> expected({8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8});
154 using namespace elementOperators;
164 bool status(output == expected);
165 errorMessage(status);
173 cout <<
"Test of kernel with PrivateVariable..." << flush;
179 vector<cl_float> input1(10, 3);
180 vector<cl_float> input2(10, 5);
181 vector<cl_float> output(10, 1);
188 using namespace elementOperators;
199 bool status(output[2] ==8.);
200 errorMessage(status);
208 cout <<
"Test of kernel with PrivateArray..." << flush;
210 vector<cl_int> inputGaIn({0, 4, 5});
211 vector<cl_float> inputGaOut(3, 0);
212 vector<cl_float> inputPa({-9, 2, 0, 15, 1, 3});
213 vector<cl_float> output(3);
214 vector<cl_float> expected({-9, 1, 3});
221 copy(inputGaIn, gaIn);
226 using namespace elementOperators;
235 bool status(output == expected);
236 errorMessage(status);
330 cout <<
"Test of Subvector..." << flush;
331 cl_float init[] = {16, 2, 77, 29, 23, 16, 2, 77, 29, 23};
334 vector<cl_float> input(init, init +
sizeof(init) /
sizeof(cl_float) );
335 vector<cl_float> output(2);
339 copy(subvec0, output);
341 bool status(output[0]==16);
342 errorMessage(status);
350 cout <<
"Test of Swap functionality..." << flush;
354 vector<cl_float> input0(10, 1);
355 vector<cl_float> input1(10, 2);
356 vector<cl_float> output(10, 10);
363 bool status(output[3] == 2);
364 errorMessage(status);
372 cout <<
"Test of LocalArray and syncCopy with barrier()..." << flush;
377 unsigned int groupsNumber = 5;
378 unsigned int groupSize = 2;
388 vector<cl_float> input0(groupSize * groupsNumber, 3);
389 vector<cl_float> input1(groupSize * groupsNumber, 5);
390 vector<cl_float> output(groupSize * groupsNumber, 0);
391 vector<cl_float> expected({2, 2, 2, 2, 2, 2, 2, 2, 2, 2});
398 using namespace elementOperators;
399 k.
addExpression(syncCopy(vec0, loc0, cGroupSize * groupID, c0, cGroupSize));
400 k.
addExpression(syncCopy(vec1, loc1, cGroupSize * groupID, c0, cGroupSize));
403 k.
addExpression(barrier(
"CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE"));
404 k.
addExpression(syncCopy(loc1, vec1, c0, cGroupSize * groupID, cGroupSize));
412 bool status(output == expected);
413 errorMessage(status);