Windows Opencl clCreateCommandQueue()函数详细解析
OpenCL对象(如内存、程序和内核对象)是使用上下文创建的。对这些对象的操作是使用命令队列执行的。命令队列可用于按顺序对一组操作(称为命令)进行排队。拥有多个命令队列允许应用程序将多个独立命令排队,而不需要同步。请注意,只要这些对象没有被共享,这个方法就应该有效。跨多个命令队列共享对象需要应用程序执行适当的同步。
函数原型
cl_command_queue clCreateCommandQueue(cl_context context,
cl_device_id device,
cl_command_queue_properties properties,
cl_int *errcode_ret)
在特定设备上创建命令队列。
context 必须是有效的OpenCL上下文。
Command-Queue Properties | 描述 |
---|---|
CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ ENABLE | 确定命令队列中排队的命令是按顺序执行还是无序执行。如果设置,命令队列中的命令将无序执行。否则,将按顺序执行命令。 |
CL_QUEUE_PROFILING_ENABLE |
device必须是与context关联的设备。它可以在使用clCreateContext创建上下文时指定的设备列表中,也可以与使用clCreateContextFromType创建上下文时指定的设备类型具有相同的设备类型。
properties指定命令队列的属性列表。这是一个位字段,如表2所述。只能在properties中设置表2中指定的命令队列属性;否则,属性中指定的值将被视为无效。
errcode_ret将返回适当的错误代码。如果errcode_ret为空,则不返回错误代码。
clCreateCommandQueue返回有效的非零命令队列,如果成功创建命令队列,则errcode_ret设置为CL_SUCCESS。否则,它将返回一个空值,并在errcode_ret中返回以下错误值之一:
- CL_INVALID_CONTEXT 如果contest不是有效的上下文。
- CL_INVALID_DEVICE 如果device不是有效设备或未与context关联。
- CL_INVALID_VALUE 如果属性中指定的值无效。
- CL_INVALID_QUEUE_PROPERTIES 如果属性中指定的值有效但设备不支持。
- CL_OUT_OF_HOST_MEMORY 如果在主机上分配OpenCL实现所需的资源失败。