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

Excessive profiler overhead with NVidia Visual Profiler

NVIDIA NSight System工具安装和使用介绍(MacOS)

CUDA 知识点:性能分析 | CUDA

http://www.zh0ngtian.tech/posts/f66cc6ee.html

作者

zhongtian

发布于

2021-01-28

更新于

2023-12-16

许可协议

评论