我是Cuda编程的新手,并尝试使用粒子代码中的粒子。但第一个问题是建立一个粒子移动器。但是,当我尝试编译此代码时,我收到如下错误消息:
错误:表达式必须具有整数或枚举类型/警告:表达式无效。
我的代码:
__global__ void kernel(int* x, int* x_1, int* E_x, int* t, int* m)
{
int idx = 0;
if (idx < N)
// move particles
x_1[idx] = (E_x[idx] / m[1]) * t[1] * t[1] + x[idx];
}
kernel<<1,1>>( dev_x , dev_x_1, dev_E_x , dev_t, dev_m );
整数定义如下:
int x[N], x_1[N], v_x[N], v_y[N], v_z[N], E_x[N], m[1], t[1];
int *dev_x, *dev_v_x, *dev_x_1, *dev_v_y, *dev_v_z, *dev_E_x, *dev_m, *dev_t;
答案 0 :(得分:4)
一个问题是您在内核启动参数上使用双V形语法而不是正确的三重V形语法。而不是:
kernel<<1,1>>( dev_x , dev_x_1, dev_E_x , dev_t, dev_m );
这样做:
kernel<<<1,1>>>( dev_x , dev_x_1, dev_E_x , dev_t, dev_m );