2013-07-12 37 views
1

正如話題所述,我不能讓調試器工作。以下是完成的步驟順序。cudafy.net與NSight,調試器不工作

注:我安裝了Cuda 5.0並安裝了NSight visual studio edition 3.0。我聽說現在可以使用單個GPU進行調試。我假設5.0是好的,我不需要5.5版本的候選人?

1)改變的代碼,包括在site下面按照所述指令:

 CudafyModes.Target = eGPUType.Cuda; 
     CudafyModes.DeviceId = 0; 
     CudafyTranslator.Language = eLanguage.Cuda; 
     CudafyModule km = CudafyTranslator.Cudafy(eArchitecture.sm_20); 

     //Included this line. 
     CudafyTranslator.GenerateDebug = true; 

     _gpu = CudafyHost.GetDevice(eGPUType.Cuda); 
     _gpu.LoadModule(km); 

2)緊接在該設定中斷點。

3)一旦發生斷點,停止調試。

4)解決方案資源管理器,選中「顯示所有文件」,找到「CUDAFYSOURCETEMP.cu」文件。

5)右鍵單擊並選擇「添加到項目」。

6)打開NSIGHT HUD啓動3.0。

7)設置的設置如下:

Image

8)單擊確定。

9)雙擊CUDAFYSOURCETEMP.cu並在代碼中設置一個斷點。

10)又到NSight顯示器並 「NSight監視器Ooption」 - > CUDA和設定如下:

Image

11)回到VS2010和選擇NSight->開始Cuda的調試。

一旦完成,我將光標懸停在變量上,一旦中斷點被擊中,但沒有任何顯示。只有顯示內容的是blockDim,blockIdx和threadIdx。

我還開設了CUDA WarpWatch1窗口,在可變然而這竟然放棄下面的錯誤類型「無法解析名稱‘NUM2’。

Image

我是缺少一個步驟,還是什麼?

EDIT下面是從輸出窗口編譯期間的輸出。

的threa d'vshost.LoadReference'(0x1f78)已退出,代碼爲0 (0x0)。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed (v4.0.30319)):加載'C:\ Users \ FrazMann \ Desktop \ Market Adj Entry CUDA - MK2 \ FrazerMann.Profiler.UserInterface \ bin \ x64 \ Debug \ FrazerMann.Profiler.UserInterface.exe', 已加載符號。 'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed(v4.0.30319)):Loaded'C:\ Users \ FrazMann \ Desktop \ Market Adj Entry CUDA - MK2 \ FrazerMann.Profiler。UserInterface \ bin \ x64 \ Debug \ Cudafy.NET.dll' 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Numerics \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Numerics.dll', 跳過的加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(託管(v4.0.30319)): 加載 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ System.Data.OracleClient \ v4.0_4.0.0。 0__b77a5c561934e089 \ System.Data.OracleClient.dll', 跳過的加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ System.Web \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Web.dll' 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ System.Transactions \ v4。 0_4.0.0.0__b77a5c561934e089 \ System.Transactions.dll', 跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ System.EnterpriseServices \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.EnterpriseServices.dll', 跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_64 \ System.EnterpriseServices \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.EnterpriseServices.Wrapper.dll', 跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(託管(v4.0.30319)): 加載'匿名託管DynamicMethods程序集' 'FrazerMann.Profiler.UserInterface.vshost.exe'(託管(v4.0.30319)): 加載 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ Accessibility \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ Accessibility.dll' 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319) ): 加載 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Data.SqlXml \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.SqlXml.dll', 跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Xaml \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Xaml.dll', 跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.ComponentModel.Composition \ v4.0_4.0.0。 0__b77a5c561934e089 \ System.ComponentModel.Composition.dll', 跳過的加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ Microsoft.Build.Framework \ v4.0_4.0.0。 0__b03f5f7f11d50a3a \ Microsoft.Build.Framework.dll', 跳過的加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface。vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Runtime.Caching \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Runtime.Caching。 dll', 跳過的加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(託管(v4.0.30319)): 加載 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.Web.ApplicationServices \ v4.0_4.0.0。 0__31bf3856ad364e35 \ System.Web.ApplicationServices.dll' 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System。 DirectoryServices.Protocols \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.DirectoryServices.Protocols.dll',跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 'FrazerMann.Profiler.UserInterface.vshost.exe'(Managed(v4.0.30319)): Loaded 'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System.DirectoryServices \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.DirectoryServices.dll', 跳過加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。 FrazerMann.Profiler.UserInterface.TaskManager X threadIdx X blockIdx X blockDim長度長度x threadIdx X blockIdx X blockDim長度x threadIdx X blockIdx X blockDim GetLength進行X threadIdx X blockIdx X blockDim QuickSortOfValues1 X threadIdx X blockIdx X blockDim QuickSortOfValues1 QuickSortOfValues1 FrazerMann.Profiler.UserInterface.TaskManager/o__SiteContainer0 編譯器版本:v5.0 C:\ Program Files \ NVIDIA GPU計算工具包\ CUDA \ v5.0 \ bin \ nvcc -I「C:\ Program Files \ NVIDIA GPU計算工具包\ CUDA \ v5.0 \ include「-m64 -arch = sm_20」C:\ Users \ FrazMann \ Desktop \ Market Adj Entry CUDA-MK2 \ FrazerMann.Profiler.UserInterface \ bin \ x64 \ Debug \ CUDAFYSOURCETEMP.cu「 -o「C:\ Users \ FrazMann \ Desktop \ Market Adj Entry CUDA - MK2 \ FrazerMann.Profiler.UserInterface \ bin \ x64 \ Debug \ CUDAFYSOURCETEMP.ptx」 --ptx CUDAFYSOURCETEMP.cu tmpxft_000010d0_00000000-5_CUDAFYSOURCETEMP.cudafe1.gpu tmpxft_000010d0_00000000-10_CUDAFYSOURCETEMP.cudafe2.gpu

'FrazerMann.Profiler.UserInterface.vshost.exe'(管理(v4.0.30319)): 加載 「C:\ Windows \ Microsoft.Net \組件\ GAC_MSIL \系統.Dynamic \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Dynamic.dll', 跳過的加載符號。模塊已經過優化,調試器選項 「Just My Code」已啓用。

+1

您是否在使用'-G'(或'-G0')選項構建設備代碼?調試器需要符號來解析設備代碼中的名稱。 –

+0

林不知道,我只是按照cudafy.net網站上列出的內容+我在一兩個視頻中看到的內容。我沒有明確說明任何事情。我需要在Code中指定這個嗎?感謝您的幫助+1。 –

+1

我絕對不是Cudafy的專家。有什麼辦法可以在編譯應用程序時查看底部的visual studio輸出窗口,以查看是否可以看到其中包含'nvcc'的任何命令行?如果是這樣,那麼瞭解它是如何編譯以及正在指定哪些標誌將是有益的。當然,對於一個普通的C++項目,我可以告訴你如何確保指定-G開關。這通常與構建項目的調試版本(而不是發行版本)一樣簡單。但是這可能不會傳遞給C#項目。 –

回答

1

除非指定-Gswitch到NVCC編譯器驅動程序,不會有符號,你想要什麼(識別或顯示特定變量的值),而符號調試器無法做到的。

好像其他人已經問過如何將-G開關添加到cudafy中的nvcc編譯階段,並且似乎討論了一種方法here

0

您所犯的錯誤是在CudafyTranslator.Cudafy調用後放CudafyTranslator.GenerateDebug = true;

如果你這樣做,翻譯器已經生成了沒有符號的GPU二進制文件,那麼你告訴它它需要符號。

要解決這個問題,只需在CudafyTranslator.Cudafy之前撥CudafyTranslator.GenerateDebug = true;