GPU中工作项加载的限制?CUDA/OpenCL

GPU中工作项加载的限制?CUDA/OpenCL,cuda,opencl,gpu,gpgpu,Cuda,Opencl,Gpu,Gpgpu,我有一个计算密集型图像算法,对于每个像素,需要读取许多远处的像素。距离取决于编译时定义的常数。我的OpenCL算法执行得很好,但在某个最大距离处(导致更重的for循环),驱动程序似乎退出了。屏幕会变黑几秒钟,然后命令队列永远不会结束。气球消息显示驾驶员不高兴: “显示驱动程序AMD驱动程序停止响应,已成功恢复。” (使用AMD FirePro V4900(FireGL V)图形适配器在OpenCL 1.1上运行此功能) 为什么会发生这种情况 是否可以事先告诉司机一切正常 这是Windows下的一

我有一个计算密集型图像算法,对于每个像素,需要读取许多远处的像素。距离取决于编译时定义的常数。我的OpenCL算法执行得很好,但在某个最大距离处(导致更重的for循环),驱动程序似乎退出了。屏幕会变黑几秒钟,然后命令队列永远不会结束。气球消息显示驾驶员不高兴:

“显示驱动程序AMD驱动程序停止响应,已成功恢复。”

(使用AMD FirePro V4900(FireGL V)图形适配器在OpenCL 1.1上运行此功能)

  • 为什么会发生这种情况
  • 是否可以事先告诉司机一切正常
  • 这是Windows下的一个已知“功能”(不确定Linux)——如果视频驱动程序停止响应,操作系统将重置它。除此之外,由于OpenCL(和CUDA)是由驱动程序实现的,因此耗时太长的内核看起来就像一个冻结的驱动程序。有一个看门狗定时器可以跟踪这一点(我相信是5秒)

    你的选择是:

  • 您需要确保您的内核不会太耗时(最好)
  • 您可以关闭看门狗计时器:
  • 您可以在未连接到显示器的GPU上运行内核

  • 我建议你选择1。

    谢谢!TDR确实是个问题。现在我会坚持2号,但3号很有吸引力。我想GPU甚至可以在没有连接显示器的情况下运行得更快一些。