|
|
1
3
如果您的数据结构已经在全局内存中,那么您可以只传入一个指针作为内核参数。 另一方面,对于计算能力为2.x或更高的设备,内核参数的限制为4KB:
(参考。 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#function-parameters ) |
|
|
2
2
正如罗伯特·克罗维拉(Robert Crovella)在评论中所建议的那样,你应该能够传递一个指向这些领域的指针。 我在opencl也遇到过类似的问题。。 这是我实现结构的方式: (我的内核和主机函数是opencl的,语法可能是你的问题……但上下文是一样的。!) 以下两个在我的“Mapper.c”中定义-->主机功能
在设备的全局内存上分配内存后,我传输了数据。 我不得不在我的另一个内核函数中重新定义结构定义,如下所示: 映射.cl:
你可以看到我只传递了指向这些区域的指针。。即keyMobj和valueMobj。
上面的代码行属于主机端函数(mapper.c),它创建内核函数(maper.cl)..,接下来的4行(clSetKernelArg..)将参数传递给内核函数。 |