【发布时间】:2014-10-12 02:01:09
【问题描述】:
如果有人在Enqueuing kernel 之后立即尝试使用clEnquyeReadBuiffer,这会不会很糟糕,因为复制操作将在内核刚入队后立即开始,而不是执行?
clEnqueueNDRangeKernel(
queue,
kernel,
1,
NULL,
globalws,
localws,
0,
NULL,
NULL);
//this will start immediately, since above call is async
clEnqueueReadBuffer(
queue,
bufferOut,
CL_FALSE,
0,
10 * sizeof(int),
out,
0,
0,
0);
clFinish(queue);
上面虽然因为clFinish(queue),保证了host只有在完整的数据复制后才能看到数据,但是如何保证数据本身是正确的,(因为数据复制开始了内核入队后立即)。我的理解有什么问题吗?
【问题讨论】: