CUDA 知识点:性能分析 | CUDA
调试 CUDA 程序性能会用到的性能分析工具:nvvp & nvprof、NSight System。
nvvp & nvprof
使用方法
nvvp 是 nvprof 的 GUI 版本,都可以直接分析 CUDA 程序。在一般的使用场景下,分析 CUDA 程序有以下两个办法:
在服务端使用 nvprof 在命令行查看分析结果
1
nvprof ./main
在本地使用 nvvp 分析导出的
.nvvp
文件1
nvprof -o out.nvvp ./main
对于生成的 .nvvp
文件,需要在本地使用 nvvp 进行查看。
局部分析
如果只想对某一段代码进行分析,在目标代码段前后加上 cudaProfilerStart()
和 cudaProfilerStop()
。
对于 nvvp,需要在设置中取消勾选 Start execution with profiling enabled
。对于 nvprof,也有相应的参数可以配置。
nvvp 隐藏 Instrumentation
在设置中取消勾选 Enable concurrent kernel profiling
,这个选项是针对使用了流的程序的,如果程序没有使用流,可以将这个取消。
Enable concurrent kernel profiling - This option should be selected for an application that uses CUDA streams to launch kernels that can execute concurrently. If the application uses only a single stream (and therefore cannot have concurrent kernel execution), deselecting this option may decrease profiling overhead.
NSight System
由于 nvprof 在性能表现上不是很好,在复杂的 GPU 编程环境下,nvprof & nvvp 功能大打折扣。于是 NVIDIA 官方近几年推出了新一代性能分析工具 NSight 系列,包括 NSight System 和 NSight Compute,其中 Nsight Systems 就是全新一代的 nvprof,用于监测 kernel timeline。安装方法可以参考 NVIDIA NSight System工具安装和使用介绍(MacOS)。
在远端使用时,可以通过以下命令导出分析文件,然后在本地客户端可视化分析:
1 | nsys profile -o out.qdrep ./main |
NSight Compute
除去查看 kernel 整体的运行,可能还需要查看单个 kernel 内部的运行情况,这个时候就需要 Nsight Compute,它可以输出每个 kernel 的 SASS 汇编,运行时间等更为细粒度的内容。
参考
[腾讯机智] tensorflow profiling工具简介——nvprof和nvvp
CUDA 知识点:性能分析 | CUDA