0

CL_BUILD_PROGRAM_FAILURE我在我的代码中得到一个

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

        }
    }
}

是什么导致此错误?

4

1 回答 1

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

应该是

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

但是这种错误可以用 clGetProgramBuildInfo() 来检查。这是你的错误还是只是一个错字?

于 2012-05-31T12:41:49.640 回答