Run two queues parallel
Hi,
I tried to use gpu and cpu parallel.
I created two differente queues in two contexts:
queueCPU = cl::CommandQueue(Context, deviceCPU[0]);
queueGPU = cl::CommandQueue(Context, deviceGPU[0]);
I want to execute both queues parallel.
so I do:
queueCPU.enqueueNDRangeKernel(this->Kernel, cl::NullRange, globalWorkSizeCPU, localWorkSizeCPU, NULL, NULL);
and
queueGPU.enqueueNDRangeKernel(this->Kernel, cl::NullRange, globalWorkSizeGPU, localWorkSizeGPU, NULL, NULL);
and after enqueueing I want to read the data back to host:
queueCPU.enqueueReadBuffer(this->qBuffer.ioBuffer, true, 0,size, hostpointer);
queueGPU.enqueueReadBuffer(this->qBuffer.ioBuffer, true, 0,size, hostpointer);
If I do it that way, the queues don't run parallel. I think one queue is blocked, so the other can't enqueue, right?
and if I do this (non blocking):
queueCPU.enqueueReadBuffer(this->qBuffer.ioBuffer, false, 0,size, hostpointer);
queueGPU.enqueueReadBuffer(this->qBuffer.ioBuffer, false, 0,size, hostpointer);
they run parallel, but I don't get the right result.
How can I block the memory, and execute the queues parallel?
Sheeep
P.S. sorry for not posting complete code, but is in different classes, so I thinks it's to much. If needed I can make an simple example...