我有一个冗长的数字运算过程,它充分利用了OpenGL屏幕外渲染的功能.这一切都运作良好但是当我自己离开工作而我去做三明治时,我常常发现它在我离开时坠毁了.
我能够确定崩溃发生的时间非常接近我正在使用的笔记本电脑决定关闭屏幕以节省能源.崩溃本身就在NVIDIA dlls内部,所以没有希望知道发生了什么.
显而易见的解决方案是关闭电源管理功能,关闭屏幕和视频卡,但我正在寻找更友好的用户.有没有办法以编程方式执行此操作?
我知道有一个利用GPU处理的SETI @ home实现.它如何防止视频卡进入睡眠状态?
我不确定你在使用什么操作系统,但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)