Pregunta

En el siguiente código, si traigo el #define n 65536 sobre el #If FSIZE, entonces recibo el siguiente error:

#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: ESPERADO A ")"

Este problema es un poco molesto y realmente me gustaría saber por qué está sucediendo.Tengo la sensación de que estoy pasando por alto algo realmente tonto.BTW, esta sección de código está en la parte superior del archivo.Ni siquiera un #InClude antes de eso. Realmente apreciaré cualquier posible explicación.

¿Fue útil?

Solución

El preprocesador cambia esta línea:

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

a

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

que no es válido código de CUDA.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top