2011-05-20 88 views
2

我有几个并行Ns​​ight兼容的CUDA GPU。第二个(较低的)连接到我的监视器,第一个(较高的)被设置为PhysX加速器。您可以在下面清楚地看到我的配置。为CUDA调试选择一个设备

现在为了使用Nsight执行CUDA调试,我只需要在未连接到显示器的GPU上运行内核代码。我的电脑已经设置为“无头调试”。另外下面是我希望在其他GPU上执行的代码,一个基本的例子:

// KernelCall.cu 
#include <iostream> 
#include "cuda.h" 
#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 

__global__ void kernel(void){} 

int main() 
{ 
    kernel<<<1,1>>>(); 

    system("pause"); 
    return 0; 
} 

我的问题基本上是什么,我需要把这个代码,以便它只有在其他设备上执行,并让我执行CUDA调试?

NVIDIA Control Panel

+1

在NVML API(在CUDA 4.0 CUDA工具SDK的一部分)有它允许你检查一个显示器被连接到设备的方法: nvmlDeviceGetDisplayMode(nvmlDevice_t device,nvmlEnableState_t * display); 但是,nvml.h中的文档说这个函数只适用于Tesla和Quadro产品,所以它可能对您没有多大用处! 我能想到的唯一选择可能是NVIDIA控制面板API。这似乎应该能够告诉你是否有附加的显示,但我并不真正熟悉它。 – Matt 2011-05-26 09:27:08

+0

@Matt感谢您的建议,我没有意识到4.0工具包中的这个特性。不过,我很高兴地说,我只是将我的显示器连接到第一个GPU,并在我的所有代码的开头使用了cudaSetDevice(1)。我使用HWMonitor来查看GPU温度,而且动画程序确实似乎提高了第二个GPU的温度。由于NVIDIA提供的非常明确的指令,我还得到了Parallel Nsight的CUDA调试工作,因此现在一切都很顺利。再次感谢你提供的建议。 – sj755 2011-05-26 19:09:32

回答

2
+0

@Anycorn我看到的只有File Not Found。断开的链接也许? – sj755 2011-05-20 23:33:05

+0

@sel现在尝试链接 – Anycorn 2011-05-21 00:05:18

+0

@Anycorn我见过cudaSetDevice(best_gpu);功能之前,但我怎么知道使用哪个设备。他们的例子是选择CUDA核心最多的GPU。我有两个相同的GTX 560钛。根据您在控制面板上看到的信息,我怎么知道哪一个没有连接到显示器? – sj755 2011-05-21 01:00:09