2010-10-28 59 views
7

嘿, 我正在使用Visual Studio 2008和CUDA 3.2。我試圖調試到功能與此簽名:如何使用visual studio 2008調試到CUDA內核代碼?

MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width); 

我可以進入的功能,但是當我進入功能,它不會讓我跨過任何代碼,並告訴我說沒有源可用。任何人都知道如何正確調試到這個?

謝謝!

回答

6

更新:並行Nsight現在是免費的,並且只支持在您的系統中使用一個GPU進行調試。

要在Visual Studio中調試設備代碼,您將需要Parallel Nsight。標準版本是免費並提供您需要的調試以及設備代碼分析。

如果您想在單臺機器上進行調試,那麼您將需要兩個GPU(因爲運行代碼的GPU在遇到斷點時將停止工作,因此您的顯示屏也會被阻止)。儘管他們不需要成爲高端GPU,但是從G92開始的任何事情都可以做到(包括大多數費爾米GPU,如here)。

+0

CUDA-GDB也是如此嗎? – Abhinav 2014-02-26 20:44:07

-4

您無法使用visual studio調試CUDA內核代碼。 Visual Studio只能調試在CPU上運行的程序。

事實上,我不認爲你可以在Windows中調試CUDA內核代碼。 CUDA曾經有一個主機仿真模式,但在3.0版中被刪除了。唯一可用的調試工具是cuda-gdb和ocelot,據我所知,它們都不支持Windows。

+1

這是錯誤的。 NVIDIA Parallel Nsight可用於設備調試。 – mch 2010-10-29 03:28:21

1

您使用的是Nsight? Vanilla Visual Studio不能進入設備代碼,但使用Nsight,這是可能的。不幸的是,Windows設備驅動程序模型的侷限性意味着有一些嚴重的限制。它曾經是要求兩臺機器進行調試。目標機器將在其GPU上運行CUDA代碼,並且必須使用TCC驅動程序。主機將運行Visual Studio並控制目標。現在似乎可以在同一臺機器上調試CUDA代碼,只要您有兩個GPU,一個用於計算,另一個用於顯示。在user guide中提到了一些其他問題。

這可能不是一個可以接受的答案,但是:如果您可以在Linux上編譯代碼,則可以使用cuda-gdb來調試內核。 cuda-gdb是Linux CUDA工具包的一部分。

+0

「現在可以在同一臺機器上調試CUDA代碼,只要您有兩個GPU,一個用於計算,另一個用於顯示。」究竟。兩者都必須是G92或GT200。 (所以,例如,Fermi 470/480就不存在了。)CUDA用戶中描述的百分比是多少? – user434507 2010-10-29 03:40:38

+0

不幸的是,技術上的侷限性和CUDA並沒有真正圍繞這一點的事實意味着只有那些擁有雄厚實力的人才能進行這種調試。其餘的必須採取其他方法。 – mch 2010-10-29 04:02:28

+1

請參閱此列表瞭解支持的GPU:http://developer.nvidia。COM /對象/ nsight-requirements.html。 Fermi 470/480在1.5版本中得到支持。確實,你需要兩個GPU(否則你會在斷點處阻止你的顯示器),但它們不需要是高端的,輸入成本相當低! – Tom 2010-10-30 18:15:07

12

您現在可以使用NSight在僅使用一個GPU的單臺機器上進行調試。

以爲我會更新這個,因爲之前的答案不再正確(你不再需要2個GPU)並且它在一段時間內讓我誤入歧途。

+1

只有在不使用X或具有SM3.5的情況下,纔可以在一個GPU上調試它[source](http://docs.nvidia.com/cuda/cuda-gdb/index.html#single-gpu-調試與桌面管理器運行) – janisz 2013-08-29 20:43:20

+0

我有兩個特斯拉C1060卡。我正在爲我的實驗室構建GPU機器,並且我將在Linux上運行它。因此,根據您的評論,如果我想使用CUDA-gdb,我需要額外的顯卡(可能在顯卡上)運行顯示器/ X服務器? 謝謝 – Abhinav 2014-02-26 20:58:36