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 に答える