GPU中工作项负载的局限性?CUDA/OpenCL的

l33*_*33t 2 cuda gpu gpgpu opencl

我有一个计算密集型图像算法,对于每个像素,需要读取许多远距离像素.距离取决于在编译时定义的常量.我的OpenCL算法运行良好,但在一定的最大距离 - 导致更多的循环 - 驱动程序似乎纾困.屏幕变黑几秒钟,然后命令队列永远不会完成.气球消息显示司机不满意:

"显示驱动程序AMD驱动程序停止响应并已成功恢复."

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

  1. 为什么会这样?
  2. 是否有可能事先告诉司机一切正常?

Lub*_*nov 8

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

你的选择是:

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

我建议你一起去1.