Enqueues a kernel to execute using a single work-item. \see_opencl_ref{clEnqueueTask}
| 1471 | /// |
| 1472 | /// \see_opencl_ref{clEnqueueTask} |
| 1473 | event enqueue_task(const kernel &kernel, const wait_list &events = wait_list()) |
| 1474 | { |
| 1475 | BOOST_ASSERT(m_queue != 0); |
| 1476 | BOOST_ASSERT(kernel.get_context() == this->get_context()); |
| 1477 | |
| 1478 | event event_; |
| 1479 | |
| 1480 | // clEnqueueTask() was deprecated in OpenCL 2.0. In that case we |
| 1481 | // just forward to the equivalent clEnqueueNDRangeKernel() call. |
| 1482 | #ifdef BOOST_COMPUTE_CL_VERSION_2_0 |
| 1483 | size_t one = 1; |
| 1484 | cl_int ret = clEnqueueNDRangeKernel( |
| 1485 | m_queue, kernel, 1, 0, &one, &one, |
| 1486 | events.size(), events.get_event_ptr(), &event_.get() |
| 1487 | ); |
| 1488 | #else |
| 1489 | cl_int ret = clEnqueueTask( |
| 1490 | m_queue, kernel, events.size(), events.get_event_ptr(), &event_.get() |
| 1491 | ); |
| 1492 | #endif |
| 1493 | |
| 1494 | if(ret != CL_SUCCESS){ |
| 1495 | BOOST_THROW_EXCEPTION(opencl_error(ret)); |
| 1496 | } |
| 1497 | |
| 1498 | return event_; |
| 1499 | } |
| 1500 | |
| 1501 | /// Enqueues a function to execute on the host. |
| 1502 | event enqueue_native_kernel(void (BOOST_COMPUTE_CL_CALLBACK *user_func)(void *), |