CUDA性能分析之使用 NVIDIA Nsight Systems

2024年3月12日 470点热度 0人点赞 0条评论

前言

NVIDIA Nsight Systems 是一个作用于CUDA的轻度性能分析工具,如果是想知道核函数的执行顺序、消耗时间、资源占用率等信息,那么这个工具很合适。

这里使用的是 2023.2.3版本的软件,软件版本不同,可能使用方法会有所不同,注意甄别。

使用之前

这个软件在CUDA 工具包中,如果安装了CUDA是随带一起安装的。

(windows)在使用之前要注意用户是否为管理员,如果是访客用户,可能会出现无法正确链接设备的情况。

开始使用

NVIDIA Nsight Systems 提供了多种链接设备的方式,我目前只使用过本地连接。

image-20240312082153018

选择自己的计算机之后,右侧会显示target is ready,如果显示的是其他的,则检查自己所用的账户是否为管理员账户。

设置工作路径

image-20240312082401921

Command line:这里填你需要分析的执行程序的路径,如果程序执行需要再后面跟参数,也可以在这里填进去。

Working directory:工作路径,性能分析生成的各种文件会存在这个路径中。

设置追踪事件范围

在分析之前可以选择要追踪的事件。

image-20240117101825433

各种事件的的详细信息可以查阅CUDA 官网的使用指南。

如果只是想追踪核函数的资源占用情况可以按照上图中的选择勾选。

需要注意的是,要追踪的事件越多生成的文件越大,所需要的时间也越多。所以建议只勾选自己需要的。

设置采样时间

image-20240117105105714

上图中的选项依次是

  1. 手动分析
  2. 在10秒之后开始分析
  3. 在100帧之后开始分析
  4. 限制分析时间为10s
  5. 限制分析时间为600帧
  6. 设置开始和停止热键

如果你的整个程序的核函数调用是均匀的,那么只对其中一段采样就可以了,那么设置时可以设置一个分析的延后时间,然后采样中间的一段时间就可以了。

如果整个程序调用核函数是不均匀的,随着时间变化核函数中的计算量,调用参数都会发生改变,那么建议全不勾选,这样它会分析整个程序的运行过程。

设置目标采样率设置

Target sampling options

Nsight Systems 可以对一个进程树进行采样。这里的采样意味着定期中断每个处理器。采样率在项目设置中定义,为 100Hz、1KHz(默认值)、2Khz、4KHz 或 8KHz。

开始分析

设置好所有的参数之后,点击页面的start,NVIDIA Nsight Systems会启动需要被分析的执行程序,然后等待分析完成即可。

image-20240312084541441

执行完成之后会得到这样一个页面。

时间轴

image-20240312084631362

在这个窗口中可以看到各种资源的时间轴,如上图所示,可以看到CUDA API调用的时间轴,也可以看到核函数的时间轴。

在这个视图中可以看到对程序整个采样段中,程序是如何运行的,并且在某时刻使用什么资源,在哪个时刻进行了内存拷贝。

这些信息可以用于对整个程序的调用流程,线程同步的位置和核函数的调用参数进行一个粗略的调整。

核函数悬浮窗

鼠标悬停在核函数的时间轴上,会显示如下窗口:

image-20240117105549898

依次含义是:

  1. 核函数名称
  2. 开始时间
  3. 结束时间
  4. 调用参数
  5. 调用参数
  6. 静态共享内存使用量
  7. 动态共享内存使用量
  8. 核函数的每个线程中使用到的寄存器数量
  9. 本地内存?????
  10. 程序在运行期间,对GPU的理论占用率

打问号的我也不知道是啥意思(狗头)。

核函数执行时间分析

image-20240312091434020

这个窗口可以看到各种信息的详细统计,我一般使用这个看核函数的执行次数,最大执行时间,平均时间等信息。

以上,就是这个工具简单是使用方法。

大脸猫

这个人虽然很勤快,但什么也没有留下!

文章评论