我正在用两张 GPU 卡做一些实验:
卡 A:GeForce GTX 560 Ti 卡 B:GeForce 9800 GTX+ 设置:支持 SLI 的华硕主板,配备 Intel Core i7 预期实验:使用卡 B 进行所有图形用途,如显示操作系统和应用程序;使用卡 A独自用于 GPU 内核计算
我知道这两张卡都很旧了,但我认为它们的设置还不错——我可以在设备管理器中看到它们,在运行有关设备的 CUDA 查询时也能看到它们
我的问题是:
有没有办法绝对地“关闭”卡A任何操作系统中的其他用途,并且仅当 cudaSetDevice()“瞄准”卡 A 时,卡 A 才会被“触发”以运行 CUDA 内核?
到目前为止,我使用的简单方法只是将 1 个显示器连接到卡 B。这种方法似乎工作 - 使用卡 B 在显示器上播放 YouTube 视频时会产生一些 GPU 内存活动和 GPU 负载,而在卡 A 上未检测到此类 GPU 活动。并且,只要我在卡 A 上使用 cudaSetDevice()“目标”运行一些 CUDA 代码,它就会引发一些 GPU 活动。
但我认为一定有更准确的方法来做到这一点。有人能给我一些指点吗?如果与玩 BIOS 有关,如果您能为我提供一些细节,我将不胜感激,因为我过去很少这样做。
我的问题的扩展(我猜):
有没有办法真正在两个 NVidia GPU 之间切换(我认为这应该是一个单独的问题,与备受关注的 NVidia Optimus 技术相关的问题有关,其中涉及英特尔 GPU 单元,不是吗?)
答案1
除了您已经完成的操作之外,您没有太多其他可以做的事情。在 Windows 下,GeForce GPU(所有 GPU)受以下控制:WDDM 环境. 最大的一项强制措施是Windows TDR机制(可以修改,尽管需要注册表破解和反复试验)。除此之外,只需避免在要为 CUDA 保留的 GPU 上构建桌面,然后进行适当的检测就cudaSetDevice()
足够了。
直接回答你的问题,鉴于 WDDM 无法关闭,并且它至少有一些副作用(TDR 就是其中之一)不在 Windows 下,没有办法完全禁用操作系统与 GeForce GPU 的交互,因此,只有在卡上创建 CUDA 上下文时,卡才会经历任何操作系统交互。
是的,这与 Stack Overflow 的主题无关,这就是为什么会有关闭投票。
答案2
是的。非常简单。使用硬件配置。
他们将其隐藏在 Windows 7 中:它现在位于电源配置中。 http://windows.microsoft.com/en-us/windows7/change-create-or-delete-a-power-plan-scheme
一个视频卡配备一个电源方案,另一个视频卡配备另一个硬件配置,并配备一个便宜的 V 开关。