从opencl内核中调用一个具有通过值概念的函数。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从opencl内核中调用一个具有通过值概念的函数。相关的知识,希望对你有一定的参考价值。
例如,如果我想使用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概念传递参数,怎么办?
答案
C语言不支持通过引用传递变量,Opencl(v1.x)内核和C99一样工作。你需要使用直接指针(这是一种逐值传递)。
int sum(int *u, int *v)
{ return (*u)+(*v); }
OpenCL v2.x可以编译C++,但还是需要先得到驱动和硬件的支持。
以上是关于从opencl内核中调用一个具有通过值概念的函数。的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OpenCL 内核中更新 OpenCL-OpenGL 共享缓冲区数据?