Login  Register

Timeout Detection and Recovery of GPUs through WDDM (Windows)

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

Timeout Detection and Recovery of GPUs through WDDM (Windows)

Demoscene Passivist
Administrator
214 posts
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
| More
Print post
Permalink

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

Michael Bien
407 posts
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
| More
Print post
Permalink

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

Riven
2 posts
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
| More
Print post
Permalink

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

Riven
2 posts
cmd /c "start stuff.reg"
Reply | Threaded
Open this post in threaded view
| More
Print post
Permalink

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

Demoscene Passivist
Administrator
214 posts
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 ?