opencl辅助函数只适用于int而不适用于float或float2

时间:2012-12-18 18:38:17

标签: function kernel opencl

我尝试编写一个辅助函数,但是当我构建程序时,我总是会遇到这个错误。

:24:7:错误:'AddVector'的冲突类型 float AddVector(float a,float b) ^ :19:12:注意:先前的隐含声明就在这里 float a = AddVector(b,c);

我的内核:

__kernel void square(
__global float* input,
__global float* output,
const unsigned int count)
{
//...
float b = 2.f;
float c = 4.f;
float a = AddVector(b,c);
}
float AddVector(float a, float b)
{
return a + b;
}

但是当我使用整数 - 典型值时,它会起作用:

__kernel void square(
__global float* input,
__global float* output,
const unsigned int count)
{
//...
int b = 2;
int c = 4;
int a = AddVector(b,c);
}
int AddVector(int a, int b)
{
return a + b;
}

我做错了什么?

PS:这个内核什么都不做 - 它只是为了找到错误

1 个答案:

答案 0 :(得分:4)

您的问题是您在使用AddVector函数后声明它。将声明移到使用之上(即,在内核之上),它将编译正常。

要了解有关“隐式函数”位的更多信息,请参阅here

此外,使用Intel离线OpenCL编译器 - 我看到两个内核都有相同的警告。

    :9:9: warning: implicit declaration of function 'AddVector' is invalid in C99