2011-02-11 30 views
3

在下面的代碼,如果我帶來的#defineñ65536#如果FSIZE上面,然後我得到了以下錯誤:Cuda的代碼示例#define錯誤,預期 「)」

#if FSIZE==1 
__global__ void compute_sum1(float *a, float *b, float *c, int N) 
{ 
#define N 65536 
     int majorIdx = blockIdx.x; 
     int subIdx = threadIdx.x; 

     int idx=majorIdx*32+subIdx ; 

     float sum=0; 

     int t=4*idx; 
     if(t<N) 
     { 
       c[t]= a[t]+b[t]; 
       c[t+1]= a[t+1]+b[t+1]; 
       c[t+2]= a[t+2]+b[t+2]; 
       c[t+3]= a[t+3]+b[t+3]; 
     } 
     return; 
} 
#elif FSIZE==2 
__global__ void compute_sum2(float2 *a, float2 *b, float2 *c, int N) 
#define N 65536 
{ 
     int majorIdx = blockIdx.x; 
     int subIdx = threadIdx.x; 

     int idx=majorIdx*32+subIdx ; 

     float sum=0; 

     int t=2*idx; 
     if(t<N) 
     { 
       c[t].x= a[t].x+b[t].x; 
       c[t].y= a[t].y+b[t].y; 
       c[t+1].x= a[t+1].x+b[t+1].x; 
       c[t+1].y= a[t+1].y+b[t+1].y; 
     } 
     return ; 
} 

float1vsfloat2.cu(10): error: expected a ")"

這個問題有點煩人,我真的很想知道爲什麼會發生。我有一種感覺,我忽略了一些非常愚蠢的東西。順便說一句,這段代碼位於文件的頂部。甚至沒有#include之前。 我會很感激任何可能的解釋。

回答

12

預處理器修改,這個行:

__global__ void compute_sum1(float *a, float *b, float *c, int N) 

__global__ void compute_sum1(float *a, float *b, float *c, int 65536) 

這是無效的CUDA代碼。

+0

知道我在做一些超級愚蠢的事! 謝謝。 順便說一句,謝謝你在2分鐘內回答。 SO岩石。 – 0fnt 2011-02-11 16:00:05