To flush commands to a device, call the function
cl_int clFlush( cl_command_queue command_queue);
command_queue is the command queue to flush.
All previously queued OpenCL commands in command_queue are issued to the device associated with command_queue. clFlush only guarantees that all queued commands to command_queue will eventually be submitted to the appropriate device. There is no guarantee that they will be complete after clFlush returns.
Any blocking commands queued in a command-queue and clReleaseCommandQueue
perform an implicit flush of the command-queue.
These blocking commands are clEnqueueReadBuffer,
clEnqueueReadBufferRect, clEnqueueReadImage, with blocking_read set to
CL_TRUE; clEnqueueWriteBuffer, clEnqueueWriteBufferRect,
clEnqueueWriteImage with blocking_write set to
clEnqueueMapBuffer, clEnqueueMapImage with blocking_map set to
CL_TRUE; clEnqueueSVMMemcpy with blocking_copy set to
clEnqueueSVMMap with blocking_map set to
CL_TRUE or clWaitForEvents.
To use event objects that refer to commands enqueued in a command-queue as event objects to wait on by commands enqueued in a different command-queue, the application must call a clFlush or any blocking commands that perform an implicit flush of the command-queue where the commands that refer to these event objects are enqueued.
CL_SUCCESS if the function call was executed successfully.
Otherwise, it returns one of the following errors:
CL_INVALID_COMMAND_QUEUEif command_queue is not a valid host command-queue.
CL_OUT_OF_RESOURCESif there is a failure to allocate resources required by the OpenCL implementation on the device.
CL_OUT_OF_HOST_MEMORYif there is a failure to allocate resources required by the OpenCL implementation on the host.
For more information, see the OpenCL Specification
This page is extracted from the OpenCL Specification. Fixes and changes should be made to the Specification, not directly.
Copyright (c) 2014-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.