• NVIDIA nvprof / nvvp
  • NSight系列
  • Nsight Systems
  • 本地使用
  • 远程使用
  • 结果分析
  • Nsight Compute
  • 本地使用
  • 远程使用
  • 结果分析


NVIDIA nvprof / nvvp

  • 由2008年起开始支持的性能分析器,交互性好,利于使用
  • 记录运行日志时使用命令nvprof
  • 可视化显示日志时使用命令nvvp,全称是NVIDIA Visual Profiler
  • nvprof/nvvp方式运行时消耗资源较多,数据统计容易不准确,推荐使用NSight
  1. 在终端运行nvvp
  2. 点击file -> new session,在file里选择可执行文件即可

使用CUDA测试GPU计算性能_python


NSight系列

包括NSight System和NSight Compute,其中Nsight Systems就是全新一代的nvprof,可以用于监测代码执行效率及分析性能。

Nsight Systems

本地使用

用命令nsight-sys打开Nsight Systems,设置命令与路径,点击右侧start

使用CUDA测试GPU计算性能_人工智能_02

远程使用

远程时,使用nsys命令生成profile文件,再下载用Nsight Systems打开

nsys profile -o first_attempt.qdrep ./first_attempt

结果分析

  • 5部分内容:
  1. Analysis Summary (分析总结,内容非常全面,包含了Target的详细信息,Process summary, Module summary, Thread summary, Environment Variables, CPU info, GPU info等等)
  2. Timeline View (展示CPU/GPU各个核的工作时间线,一般用来来勘察模型训练或者推理的瓶颈在哪里)
  3. Diagnostics Summary (顾名思义,诊断总结。就是程序在运行中做了什么,有什么warning , error,或者message的,都在这里汇总)
  4. Symbol Resolution Logs(暂时不知道是干嘛的)
  5. Files (执行结果的log 文件:pid_stdout.log,& 执行出错的log 文件pid_stderr.log)
  • 在Timeline View ,主要关注CUDA HW(自己的kernel)、TensorRT 以及 CUDA API 这三部分,

    光标指向kernel名称,出现如下记录:包括内存申请情况等信息
gemmKernel
Begins: 0.327224s
Ends: 0.354951s (+27.727 ms)
grid:  <<<32, 32, 1>>>
block: <<<32, 32, 1>>>
Launch Type: Regular
Static Shared Memory: 0 bytes
Dynamic Shared Memory: 0 bytes
Registers Per Thread: 36
Local Memory Per Thread: 0 bytes
Local Memory Total: 26,542,080 bytes
Shared Memory executed: 8,192 bytes
Shared Memory Bank Size: 4 B
Theoretical occupancy: 66.6667 %
Launched from thread: 193828
Latency: ←145.765 μs
Correlation ID: 116
Stream: Default stream 7

Nsight Compute

  • 一个用于CUDA应用程序的交互式内核分析器。它通过用户界面和命令行工具提供详细的性能指标和API调试。此外,它的基线特性允许用户在工具中比较结果。NVIDIA Nsight Compute提供了一个可定制的、数据驱动的用户界面和度量集合,并且可以通过分析脚本对后处理结果进行扩展。

本地使用

  1. 可以直接在Nsight Compute中设置可执行文件路径,launch即可。但是可能出现The user does not have permission to profile on the target device.报错,所以使用sudo指令:
sudo /usr/local/cuda/bin/ncu-ui

使用CUDA测试GPU计算性能_python_03

  1. 用->定位到我们的kernel,然后点击profile kernel即可

远程使用

  1. 首先命令行执行
sudo /usr/local/cuda/bin/ncu -o profile --set full ./myapplication <arguments>
  1. 然后下载后,使用Nsight Compute open files即可

结果分析

page中的session是设备信息,detail是kernel的内容分析,source是源码中每行代码及汇编指令执行使用资源情况

使用CUDA测试GPU计算性能_python_04