2012-12-18 56 views
2

我試着編寫一個輔助函數,但是當我編譯程序時我總是遇到這個錯誤。opencl輔助函數只適用於int而不適用於float或float2

:24:7:錯誤:衝突的類型 'AddVector' 浮子AddVector(浮起,浮子B) ^ :19:12:注:先前的隱式聲明是這裏 浮子上的= 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:這個內核什麼也不做 - 它只是尋找錯誤

回答

4

您的問題是,你聲明AddVector功能它的使用之後。將聲明移到用法上面(即在內核上方),它會很好地編譯。

要了解有關「隱式函數」位的更多信息,請參閱here

此外,使用英特爾離線OpenCL編譯器 - 我看到兩個內核的警告。

:9:9: warning: implicit declaration of function 'AddVector' is invalid in C99 
相關問題