在我的 OpenCL 程序中,我将最终得到 60 多个全局内存缓冲区,每个内核都需要能够访问这些缓冲区。让每个内核知道每个缓冲区的位置的推荐方法是什么?
缓冲区本身在应用程序的整个生命周期中都是稳定的——也就是说,我们将在应用程序启动时分配缓冲区,调用多个内核,然后只在应用程序结束时释放缓冲区。然而,它们的内容可能会随着内核读取/写入它们而改变。
在 CUDA 中,我这样做的方式是在我的 CUDA 代码中创建 60 多个程序范围的全局变量。然后,我会在主机上将分配的设备缓冲区的地址写入这些全局变量中。然后内核将简单地使用这些全局变量来找到它需要使用的缓冲区。
在 OpenCL 中执行此操作的最佳方法是什么?似乎 CL 的全局变量与 CUDA 的有点不同,但我无法找到关于我的 CUDA 方法是否有效的明确答案,如果可以,如何将缓冲区指针转换为全局变量。如果这不起作用,那么最好的方法是什么?