我正在用两张GPU卡进行一些实验:
卡A:GeForce GTX 560 Ti卡B:GeForce 9800 GTX +设置:采用Intel Core i7的华硕主板,支持SLI预期实验:使用Card B进行所有图形用途,如显示操作系统和应用程序; 将Card A 仅用于GPU内核计算
我知道这两张卡都很老了,但我认为它们设置得很好 - 我可以在设备管理器中看到它们,以及当我运行CUDA查询设备时
我的问题是:
有没有办法绝对 “关闭”卡A用于操作系统中的任何其他目的,并且卡A只会被“触发”以在cudaSetDevice()'目标'时运行CUDA内核?
到目前为止,我使用的天真方式只是将1个显示器连接到卡B.这种方法似乎有效 - 在显示器上播放youtube视频时,卡B会产生一些GPU内存活动和GPU加载,并且没有检测到这样的GPU活动在卡A上。一旦我用卡A的cudaSetDevice()'目标'运行一些CUDA代码,它就会产生一些GPU活动。
但我认为必须有一些更准确的方法来做到这一点。有人可以给我一些指示,如果它与BIOS的玩法有关,如果你能提供一些细节我将不胜感激,因为我在过去做的很少。
扩展到我的问题(我猜):
有没有办法真正在两个NVidia GPU之间切换(我认为这应该是与那些涉及英特尔GPU单元的NVidia Optimus技术相关的单独问题,不是吗?)
cudaSetDevice(int n)
函数调用每次选择相同的GPU有什么问题?设备偏移应在后续运行之间保持不变,但您也可以cudaChooseDevice
根据其规格使用该功能与特定卡匹配。但是,鉴于您是以编程方式执行此操作,为什么不只是让一段代码选择GPU而不是从GPU物理插拔电缆?