在Opencl内核执行的长过程中,有可能检索到数据吗?

在Opencl内核执行的长过程中,有可能检索到数据吗?,opencl,Opencl,我有一个Opencl内核代码,应该在GPU上运行。它有一个循环,可以连续执行操作并修改数组。在阵列进行长时间修改期间,是否有办法访问阵列以查看其渐进结果 执行可能需要几个小时的时间。我想每30秒从数组中生成一个图形结果。我目前必须等待,当最终结果完成时,我会生成图形结果 您不应该制作运行数小时的内核。首先,如果GPU与显示器连接的GPU相同,则显示器和GUI不会更新。在Windows(可能还有其他操作系统)下,驱动程序会在内核运行几秒钟后重置GPU。唯一可能的情况是使用仅计算设备(如特殊模式下的

我有一个Opencl内核代码,应该在GPU上运行。它有一个循环,可以连续执行操作并修改数组。在阵列进行长时间修改期间,是否有办法访问阵列以查看其渐进结果

执行可能需要几个小时的时间。我想每30秒从数组中生成一个图形结果。我目前必须等待,当最终结果完成时,我会生成图形结果

您不应该制作运行数小时的内核。首先,如果GPU与显示器连接的GPU相同,则显示器和GUI不会更新。在Windows(可能还有其他操作系统)下,驱动程序会在内核运行几秒钟后重置GPU。唯一可能的情况是使用仅计算设备(如特殊模式下的NVIDIA Tesla)。然而,如果没有OpenCL2.0和细粒度SVM,CPU就无法获得部分结果

相反,您应该将工作分解为许多小的内核执行。这也将解决您的数据访问问题;您可以将输出缓冲区的环形缓冲区作为目标,这样CPU就可以在下一个内核生成下一组结果时查看其中一个缓冲区的结果