在Nsight或Visual Profiler中分析managedCuda

时间:2015-11-10 14:49:11

标签: c# cuda profiling managed-cuda

我正在尝试使用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应用程序的任何建议。

1 个答案:

答案 0 :(得分:3)

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

关于第一个错误: 在release notes of Nsight 5.0中,您可以找到一个已知问题:

  1. 不支持使用AnyCpu配置构建的托管应用程序。必须使用Win32或x64配置构建目标应用程序。
  2. 无论解决方案平台是什么,vectorAdd的VS项目始终设置为AnyCPU,请参阅managedCuda samples-solution的配置管理器以进行更改。