2

私は、ピクセルごとに、多くの離れたピクセルを読み取る必要がある、計算集約型の画像アルゴリズムを持っています。距離は、コンパイル時に定義された定数に依存します。私のOpenCLアルゴリズムはうまく機能しますが、特定の最大距離では、forループがより重くなり、ドライバーはベイルアウトするように見えます。画面が数秒間真っ暗になり、その後コマンドキューが終了することはありません。バルーンメッセージは、ドライバーが不幸であることを示しています。

「ディスプレイドライバAMDドライバが応答を停止し、正常に回復しました。」

(これをOpenCL 1.1で実行しAMD FirePro V4900 (FireGL V) Graphics Adapterます。)

  1. なぜこれが発生するのですか?
  2. 事前に、すべてが大丈夫だとドライバーに伝えることは可能ですか?
4

1 に答える 1

8

これはWindowsでの既知の「機能」です(Linuxについてはわかりません)。ビデオドライバーが応答を停止すると、OSはそれをリセットします。ただし、OpenCL(およびCUDA)はドライバーによって実装されるため、時間がかかりすぎるカーネルはフリーズしたドライバーのように見えます。これを追跡するウォッチドッグタイマーがあります(5秒だと思います)。

オプションは次のとおりです。

  1. カーネルに時間がかかりすぎないようにする必要があります(最良)。
  2. ウォッチドッグタイマーをオフにすることができます:GPUのタイムアウト検出と回復
  3. ディスプレイに接続されていないGPUでカーネルを実行できます。

1で行くことをお勧めします。

于 2012-09-04T08:25:10.163 に答える