2

我有一个计算密集型图像算法,对于每个像素,需要读取许多遥远的像素。距离取决于在编译时定义的常数。我的 OpenCL 算法表现良好,但在某个最大距离处 - 导致更重的 for 循环 - 驱动程序似乎退出了。屏幕变黑几秒钟,然后命令队列永远不会完成。一条气球消息表明司机很不高兴:

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

(使用 . 在 OpenCL 1.1 上运行AMD FirePro V4900 (FireGL V) Graphics Adapter。)

  1. 为什么会出现这种情况?
  2. 是否可以事先告诉司机一切正常?
4

1 回答 1

8

这是 Windows 下的一个已知“功能”(不确定 Linux)——如果视频驱动程序停止响应,操作系统将重置它。除此之外,由于 OpenCL(和 CUDA)是由驱动程序实现的,因此耗时过长的内核看起来就像一个冻结的驱动程序。有一个看门狗计时器可以跟踪这一点(我相信是 5 秒)。

您的选择是:

  1. 您需要确保您的内核不会太耗时(最好)。
  2. 您可以关闭看门狗定时器:超时检测和 GPU 恢复
  3. 您可以在未连接到显示器的 GPU 上运行内核。

我建议你选择1。

于 2012-09-04T08:25:10.163 回答