cudafy.net与NSight,调试器无法正常工作

时间:2013-07-12 10:17:55

标签: visual-studio-2010 cuda nsight cudafy.net

正如主题所述,我无法让调试器工作。以下是我已完成的步骤序列。

注意:我安装了Cuda 5.0并安装了NSight visual studio 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 Launcher 3.0。

7)设置如下设置:

Image

8)点击确定。

9)双击CUDAFYSOURCETEMP.cu并在代码中设置断点。

10)去了NSight Monitor并点击" NSight Monitor Ooption" - > CUDA和设置如下:

Image

11)回到VS2010并选择了NSight->启动Cuda调试。

一旦完成,我将光标悬停在变量上,一旦破坏点被击中,但没有任何显示。只显示某些东西的是blockDim,blockIdx和threadIdx。

我还打开了CUDA WarpWatch1窗口,输入了一个变量但是出现了以下错误"无法解析名称" num2"。

Image

我错过了一步还是什么?

编辑以下是编译期间“输出”窗口的输出。

  

主题' vshost.LoadReference' (0x1f78)已退出代码0   (为0x0)。 ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理   (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'   (托管(v4.0.30319)):已加载' C:\ Users \ FrazMann \ Desktop \ Market Adj   进入CUDA -   MK2 \ FrazerMann.Profiler.UserInterface \ BIN \ 64 \调试\ Cudafy.NET.dll'   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Numerics \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Numerics.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_64 \ System.Data.OracleClient的\ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.OracleClient.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_64 \的System.Web \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Web.dll中'   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_64 \ System.Transactions的\ v4.0_4.0.0.0__b77a5c561934e089 \ System.Transactions.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_64 \的System.EnterpriseServices \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.EnterpriseServices.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_64 \的System.EnterpriseServices \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.EnterpriseServices.Wrapper.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   已加载的匿名托管DynamicMethods Assembly'   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \辅助\ v4.0_4.0.0.0__b03f5f7f11d50a3a \ Accessibility.dll'   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Data.SqlXml \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.SqlXml.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Xaml \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Xaml.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.ComponentModel.Composition \ v4.0_4.0.0.0__b77a5c561934e089 \ System.ComponentModel.Composition.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ Microsoft.Build.Framework \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ Microsoft.Build.Framework.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Runtime.Caching \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Runtime.Caching.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Web.ApplicationServices \ v4.0_4.0.0.0__31bf3856ad364e35 \ System.Web.ApplicationServices.dll'   ' FrazerMann.Profiler.UserInterface.vshost.exe' (管理(v4.0.30319)):   加载   ' 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' (管理(v4.0.30319)):   加载   ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \的System.DirectoryServices \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.DirectoryServices.dll程序&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' 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 Computing Toolkit \ CUDA \ v5.0 \ bin \ nvcc -I" C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v5.0 \ include& #34; -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 \ System.Dynamic \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Dynamic.dll&#39 ;,   跳过加载符号。模块已优化并具有调试器选项   ' Just My Code'已启用。

2 个答案:

答案 0 :(得分:1)

除非您为nvcc编译器驱动程序指定-G switch,否则将没有符号,并且调试器无法执行您想要的操作(标识或显示特定的变量值)而不使用符号。

似乎其他人已经问过如何在cudafy中将-G切换添加到nvcc编译阶段,并且似乎讨论了一种方法here

答案 1 :(得分:0)

您犯的错误是在CudafyTranslator.GenerateDebug = true;来电之后放置CudafyTranslator.Cudafy

如果你这样做,翻译器已经生成了没有符号的GPU二进制文件,那么你就告诉它需要符号。

要解决此问题,只需将CudafyTranslator.GenerateDebug = true;放在CudafyTranslator.Cudafy来电之前。