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

时间:2012-08-03 12:55:21

标签: windows opencl nvidia

我正在nVidia Quattro 6000设备上运行一个长时间运行的内核。内核涉及一个包含数万次迭代的循环。

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

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

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;
    }
}

1 个答案:

答案 0 :(得分:1)