5

如果我想使用传递值概念怎么办。例如:

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

现在我的错误出现在“&”符号处。我无法使用按引用传递概念传递参数。该怎么办?

4

1 回答 1

8

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

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

OpenCL v2.x 可以编译 C++,但仍然需要驱动程序和硬件首先支持。

于 2012-11-30T11:41:31.460 回答