В следующем коде, если я поставлю #define N 65536 над #if FSIZE, я получу следующую ошибку:
#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): ошибка: ожидается ")"
Эта проблема немного раздражает, и мне бы очень хотелось знать, почему это происходит. У меня такое чувство, что я пропускаю что-то действительно глупое. Кстати, этот раздел кода находится в верхней части файла. Даже #include до этого.
Я буду очень признателен за любые возможные объяснения.