如何在opencl中将不同的参数传递给不同的工作项?

时间:2014-02-27 05:28:21

标签: opencl

我是opencl的绝对新手并且一直在阅读文档,但我遗漏了一些东西。据我了解,工作组的优势在于每个工作人员将为不同的数据执行相同的代码。我一直在阅读文档但我不知道如何完成。 clSetKernelArg似乎是为所有工作者设置内核参数,那么我如何整理组中工作人员的数据集,以便每个工作人员都在处理问题的本身?

1 个答案:

答案 0 :(得分:2)

规范方法是传递缓冲区,然后让每个工作项使用缓冲区中的不同元素,具体取决于其id。

kernel void f(global float* buffer) {
    int gid = get_global_id(0);
    float x = buffer[x];
    // x is different in each work-item.
}

我建议您在深入了解OpenCL时搜索一些教程和代码示例。