使用pass by value的概念从opencl内核调用函数

Fak*_*een 4 kernel pass-by-value opencl

如果我想使用传值的概念怎么办?例如:

void sum(int &u, int &v)
{    return u+v;  }

__kernel void testing(__global int *a, __global int *b, __global int *c)
{    int i = get_global_id(0);
     int u = max(a,b);
     int v = min(b,c);
     int x = sum(u,v);
}
Run Code Online (Sandbox Code Playgroud)

现在我的错误是'&'符号.我无法使用传递参考概念传递参数.该怎么办?

hus*_*sik 6

C不支持通过引用传递变量,Opencl内核作为C99工作.您需要使用直接指针(这是一个按值传递).

int sum(int *u, int *v)
{    return (*u)+(*v);  }
Run Code Online (Sandbox Code Playgroud)