2011-05-20 92 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