1

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

注意:我安装了 Cuda 5.0 和 NSight visual studio edition 3.0。我听说现在可以使用单个 GPU 进行调试。我假设 5.0 还可以,我不需要 5.5 候选版本?

1)根据网站上的说明更改代码以包含以下内容:

        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)解决方案资源管理器,选择“显示所有文件”并找到“CUDAFYSOURCTEMP.cu”文件。

5)右键单击并选择“添加到项目”。

6) 打开 NSIGHT HUD 启动器 3.0。

7) 设置如下:

图片

8) 点击确定。

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

10) 转到 NSight Monitor 并单击“NSight Monitor Ooption”-> CUDA 并设置以下内容:

图片

11)回到VS2010并选择NSight-> Start Cuda Debugging。

一旦完成,我将光标悬停在变量上,一旦断点被​​击中,但没有任何显示。只有blockDim、blockIdx 和threadIdx 显示了一些东西。

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

图片

我错过了一步还是什么?

编辑这是编译期间输出窗口的输出。

线程“vshost.LoadReference”(0x1f78)已退出,代码为 0(0x0)。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):已加载 'C:\Users\FrazMann\Desktop\Market Adj 条目 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\x64\Debug\ Cudafy.NET.dll''FrazerMann.Profiler.UserInterface.vshost.exe'(托管(v4.0.30319)):加载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0 .0__b77a5c561934e089\System.Numerics.dll',跳过加载符号。模块已优化且调试器选项 ' 启用了“仅我的代码”。'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',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):加载 'C:\Windows\Microsoft.Net\assembly\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\assembly\GAC_64\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\ System.Transactions.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):加载 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices .dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):已加载 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices .Wrapper.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'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'(托管(v4.0.30319)):加载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.SqlXml\v4.0_4 .0.0.0__b77a5c561934e089\System.Data.SqlXml.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):加载 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml\v4.0_4.0.0.0__b77a5c561934e089\System.Xaml .dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):已加载 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ComponentModel.Composition\v4.0_4.0.0.0__b77a5c561934e089\System .ComponentModel.Composition.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):已加载 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.Build.Framework\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft .Build.Framework.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管(v4.0.30319)):加载 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Caching\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.Caching.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'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'(托管 (v4.0.30319)):已加载'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.DirectoryServices.Protocols\v4。 0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.Protocols.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):加载 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices .dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。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 Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。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 Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。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.cudafe2g.

'FrazerMann.Profiler.UserInterface.vshost.exe'(托管 (v4.0.30319)):加载 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Dynamic\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Dynamic .dll',跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。

4

2 回答 2

1

除非您指定-G 切换到 nvcc 编译器驱动程序,否则将没有符号,并且调试器无法在没有符号的情况下执行您想要的操作(识别或显示特定变量值)。

似乎其他人已经问过如何在 cudafy 中将开关添加到 nvcc 编译阶段,这里-G似乎讨论了一种方法。

于 2013-07-18T00:33:40.453 回答
0

你犯的错误是在调用CudafyTranslator.GenerateDebug = true;之后放置。CudafyTranslator.Cudafy

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

要解决此问题,只需在调用CudafyTranslator.GenerateDebug = true;之前放置。CudafyTranslator.Cudafy

于 2015-10-20T13:02:37.967 回答