我正在尝试使用Nsight Visual Studio Edition或Visual Profiler使用managedCuda使用C#编写的CUDA应用程序。这两个分析器都适用于普通的C ++ CUDA应用程序。要使用managedCuda测试分析器,我想在ManagedCudaSamples中分析项目“vectorAdd”。
首先,我尝试使用集成在VS 2013中的Nvidia Nsight Visual Studio Edition 5.0。我使用x64 Debug配置。如果我尝试在Nsight Performance Analysis的“Application Control”中启动应用程序,我会收到一条错误消息:
Analysis Session - Start Application
Unable to launch 64-bit managed application '...\ManagedCudaSamples\vectorAdd\bin\x64\Debug\vectorAdd.exe'.
此外,我尝试使用Nvidia Visual Profiler 7.5来分析同一个应用程序。在运行vectorAdd.exe时,nvprof控制台显示以下输出:
==2944== NVPROF is profiling process 2944, command: ...\ManagedCudaSamples\vectorAdd\bin\x64\Debug\vectorAdd.exe
==2944== Warning: Some profiling data are not recorded. Make sure cudaProfilerStop() or cuProfilerStop() is called before application exit to flush profile data.
==2944== Generated result file: ...\nvvp_workspace\.metadata\.plugins\com.nvidia.viper\launch\7\api_2944.log
我是CUDA的新手,非常感谢有关如何配置managedCuda应用程序的任何建议。
答案 0 :(得分:3)
您需要在退出应用程序之前调用CudaContext.ProfilerStop()
(或销毁上下文),以便将收集的数据刷新到分析器。 managedCuda示例不包括此调用,为什么探查器不会看到收集的信息。这解释了你得到的第二个错误。
关于第一个错误: 在release notes of Nsight 5.0中,您可以找到一个已知问题:
无论解决方案平台是什么,vectorAdd的VS项目始终设置为AnyCPU,请参阅managedCuda samples-solution的配置管理器以进行更改。