正如主题所述,我无法让调试器工作。以下是我已完成的步骤序列。
注意:我安装了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)设置如下设置:
8)点击确定。
9)双击CUDAFYSOURCETEMP.cu并在代码中设置断点。
10)去了NSight Monitor并点击" NSight Monitor Ooption" - > CUDA和设置如下:
一旦完成,我将光标悬停在变量上,一旦破坏点被击中,但没有任何显示。只显示某些东西的是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 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'已启用。
答案 0 :(得分:1)
除非您为nvcc编译器驱动程序指定-G
switch,否则将没有符号,并且调试器无法执行您想要的操作(标识或显示特定的变量值)而不使用符号。
似乎其他人已经问过如何在cudafy中将-G
切换添加到nvcc编译阶段,并且似乎讨论了一种方法here。
答案 1 :(得分:0)
您犯的错误是在CudafyTranslator.GenerateDebug = true;
来电之后放置CudafyTranslator.Cudafy
。
如果你这样做,翻译器已经生成了没有符号的GPU二进制文件,那么你就告诉它需要符号。
要解决此问题,只需将CudafyTranslator.GenerateDebug = true;
放在CudafyTranslator.Cudafy
来电之前。