我尝试在设备上的OpenCL中创建命令队列,但结果是CL_INVALID_VALUE。创建队列的示例:
cl_uint maxQueueSize = 450000;
cl_queue_properties proprt[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT, CL_QUEUE_SIZE, maxQueueSize, 0 };
gpuControlData->cmdQueue = clCreateCommandQueueWithProperties(gpuControlData->context, gpuControlData->device, proprt, &err);
如果我在create command queue 0而不是proprt上写,那么一切正常,但它是In-Order,命令队列在主机设备上。如果我只使用= CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE,则编程创建命令队列没有问题,但队列在主机设备上。
感谢您的帮助。