在我的OpenCL程序中,我需要使用60多个全局内存缓冲区,并且每个内核都需要能够访问这些缓冲区。有没有推荐的方法来让每个内核知道这些缓冲区的位置?
这些缓冲区在应用程序的整个生命周期中都是稳定的,也就是说,我们将在应用程序启动时分配这些缓冲区,在调用多个内核后,仅在应用程序结束时释放这些缓冲区。但是,它们的内容可能会随着内核对它们进行读/写而发生更改。
在CUDA中,我是通过在CUDA代码中创建60多个程序范围的全局变量来实现这一点的。然后,在主机上,我将分配的设备缓冲区的地址写入这些全局变量中。然后内核只需使用这些全局变量即可找到其需要处理的缓冲区。
那么,在OpenCL中该如何做呢?似乎CL的全局变量与CUDA的有所不同,但我找不到明确的答案,无法确定我的CUDA方法是否可行,如果可行,如何将缓冲指针传输到全局变量中。如果这种方法行不通,还有其他最佳方法吗?
这些缓冲区在应用程序的整个生命周期中都是稳定的,也就是说,我们将在应用程序启动时分配这些缓冲区,在调用多个内核后,仅在应用程序结束时释放这些缓冲区。但是,它们的内容可能会随着内核对它们进行读/写而发生更改。
在CUDA中,我是通过在CUDA代码中创建60多个程序范围的全局变量来实现这一点的。然后,在主机上,我将分配的设备缓冲区的地址写入这些全局变量中。然后内核只需使用这些全局变量即可找到其需要处理的缓冲区。
那么,在OpenCL中该如何做呢?似乎CL的全局变量与CUDA的有所不同,但我找不到明确的答案,无法确定我的CUDA方法是否可行,如果可行,如何将缓冲指针传输到全局变量中。如果这种方法行不通,还有其他最佳方法吗?