summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDenis Steckelmacher <steckdenis@yahoo.fr>2011-07-13 17:47:36 +0200
committerDenis Steckelmacher <steckdenis@yahoo.fr>2011-07-13 17:47:36 +0200
commita8bb88edc1d88ec35ca7fd47584badbee56dcf4b (patch)
tree278c0741b4c3493de321483152b4139eeca90836 /tests
parentf9f2aaf486a63ffaa7275c2d25a3d0680a953b1b (diff)
Add tests for kernel enqueueing (they don't work)
Diffstat (limited to 'tests')
-rw-r--r--tests/test_kernel.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/test_kernel.cpp b/tests/test_kernel.cpp
index bce4e03..659e66d 100644
--- a/tests/test_kernel.cpp
+++ b/tests/test_kernel.cpp
@@ -43,6 +43,7 @@ START_TEST (test_compiled_kernel)
cl_platform_id platform = 0;
cl_device_id device;
cl_context ctx;
+ cl_command_queue queue;
cl_program program;
cl_int result;
cl_kernel kernels[2];
@@ -66,6 +67,12 @@ START_TEST (test_compiled_kernel)
"unable to create a valid context"
);
+ queue = clCreateCommandQueue(ctx, device, 0, &result);
+ fail_if(
+ result != CL_SUCCESS,
+ "unable to create a command queue"
+ );
+
program = clCreateProgramWithSource(ctx, 1, &src, &program_len, &result);
fail_if(
result != CL_SUCCESS,
@@ -118,6 +125,38 @@ START_TEST (test_compiled_kernel)
"cannot set kernel argument"
);
+ size_t global_size = sizeof(buffer) / sizeof(buffer[0]);
+ size_t local_size = global_size / 2;
+ cl_event event;
+ bool ok;
+
+ result = clEnqueueNDRangeKernel(queue, kernels[1], 1, 0, &global_size, 0, 0, 0, &event);
+ fail_if(
+ result != CL_SUCCESS,
+ "unable to queue a NDRange kernel with local work size guessed"
+ );
+
+ result = clWaitForEvents(1, &event);
+ fail_if(
+ result != CL_SUCCESS,
+ "unable to wait for event"
+ );
+
+ ok = true;
+ for (int i=0; i<global_size; ++i)
+ {
+ if (buffer[i] != 2 * i)
+ {
+ ok = false;
+ break;
+ }
+ }
+
+ fail_if(
+ ok == false,
+ "the kernel hasn't done its job, the buffer is wrong"
+ );
+
clReleaseKernel(kernels[0]);
clReleaseKernel(kernels[1]);
clReleaseProgram(program);