diff options
author | Denis Steckelmacher <steckdenis@yahoo.fr> | 2011-07-13 17:47:36 +0200 |
---|---|---|
committer | Denis Steckelmacher <steckdenis@yahoo.fr> | 2011-07-13 17:47:36 +0200 |
commit | a8bb88edc1d88ec35ca7fd47584badbee56dcf4b (patch) | |
tree | 278c0741b4c3493de321483152b4139eeca90836 /tests | |
parent | f9f2aaf486a63ffaa7275c2d25a3d0680a953b1b (diff) |
Add tests for kernel enqueueing (they don't work)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_kernel.cpp | 39 |
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); |