2012-05-31 33 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

感謝您的回答 –