在 Nsight 或 Visual Profiler 中分析 managedCuda
Profiling managedCuda in Nsight or Visual Profiler
我正在尝试分析使用 managedCuda using either Nsight Visual Studio Edition or Visual Profiler. Both profilers work well with a plain C++ CUDA app. To test the profilers with managedCuda I want to profile the project "vectorAdd" in ManagedCudaSamples 用 C# 编写的 CUDA 应用程序。
首先我尝试使用集成在 VS 2013 中的 Nvidia Nsight Visual Studio Edition 5.0。我使用 x64 调试配置。如果我尝试在 Nsight 性能分析中 "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\api_2944.log
我是 CUDA 的新手,如果能提供有关如何分析托管 Cuda 应用程序的任何建议,我将不胜感激。
您需要在退出应用程序(或销毁上下文)之前调用 CudaContext.ProfilerStop()
,以便将收集的数据刷新到探查器。 managedCuda 示例不包括此调用,为什么探查器看不到收集的信息。这解释了您遇到的第二个错误。
关于第一个错误:
在 release notes of Nsight 5.0 您可以找到一个已知问题:
- 不支持使用 AnyCpu 配置构建的托管应用程序。必须使用 Win32 或 x64 配置构建目标应用程序。
vectorAdd 的 VS 项目始终设置为 AnyCPU,无论解决方案平台是什么,请参阅 managedCuda 示例解决方案的配置管理器进行更改。
我正在尝试分析使用 managedCuda using either Nsight Visual Studio Edition or Visual Profiler. Both profilers work well with a plain C++ CUDA app. To test the profilers with managedCuda I want to profile the project "vectorAdd" in ManagedCudaSamples 用 C# 编写的 CUDA 应用程序。
首先我尝试使用集成在 VS 2013 中的 Nvidia Nsight Visual Studio Edition 5.0。我使用 x64 调试配置。如果我尝试在 Nsight 性能分析中 "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\api_2944.log
我是 CUDA 的新手,如果能提供有关如何分析托管 Cuda 应用程序的任何建议,我将不胜感激。
您需要在退出应用程序(或销毁上下文)之前调用 CudaContext.ProfilerStop()
,以便将收集的数据刷新到探查器。 managedCuda 示例不包括此调用,为什么探查器看不到收集的信息。这解释了您遇到的第二个错误。
关于第一个错误: 在 release notes of Nsight 5.0 您可以找到一个已知问题:
- 不支持使用 AnyCpu 配置构建的托管应用程序。必须使用 Win32 或 x64 配置构建目标应用程序。
vectorAdd 的 VS 项目始终设置为 AnyCPU,无论解决方案平台是什么,请参阅 managedCuda 示例解决方案的配置管理器进行更改。