■ 問題
Windows7またはVista上で、下記のエラーがアプリケーションが停止する場合があります。
The NVIDIA OpenGL driver lost connection with the display driver due to exceeding the Windows Time-Out limit and is unable to continue.
上記に関しては下記に記載があります。
http://support.microsoft.com/kb/2665946/en-us
つあり、画面描画のためのGPUドライバの応答が無くなったとOSが判断した際に、 GPUドライバを強制的に再起動するために発生します。強制的に再起動するまでの時間は2秒と決められており、計算上エラーがなくても2秒経過すると発生します。
■ 回避策
方法 1
タイムアウト検出と回復のレジストリ値を調整することで GPU (グラフィック処理ユニット) の処理時間を増加します。
タイムアウト検出と回復は、お使いの pc でのビデオ アダプターのハードウェアまたはドライバー操作が予想よりも完了に時間がかかったことを検出する Windows の機能ですこのような場合、Windows は自動回復し、グラフィック ハードウェアをリセットしようとします。許可されている時間(2 秒)でGPU が回復し、グラフィック ハードウェアをリセットすることができない場合、システムは応答不能になり、「ディスプレイ ドライバー応答停止し、回復しました」エラーを表示します。
MicrosoftのFix itを確認した際のサンプルワークフローを紹介します。
※重要
Microsoftサイトにも記載がある通り、レジストリの変更方法が記載されていますレジストリを誤って変更すると、深刻な問題が発生することがあります。これより下の操作は自己責任の下お試しください。操作を行う前にレジストリをバックアップをとることをお勧め致します。レジストリのバックアップに関しては、MicrosoftのWebサイトをご確認下さい。
- ウィンドウメニューから「プログラムとファイルの検索」にregeditと入力し、レジストリエディタを開きます。
- 下記を開きます。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers
- メニュー内にある「編集>新規」を選択し、OSに合わせて下記を追加します。
KeyValue : TdrDelay ValueType : REG_DWORD ValueData:秒数を入力します。
- マシンを再起動します。
方法2
GPUの「Timeout Detection and Recovery 」を無効にすることも可能です。
Timeout Detection and Recoveryに関する詳細は下記をご参照ください。
http://msdn.microsoft.com/en-us/windows/hardware/gg487368.aspx
上記より、、150K Triangleまでは、GTX680 2Goで処理できます。150k Triangle以上で、あまりパワフルではないカードの場合、TDRを無効にする必要があります。
- 方法1と同様にレジストリエディタを開きます。
KeyPath : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers KeyValue : TdrLevel ValueType : REG_DWORD ValueData : 0
- マシンを一度再起動します。