该代码中的错误"expression must have integral or enum type":



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

__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;
}
}

错误发生在"Z"中,拉伸:

c = c + z;

(我是 CUDA 编程的初学者)

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

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

*c = *c + z;

当你编写c = c + z并收到这样的错误时,你应该怀疑你的类型不匹配。c是不可分配的float *z是不可分配的float

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

最新更新