有没有一种方法可以强制OpenCL将数据保留在芯片上的全局内存缓冲区中(例如,它永远不会被换出到系统内存)?基本上,我想为自己的需求保留GPU内存的一部分,并且我希望我放在那里的数据无论其他应用程序是否开始饱和GPU的内存,都始终保留在GPU上。谢谢!
GPU和CPU的内存管理单元没有直接关联,它们不像CPU那样进行页面错误处理。GPU是由设备驱动程序控制的块设备外围设备。
对于OpenCL,当您通过创建cl_mem对象并将其进入GPU进行排队(写入)来分配GPU上的内存时,它将一直保留到您使用clReleaseMemObject显式释放为止。若要重用缓冲区,则需不释放该对象并跟踪其Cl_mem对象。