我的代码中有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];
}
}
}
导致此错误的原因是什么?
答案 0 :(得分:3)
for (int i=0;i<36142<i++)
应该是
for (int i=0;i<36142;i++)
但是可以使用clGetProgramBuildInfo()来检查这种错误。 这是你的错误还是只是一个错字?