分析管理Nsight或Visual Profiler中的uda

本文关键字:Profiler 中的 uda Visual 管理 Nsight | 更新日期: 2023-09-27 18:21:18

我正试图使用Nsight Visual Studio Edition或Visual Profiler来评测用C#编写的带有managedCuda的CUDA应用程序。这两个评测器都能很好地与一个普通的C++CUDA应用程序配合使用。为了用managedCuda测试评测器,我想在ManagedCudaSamples中评测项目"vectorAdd"。

首先,我尝试使用集成在VS 2013中的Nvidia Nsight Visual Studio Edition 5.0。我使用x64调试配置。如果我试图在Nsight性能分析的"应用程序控制"中启动应用程序,我会收到一条错误消息:

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应用程序的建议,我将不胜感激。

分析管理Nsight或Visual Profiler中的uda

您需要在退出应用程序(或销毁上下文)之前调用CudaContext.ProfilerStop(),以便将收集的数据刷新到探查器。managedCuda示例不包括此调用,这是探查器看不到收集的信息的原因。这解释了您出现的第二个错误。

关于第一个错误:在Nsight 5.0的发行说明中,您可以找到一个已知的问题:

  1. 不支持使用AnyCpu配置构建的托管应用程序。必须使用Win32或x64配置生成目标应用程序

vectorAdd的VS项目总是设置为AnyCPU,无论解决方案平台是什么,请参阅managedCuda示例解决方案的配置管理器来更改这一点。