可能保持糟糕的VRAM"被占用"?

时间:2014-02-22 12:44:04

标签: macos opengl gpu

我有一个iMac,其VRAM似乎已经消失了。在启动时,事情大部分时间都很好,但最终,随着越来越多的窗口打开(即在GPU上创建纹理),我最终遇到了毛病的VRAM,我得到了这些奇怪的“嘈杂”网格状模式在窗户中的红色和绿色。

我有一个想法,但总的来说,当涉及到OpenGL和GPU编程时,我主要是一个新手,所以我想我会问这里是否合理:

如果我写了一个小应用程序,在启动时运行,并且会分配GPU纹理(一些合理的量子 - 我不知道,可能是256K?),直到它消耗掉所有可用的VRAM(即无法再分配任何纹理) )。然后让它将特定的数据模式上传到每个纹理中。接下来,它将从GPU回读纹理,并将数据与原始模式进行校验和。如果它签出,则释放它(供系统的其余部分使用)。如果它不是校验和,则挂起(永远)。

缺点我可以看到:用户空间应用无法明确地运行所有VRAM,因为系统会抓住一些,但实际上,我只是想从一个额外的生活中挤出一些额外的生命在这里死机,所以在这方面有所帮助是值得欢迎的。我也知道从VRAM回读的速度相对较慢,但我并不过分关注性能 - 这是一项实际的努力,当然。

这听起来是否合理,或者我在这里缺少一些关于GPU的基本事实?

2 个答案:

答案 0 :(得分:0)

您的方法很有趣,但我认为如果您正在寻找快速解决方案或解决方法,可能还有其他方法可以更容易实现。如果您的VRAM位于fritz上,则可能存在腐败发生的特定位置。如果您能够始终确定它在特定点发生(VRAM消耗了大量的内存等),那么您可以使用它。

创建RAM磁盘非常容易,另一种可能性是为VRAM分配常规内存。我知道这两个都很有可能,因为我已经做到了。如果有人说“不会起作用”(没有进攻Pavel),它不应该阻止你至少尝试。如果您对我提到的技术感兴趣,我很乐意提供更多信息,但是,这是关于您的想法,我想知道您是否可以使它工作。

答案 1 :(得分:0)

如果你能够在加载操作系统之前编写一个在启动时运行的应用程序,那么它将在引导加载程序中 - 为什么你当时不会对内存进行自检?

或者,您是指操作系统启动登录后的用户态应用程序?用户态应用程序将无法完成您在循环访问每个地址时提到的内容,因为没有直接为每个页面映射到userland。

如果您确定RAM有问题,您是否尝试更换RAM?