【问题标题】:calling a function from opencl kernel with the concept of pass by value使用按值传递的概念从 opencl 内核调用函数
【发布时间】:2012-11-18 12:04:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: kernel opencl pass-by-value


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想知道如何从 void 返回类型函数返回值。
    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多