## C Specification

To flush commands to a device, call the function

cl_int clFlush(
cl_command_queue command_queue);

## Parameters

• command_queue is the command queue to flush.

## Description

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 CL_​TRUE; clEnqueueMapBuffer, clEnqueueMapImage with blocking_map set to CL_​TRUE; clEnqueueSVMMemcpy with blocking_copy set to CL_​TRUE; 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.

clFlush returns CL_​SUCCESS if the function call was executed successfully. Otherwise, it returns one of the following errors:

• CL_​INVALID_​COMMAND_​QUEUE if command_queue is not a valid host command-queue.

• CL_​OUT_​OF_​RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.

• CL_​OUT_​OF_​HOST_​MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.