2012-09-04 64 views
2

我有一個計算密集型圖像算法,對於每個像素,需要讀取許多遠處的像素。距離取決於編譯時定義的常量。我的OpenCL算法運行良好,但在一定的最大距離處 - 導致更多的循環 - 驅動程序似乎紓困。屏幕會變黑幾秒鐘,然後命令隊列不會結束。氣球消息顯示驅動程序不滿意:GPU中工作項負載的侷限性? CUDA/OpenCL

「顯示驅動程序AMD驅動程序停止響應並已成功恢復。」

(與AMD FirePro V4900 (FireGL V) Graphics Adapter上的OpenCL 1.1運行此。)

  1. 爲什麼會發生這種情況?
  2. 事先可以告訴司機一切正常嗎?

回答

8

這是Windows下的一個已知「功能」(不知道Linux) - 如果視頻驅動程序停止響應,操作系統將重置它。除此之外,由於OpenCL(和CUDA)是由驅動程序實現的,所以花費太長時間的內核看起來就像是一個凍結的驅動程序。有一個看門狗定時器跟蹤這個(我相信5秒鐘)。

的選項有:

  1. 你需要確保你的內核是不是太耗費時間(最好)。
  2. 您可以關閉看門狗定時器:Timeout Detection and Recovery of GPUs
  3. 您可以在沒有連接到顯示器的GPU上運行內核。

我建議你用1

+0

謝謝了! TDR的確是問題所在。現在我會堅持#2,但#3吸引力。如果沒有顯示器連接,我想GPU甚至可以運行得更快。 – l33t