mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-22 07:09:03 +00:00
Migrate compiler suite to the new test registration framework (#2319)
Contributes to #2181. Signed-off-by: Ahmed Hesham <ahmed.hesham@arm.com>
This commit is contained in:
@@ -248,49 +248,60 @@ const char *pragma_unroll_kernels[] = {
|
||||
"}\n",
|
||||
};
|
||||
|
||||
int test_pragma_unroll(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements) {
|
||||
const size_t ELEMENT_NUM = 100;
|
||||
const size_t KERNEL_NUM = 24;
|
||||
REGISTER_TEST_VERSION(pragma_unroll, Version(2, 0))
|
||||
{
|
||||
const size_t ELEMENT_NUM = 100;
|
||||
const size_t KERNEL_NUM = 24;
|
||||
|
||||
cl_int error;
|
||||
cl_int error;
|
||||
|
||||
//execute all kernels and check if the results are as expected
|
||||
for (size_t kernelIdx = 0; kernelIdx < KERNEL_NUM; ++kernelIdx) {
|
||||
clProgramWrapper program;
|
||||
clKernelWrapper kernel;
|
||||
if (create_single_kernel_helper(
|
||||
context, &program, &kernel, 1,
|
||||
(const char **)&pragma_unroll_kernels[kernelIdx], "pragma_unroll"))
|
||||
// execute all kernels and check if the results are as expected
|
||||
for (size_t kernelIdx = 0; kernelIdx < KERNEL_NUM; ++kernelIdx)
|
||||
{
|
||||
log_error("The program we attempted to compile was: \n%s\n",
|
||||
pragma_unroll_kernels[kernelIdx]);
|
||||
return -1;
|
||||
clProgramWrapper program;
|
||||
clKernelWrapper kernel;
|
||||
if (create_single_kernel_helper(
|
||||
context, &program, &kernel, 1,
|
||||
(const char **)&pragma_unroll_kernels[kernelIdx],
|
||||
"pragma_unroll"))
|
||||
{
|
||||
log_error("The program we attempted to compile was: \n%s\n",
|
||||
pragma_unroll_kernels[kernelIdx]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
clMemWrapper buffer =
|
||||
clCreateBuffer(context, CL_MEM_READ_WRITE,
|
||||
ELEMENT_NUM * sizeof(cl_uint), NULL, &error);
|
||||
test_error(error, "clCreateBuffer failed");
|
||||
|
||||
error = clSetKernelArg(kernel, 0, sizeof(buffer), &buffer);
|
||||
test_error(error, "clSetKernelArg failed");
|
||||
|
||||
// only one thread should be enough to verify if kernel is fully
|
||||
// functional
|
||||
size_t workSize = 1;
|
||||
error = clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &workSize, NULL,
|
||||
0, NULL, NULL);
|
||||
test_error(error, "clEnqueueNDRangeKernel failed");
|
||||
|
||||
std::vector<cl_uint> results(ELEMENT_NUM, 0);
|
||||
error = clEnqueueReadBuffer(queue, buffer, CL_TRUE, 0,
|
||||
ELEMENT_NUM * sizeof(cl_uint), &results[0],
|
||||
0, NULL, NULL);
|
||||
test_error(error, "clEnqueueReadBuffer failed");
|
||||
|
||||
for (size_t i = 0; i < ELEMENT_NUM; ++i)
|
||||
{
|
||||
if (results[i] != i)
|
||||
{
|
||||
log_error("Kernel %zu returned invalid result. Test: %d, "
|
||||
"expected: %zu\n",
|
||||
kernelIdx + 1, results[i], i);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
clMemWrapper buffer = clCreateBuffer(context, CL_MEM_READ_WRITE, ELEMENT_NUM * sizeof(cl_uint), NULL, &error);
|
||||
test_error(error, "clCreateBuffer failed");
|
||||
|
||||
error = clSetKernelArg(kernel, 0, sizeof(buffer), &buffer);
|
||||
test_error(error, "clSetKernelArg failed");
|
||||
|
||||
//only one thread should be enough to verify if kernel is fully functional
|
||||
size_t workSize = 1;
|
||||
error = clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &workSize, NULL, 0, NULL, NULL);
|
||||
test_error(error, "clEnqueueNDRangeKernel failed");
|
||||
|
||||
std::vector<cl_uint> results(ELEMENT_NUM, 0);
|
||||
error = clEnqueueReadBuffer(queue, buffer, CL_TRUE, 0, ELEMENT_NUM * sizeof(cl_uint), &results[0], 0, NULL, NULL);
|
||||
test_error(error, "clEnqueueReadBuffer failed");
|
||||
|
||||
for (size_t i = 0; i < ELEMENT_NUM; ++i) {
|
||||
if (results[i] != i) {
|
||||
log_error(
|
||||
"Kernel %zu returned invalid result. Test: %d, expected: %zu\n",
|
||||
kernelIdx + 1, results[i], i);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user