我有一个冗长的数字处理过程,它利用了露天屏幕外渲染的优势。一切都很好,但是当我离开三明治时,我将其独自工作时,我通常会发现它在我离开时崩溃了。
我能够确定崩溃的发生非常接近我使用的笔记本电脑决定关闭屏幕以节省能量的那一刻。坠机本身就在NVIDIA DLL内部很好,因此不希望知道发生了什么。

显而易见的解决方案是关闭电源管理功能,该功能可以关闭屏幕和视频卡,但我正在寻找更友好的东西。有没有办法在程序上执行此操作?
我知道有一个SETI@HOME实现,它利用GPU处理。如何防止视频卡入睡?

有帮助吗?

解决方案

我不确定您正在使用什么操作系统,但是 Windows发送消息 即将进入新的电力状态。您可以收听这件事,然后开始在CPU上处理处理,或拒绝输入低功率状态的请求。

其他提示

为了遇到类似问题的Linux用户的好处,我想补充一点,您可以获得类似的通知并使用该通知抑制功率状态更改 DBUS API. 。 python中的一个示例脚本,从链接中获取,以抑制权力状态的变化:

#!/usr/bin/python
import dbus
import time
bus = dbus.Bus(dbus.Bus.TYPE_SESSION)
devobj = bus.get_object('org.freedesktop.PowerManagement', 
                        '/org/freedesktop/PowerManagement')
dev = dbus.Interface (devobj, "org.freedesktop.PowerManagement.Inhibit")
cookie = dev.Inhibit('Nautilus', 'Copying files from /media/SANVOL')
time.sleep(10)
dev.UnInhibit(cookie)

根据MSDN的说法,有一个API允许应用程序告诉Windows它仍在工作,并且Windows不应入睡或关闭显示屏。

该功能称为 SetThreadExecutionState (MSDN)。它对我有用,使用标志 ES_SYSTEM_REQUIREDES_CONTINUOUS.

但是请注意,使用此功能不会阻止屏幕保护程序运行,如果屏幕保护程序还使用OpenGL(Oder Direct3D),则可能会干扰您的OpenGL应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top