【发布时间】:2015-07-19 13:49:46
【问题描述】:
在循环中将多个 opencl 内核排队的正确算法是什么? 代码如下:
for(int i=0;i<numIter;i++){ // numIter = 1000
//
status = clEnqueueNDRangeKernel(commandQueue,kernel1,2,NULL,globalThreads,localThreads,0,NULL,NULL);
ASSERT_CL(status);
status = clEnqueueNDRangeKernel(commandQueue,kernel2,2,NULL,globalThreads,localThreads,0,NULL,&ndrEvt);
ASSERT_CL(status);
if(i>0 && i%16==0){ // 16 - just
status = clFlush(commandQueue);
ASSERT_CL(status);
spinForEventsComplete( 1, &ndrEvt );
//status = clWaitForEvents(1, &ndrEvt);
//ASSERT_CL(status);
}
}
status = clFlush(commandQueue);
ASSERT_CL(status);
spinForEventsComplete( 1, &ndrEvt );
还是应该在每次 clEnqueueNDRangeKernel 调用后使用 wait?
谢谢!
【问题讨论】: