我用 clCreateCommandQueue() 创建了多个 OpenCL 队列。
cl_int ret_code = CL_SUCCESS;
cl_command_queue queue1 = clCreateCommandQueue(GPU_context, GPU_device_ID, CL_QUEUE_PROFILING_ENABLE, &ret_code);
...
cl_command_queue queueN = clCreateCommandQueue(GPU_context, GPU_device_ID, CL_QUEUE_PROFILING_ENABLE, &ret_code);
所有队列均无错误地创建。其中一个队列暂时没有命令。所有内核执行都很好,等等。最后我需要释放我创建的队列。所有 clFinish() 都正常,除了一个 - 等待队列,其中没有命令(例如,queueN 中没有命令)。以便
clFinish(queue1);
...
clFinish(queueK);
正确返回,但是
clFinish(queueN);
永远挂着。有什么解决办法?
操作系统是 Ubuntu 12.04 x64。GPU 是 GeForce GTS450。OpenCL SDK 1.1