Cuda代码“定义错误,应为“a”)&引用;

Cuda代码“定义错误,应为“a”)&引用;,c,cuda,c-preprocessor,nvcc,C,Cuda,C Preprocessor,Nvcc,在下面的代码中,如果将#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+subId

在下面的代码中,如果将#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 ;
}
#如果FSIZE==1
__全局无效计算(浮点*a,浮点*b,浮点*c,整数N)
{
#定义N 65536
int-majoredx=blockIdx.x;
int subIdx=threadIdx.x;
int idx=majorIdx*32+subIdx;
浮点数和=0;
int t=4*idx;

如果(t预处理器更改此行:

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


这不是有效的CUDA代码。

知道我在做一些非常愚蠢的事情!谢谢。顺便说一句,谢谢你在2分钟内回答。太棒了。别担心,你不是那个做这种愚蠢事情的人;)
__global__ void compute_sum1(float *a, float *b, float *c, int 65536)