我正在Windows平台上使用CUDA。在Windows平台上,我们可以同时使用Parallel Nsight和Visual Profiler。两者都非常好,但它们几乎具有相似的特性来进行分析和追踪。有人能告诉我它们之间的不同之处以及哪一个更适合Windows平台吗?我主要需要一个用于分析的工具。
跟踪操作系统活动,包括进程、线程和模块的生命周期,线程上下文切换、线程等待原因、CPU利用率、进程CPU利用率和线程利用率。
收集CUDA、OpenGL 2.x-3.x、DirectX 9-11和OpenCL 1.1的API和GPU工作跟踪,并在时间轴上显示所有信息。
在所有跟踪的API调用上收集调用堆栈跟踪,或仅在跟踪的API调用返回错误时进行。
CUDA软件计数器可显示每个上下文分配的内存。
更多控制何时跟踪哪些信息。这很关键,因为跟踪过多信息可能导致应用程序变得CPU绑定。
来自NVIDIA工具扩展库和D3D性能标记的用户注释的时间轴和树形显示。
CUDA性能分析活动
CUDA分析器提供了一种捕获您的内核并在不影响应用程序的情况下重复运行多次的方法。这允许在非确定性应用程序中收集分析数据,并且仅需要启动1次应用程序。Visual Profiler <=5需要应用程序是确定性的,以便可以多次重新启动应用程序。
支持收集许多有用的度量标准,这些度量标准目前尚未被Visual Profiler支持,包括warp eligible,这是用于理解是否具有足够的占用率和warp stall原因的最重要的度量标准,帮助您了解是什么限制了应用程序的性能。
Visual Profiler具有以下优点:
跨平台。
提供专家系统以审核收集的信息。
在结果中链接到CUDA最佳实践指南。
时间线可以显示CPU和GPU事件之间的关联,当您点击一个事件时。
CUDA 5.0支持新的命令行分析器(nvprof)。
CUDA 5.0支持分支发散和存储器访问的源代码相关性,以及错误访问模式。
CUDA 5.0分析器已集成到Nisght Eclipse版中。
更好地支持Tesla PM计数器。
CUDA 5.0中的Visual Profiler添加了一些Nsight 1.5和2.x中可用的功能,包括:
NVIDIA工具扩展库,用于使用范围和标记注释应用程序,并在时间线中显示。
在Fermi和Kepler GPU上进行并行内核跟踪。
这两个工具都提供有关分析应用程序的非常有用的信息。我建议您使用每个工具的最新版本。
即将发布的 Nsight VSE 版本将拥有许多新功能,用于调查 CUDA 内核的执行。有关更多信息,请参见 http://developer.download.nvidia.com/GTC/PDF/GTC2012/PresentationPDF/S0430-GTC2012-Developing-CUDA-Nsight.pdf。编辑(更改想法):重新评估NVIDIA Parallel Nsight和Visual Profiler后,我现在发现NVIDIA Parallel Nsight对于性能分析更好。
@Jeff Davis的回答进一步解释了原因。
Parallel Nsight具有内置于Visual Studio中的优点,并为Windows开发人员提供自然的工作流程。
在Parallel Nsight 2.2中,每当目标设置为“localhost”时,监视器会自动启动。这适用于分析和CUDA分析以及CUDA调试。
监视器需要短暂的启动时间(大约与启动您喜爱的Web浏览器所需的时间相同),但只需一次。在监视器终止或机器重新启动之前,无需再次启动监视器。