错误"表达式必须具有整数或枚举类型"在那个代码中:

时间:2017-06-05 23:24:32

标签: cuda

错误"表达式必须具有整数或枚举类型"在那个代码中:

__global__ void VectorKernel(float *a, float *b, float *c, int n)
{
    int i = threadIdx.x;
    float y = 0, z = 0;

if (i < n)

    y = (b-a) / n;

    for (float j = y; j <= n ; j++) {
        z = (((j+y) - j) / 6) * function(j) + 4 * (function((j + (y+j)) / 2)) + function(y+j);

        c = c + z;
    }
}

错误发生在&#34; z&#34;,在stretch:

c = c + z;

(我是CUDA编程的初学者)

2 个答案:

答案 0 :(得分:5)

c是一个指针。指针算术需要指针和整数类型表达式。

如果您要将z添加到float指向的c,则应将表达式更改为:

*c = *c + z;

答案 1 :(得分:0)

当您编写c = c + z并收到类似错误时,您应该怀疑您的类型不匹配。 cfloat *zfloat,不可转让。

您可能想要做的是将*c + z的结果存储在c指向的内存位置,在这种情况下,您可以写: *c = *c + z