【问题标题】:Cuda code #define error, expected a ")"Cuda 代码 #define 错误,应为“)”
【发布时间】:2011-06-25 15:51:14
【问题描述】:

在以下代码中,如果我将#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。 我将非常感谢任何可能的解释。

【问题讨论】:

    标签: c cuda c-preprocessor nvcc


    【解决方案1】:

    预处理器改变了这一行:

    __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 代码。

    【讨论】:

    • 知道我在做一些非常愚蠢的事情!谢谢。顺便说一句,感谢您在 2 分钟内回答。如此摇滚。
    • 别担心,你不是在做这个完全傻事的人;)
    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 2013-06-13
    • 2012-10-04
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多