内核具有相同名称的多个程序

时间:2013-10-01 12:45:22

标签: opencl nvidia

我有以下情况:

两个线程处理两个共享相同上下文的OpenCL设备。每个线程加载不同版本的OpenCL设备代码,创建cl::Programm实例并编译其特定cl::Device的代码。但是,成功构建程序后的createKernels函数失败,错误代码为-47 =

  

CL_INVALID_KERNEL_DEFINITION如果由kernel_name给出的__kernel函数的函数定义,例如参数个数,则参数类型对于已为其构建程序可执行文件的所有设备都不相同。

有多个cl::Context个实例(每个设备一个),效果很好。如果我查看OpenCL类图(http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/classDiagram.html),我不明白为什么不能在一个上下文中使用多个内核的多个程序,因为它们可以通过相关程序清楚地区分。

我在CUDA SDK 5.5中使用Nvidia的OpenCL实现。给我带来的问题是:

这是对OpenCL结构的一般误解吗?有一条规则说上下文中的每个内核都必须有一个唯一的名称,或者这个Nvidia的非OpenCL标准是否确认了处理这个特定用例的方法? / p>

我真的希望在一个上下文中的多个设备能够使用从一个cl::Buffer到另一个{{1}}的副本,即使它们的内存位于不同的设备上也是如此。

0 个答案:

没有答案