我有两个GPU,我怎么能让一个人做某个CUDA任务?

时间:2013-03-02 21:05:11

标签: c++ cuda gpu nvidia

CUDA的新手,但有一些时间花在计算上,我在家里和特斯拉(同一代)在办公室里做了一次。

在家我在同一台计算机上安装了两个gpus,一个是GK110(计算能力3.5),另一个是GF110(计算能力2.0),我只使用GK110进行计算任务而GF110用于显示除非我告诉要做计算,是否有办法通过驱动程序设置来完成此操作,或者我仍然需要重写一些代码?

另外,如果我理解正确,如果没有连接GK110的显示端口,那么即使计算时间很长,烦人的窗口超时检测也不会尝试重置它?

Btw我的CUDA代码是用compute_35和compute20编译的,所以代码可以在两个GPU上运行,但是我计划使用GK110独有的功能,因此将来的代码可能无法在GF110上运行根本就是,操作系统是Windows 7。

1 个答案:

答案 0 :(得分:1)

在Windows上使用GeForce GTX Titan(或任何GeForce产品),我认为没有办法阻止GPU在WDDM模式下出现在系统中,这意味着Windows将构建一个显示驱动程序堆栈它,即使卡没有附加物理显示器。所以你可能会陷入Windows TDR机制。您可以尝试使用它来确认。 (可以通过注册表黑客修改Windows TDR行为)。

关于将CUDA任务转向GTX Titan,显示驱动程序控制面板应具有可选择的设置。它可能位于“管理3D设置”区域或其他某些区域,具体取决于您拥有的驱动程序。当您找到适当的设置区域时,将会有一个名为CUDA的选项 - GPU可能会设置为“全部”。如果将“全局预设”选项更改为“基本配置文件”,则应该能够更改此CUDA-GPU设置。单击它应该为您选择“全部”或每个检​​测到的GPU的一组复选框。如果取消选中GF110设备并检查GK110设备,则应根据此复选框选择将未通过cudaSetDevice()选择特定GPU的CUDA程序引导至GK110设备。您可能还需要对此进行试验以确认。

除此之外,如评论中所述,使用编程方法,您始终可以查询设备属性,然后选择将自身报告为cc3.5设备的设备。