我可以在OpenCL内核中嵌入C++类吗?

cl_*_*ger 4 c++ object opencl

是否有可能在OpenCL内核中使用自定义的C++类?它应该像这样工作:

#include "element.cpp"
__kernel void do_something(__global element* input, __global element* output);
{
    int index = get_global_id(0);
    output[index] = input[index].update(index);
}
Run Code Online (Sandbox Code Playgroud)

这很有趣,因为您可以指定之后必须在element :: update(int no)中完成的工作.

我没有得到它的工作.这就是OpenCL-Compiler告诉我的:

未知类型名称'class'

在CUDA中这是有效的.如果OpenCL内核中的对象方法不起作用,还有其他想法吗?

感谢您的提示!

Vit*_*con 9

我相信OpenCL遵循C99语言规范而不是C++.OpenCL的 C++版本的规范正在进行中.我相信AMD APP已经实现了OpenCL的C++版本.回到你的问题,我认为最好有一个结构作为C++和C之间的接口.C++版本应该是C实现的包装器,如果您迫切需要这样做.

编辑:我不能把它放在评论中,因此把它放在这里.AMD围绕OpenCL的C++库包括一个静态C++库Bolt.