Timeout Detection and Recovery of GPUs through WDDM (Windows)

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Timeout Detection and Recovery of GPUs through WDDM (Windows)

Demoscene Passivist
Administrator
This question is not directly related to JOGL/JOCL but rather a general problem with intensive GPU calculations using OpenGL/OpenCL.

Is there a programmatically way to disable "Timeout Detection and Recovery of GPUs through WDDM"  on Windows ? I'm currently implementing a raymarcher on the GPU and sometimes it takes quite long to calculate. After a couple of seconds Windows then resets the display driver, wich ofcourse crashes my application.

This behavior is a buildin safety mechanism in Windows to avoid locking the whole system when "only" the graphics driver crashes. Its quite useful, but when it comes to intensive GPGPU calculations its a real pain in the ass

The official suggestion is to "fiddle with some registry keys" or "buy a second graphics card" . Both ways seems to be unaccaptable to me. I guess OpenCL has the same issue when using kernels that render longer that a couple of seconds.

So has anyone found some kind of Windows-API function to disable this behavior ? Or some other workaround wich can be trigged from a running application ?

Thanks in advance for ur efforts ...
Reply | Threaded
Open this post in threaded view
|

Re: Timeout Detection and Recovery of GPUs through WDDM (Windows)

Michael Bien
hehe,

cool so you found a way to trigger this windows "feature" :)

the only workaround I know is to try to spend less as 1s in a driver API call. Since you are using the driver, windows thinks you are also rendering with 60FPS - and everything else must be obviously broken software :)

regards,
michael


On 09/21/2010 05:52 PM, Demoscene Passivist [via jogamp] wrote:
This question is not directly related to JOGL/JOCL but rather a general problem with intensive GPU calculations using OpenGL/OpenCL.

Is there a programmatically way to disable "Timeout Detection and Recovery of GPUs through WDDM"  on Windows ? I'm currently implementing a raymarcher on the GPU and sometimes it takes quite long to calculate. After a couple of seconds Windows then resets the display driver, wich ofcourse crashes my application.

This behavior is a buildin safety mechanism in Windows to avoid locking the whole system when "only" the graphics driver crashes. Its quite useful, but when it comes to intensive GPGPU calculations its a real pain in the ass

The official suggestion is to "fiddle with some registry keys" or "buy a second graphics card" . Both ways seems to be unaccaptable to me. I guess OpenCL has the same issue when using kernels that render longer that a couple of seconds.

So has anyone found some kind of Windows-API function to disable this behavior ? Or some other workaround wich can be trigged from a running application ?

Thanks in advance for ur efforts ...




-- 
http://michael-bien.com/
Reply | Threaded
Open this post in threaded view
|

Re: Timeout Detection and Recovery of GPUs through WDDM (Windows)

Riven
In reply to this post by Demoscene Passivist
Whjy would modifying some register keys be unacceptable?

You can easily automate that:
1. write some *.reg file, containing the key modifications
2. programmatically invoke cmd.exe with 'some further parameters' (I'm lazy) to run that *.reg file
3. once done, reset the keys using the same process
Reply | Threaded
Open this post in threaded view
|

Re: Timeout Detection and Recovery of GPUs through WDDM (Windows)

Riven
cmd /c "start stuff.reg"
Reply | Threaded
Open this post in threaded view
|

Re: Timeout Detection and Recovery of GPUs through WDDM (Windows)

Demoscene Passivist
Administrator
In reply to this post by Riven
>Why would modifying some register keys be unacceptable?

I guess u need admin rights to modify the registry ?! That should be a real issue at least when u wanna deploy stuff on Vista/Win7.

Also if ur application crashes for some reason the registry changes aren't rolled back wich could lead to system stability issues later on.

As a last note: If I really use the registry workaround I'm not sure if the registry settings are cached by the driver or do they immediately take effect when modified ?