长时间运行的任务中出现OpenCL错误

我在nVidia Quattro 6000设备上运行一个长期运行的内核。 内核涉及一个有数万次迭代的循环。

当我运行内核,2秒后屏幕变黑,Windows重新启动GPU驱动程序,并且clFinish返回一个错误。 所以我给了自己一张第二张显示卡,现在2秒超时不适用。

内核计算了50秒,然后出现了这些错误(以“GPU ERROR”为前缀的行是由clCreateContext错误callback打印的错误):

GPU ERROR: CL_OUT_OF_RESOURCES error executing clFinish on Quadro 6000 (Device 0). Computation finished, took 50 seconds (00:00:50) GPU ERROR: CL_OUT_OF_RESOURCES error waiting for idle on Quadro 6000 (Device 0). clFinish() returned CL_OUT_OF_RESOURCES GPU ERROR: CL_OUT_OF_RESOURCES error waiting for idle on Quadro 6000 (Device 0). 

我能做些什么呢?

为了简单起见,这是这个内核的简化版本。 实际上,它在曲面上执行整合,这就是为什么我需要一个循环 – 但这个简单的版本也崩溃了,因为足够大的n。

 __kernel void integrate( __global float *input, __global float *output, unsigned int n, float c) { size_t kernel_idx = (get_global_id(1)*get_global_size(0) + get_global_id(0)); if(kernel_idx < inputWidth*inputHeight*inputDepth) { int j; ... float sum = 0.0; for(j = 0; j < n; j++) // y { sum += input[j]; } output[kernel_idx] = sum; } } 

Solutions Collecting From Web of "长时间运行的任务中出现OpenCL错误"