2012-08-03 39 views
0

我在nVidia Quattro 6000设备上运行长时间运行的内核。内核涉及数以万计的迭代循环。长时间运行任务中的OpenCL错误

当我运行内核时,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; 
    } 
} 
+0

更新:更新驱动程序后,从回调的错误是不存在,clFinish()返回CL_INVALID_COMMAND_QUEUE – GDR 2012-08-03 13:30:04

回答