2012-05-31 34 views
0

解决CL_BUILD_PROGRAM_FAILURE -11我得到在我的代码的CL_BUILD_PROGRAM_FAILURE如何在OpenCL的

status = clBuildProgram(program, 1, devices, NULL, NULL, NULL); 

,其中程序对象创建成功,并在我的电脑变得指针设备。

我的内核:

__kernel void templateKernel(__global unsigned int * output, 
         __global unsigned int * input, 
         __global  unsigned int * pixels) 
{ 
    uint tid = get_global_id(0); 

    uint2 v0; 
    uint2 v1; 
    uint2 v2; 
    uint2 pixl; 
    uint2 dt01; 
    uint2 dt02; 
    uint2 dt11; 
    uint2 dt12; 
    float u; 
    float v; 
    float invDenom ; 
    for (int i=0;i<36142<i++) 
    { 
     pixl=(uint2)(pixels[tid],pixels[tid+1]); 
     v0.x=input[(tid*6)+4]-input[(tid*6)]; 
     v0.y=input[(tid*6)+5]-input[(tid*6)+1]; 
     v1.x=input[(tid*6)+2]-input[(tid*6)]; 
     v1.y=input[(tid*6)+3]-input[(tid*6)+1]; 
     v1.x=input[(tid*6)+2]-input[(tid*6)]; 
     v1.y=input[(tid*6)+3]-input[(tid*6)+1]; 
     v2.x=pixels[tid]-input[(tid*6)]; 
     v2.y=pixels[tid+1]-input[(tid*6)+1]; 
     dot00 = dot(v0, v0); 
     dt01 = dot(v0, v1); 
     dt02 = dot(v0, v2); 
     dt11 = dot(v1, v1); 
     dt12 = dot(v1, v2); 
     invDenom = 1/(dt00 * dt11 - dt01 * dt01); 
     u = (dt11 * dt02 - dt01 * dt12) * invDenom; 
     v = (dt00 * dt12 - dt01 * dt02) * invDenom; 
     if (u >= 0 && v >= 0 && u + v < 1) 
     { 
      output[tid] = pixels[tid]; 
      output[tid+1] = pixels[tid+1]; 

     } 
    } 
} 

是什么导致这个错误?

回答

3
for (int i=0;i<36142<i++) 

应该是

for (int i=0;i<36142;i++) 

但这种错误可以用clGetProgramBuildInfo()来检查.. 这是你的错误,或者只是一个错字?

+0

感谢您的回答 –