从opencl内核中调用一个具有通过值概念的函数。

问题描述 投票:4回答:1

例如,如果我想使用pass by values的概念。

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

现在我的错误在'&'符号处,我无法使用pass by reference概念传递参数,怎么办?

kernel opencl pass-by-value
1个回答
7
投票

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

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

OpenCL v2.x可以编译C++,但还是需要先得到驱动和硬件的支持。

© www.soinside.com 2019 - 2024. All rights reserved.