Windows 长时间运行任务上的OpenCL错误

Windows 长时间运行任务上的OpenCL错误,windows,opencl,nvidia,Windows,Opencl,Nvidia,我正在nVidia Quattro 6000设备上运行一个长时间运行的内核。内核涉及到一个具有数万次迭代的循环 当我运行内核时,2秒钟后屏幕变黑,Windows重新启动GPU驱动程序,clFinish返回一个错误。所以我给自己买了第二张GPU卡,只用于显示,现在2秒超时不适用 内核计算了50秒,然后出现了这些错误(以“GPU错误”为前缀的行是由clCreateContext错误回调打印的错误): 我能怎么办 为了简单起见,这是该内核的精简版本。实际上,它在曲面上执行积分,这就是为什么我需要一个循

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

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

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

我能怎么办

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

__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;
    }
}
\uuu内核无效集成(
__全局浮点*输入,
__全球浮动*输出,
无符号整数n,
浮点数(c)
{
size_t kernel_idx=(get_global_id(1)*get_global_size(0)+get_global_id(0));
if(内核_idx
检查TDR注册表项并进行相应调整


更新:更新驱动程序后,回调错误不存在,clFinish()返回CL_INVALID_COMMAND_queue我已经尝试过了,但没有帮助-这是我的regedit屏幕截图:好的,禁用检查完全有效,不像调整超时。谢谢
__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;
    }
}