Run the single kernel */
| 726 | Run the single kernel |
| 727 | */ |
| 728 | void run_kernel( cl_kernel kernel, cl_command_queue queue, WorkSizeInfo &ws, TestResult& result ) |
| 729 | { |
| 730 | clEventWrapper execute_event; |
| 731 | |
| 732 | set_kernel_args(kernel, result.kernelArgs()); |
| 733 | |
| 734 | int error = clEnqueueNDRangeKernel( queue, kernel, ws.work_dim, ws.global_work_offset, ws.global_work_size, ws.local_work_size, 0, NULL, &execute_event ); |
| 735 | if( error != CL_SUCCESS ) |
| 736 | { |
| 737 | throw Exceptions::TestError("clEnqueueNDRangeKernel failed\n", error); |
| 738 | } |
| 739 | |
| 740 | error = clWaitForEvents( 1, &execute_event ); |
| 741 | if( error != CL_SUCCESS ) |
| 742 | { |
| 743 | throw Exceptions::TestError("clWaitForEvents failed\n", error); |
| 744 | } |
| 745 | |
| 746 | // read all the buffers back to host |
| 747 | result.readToHost(queue); |
| 748 | } |
| 749 | |
| 750 | /** |
| 751 | Compare two test results |