前言
NVIDIA Nsight Systems 是一个作用于CUDA的轻度性能分析工具,如果是想知道核函数的执行顺序、消耗时间、资源占用率等信息,那么这个工具很合适。
这里使用的是 2023.2.3版本的软件,软件版本不同,可能使用方法会有所不同,注意甄别。
使用之前
这个软件在CUDA 工具包中,如果安装了CUDA是随带一起安装的。
(windows)在使用之前要注意用户是否为管理员,如果是访客用户,可能会出现无法正确链接设备的情况。
开始使用
NVIDIA Nsight Systems 提供了多种链接设备的方式,我目前只使用过本地连接。
选择自己的计算机之后,右侧会显示target is ready,如果显示的是其他的,则检查自己所用的账户是否为管理员账户。
设置工作路径
Command line:这里填你需要分析的执行程序的路径,如果程序执行需要再后面跟参数,也可以在这里填进去。
Working directory:工作路径,性能分析生成的各种文件会存在这个路径中。
设置追踪事件范围
在分析之前可以选择要追踪的事件。
各种事件的的详细信息可以查阅CUDA 官网的使用指南。
如果只是想追踪核函数的资源占用情况可以按照上图中的选择勾选。
需要注意的是,要追踪的事件越多生成的文件越大,所需要的时间也越多。所以建议只勾选自己需要的。
设置采样时间
上图中的选项依次是
- 手动分析
- 在10秒之后开始分析
- 在100帧之后开始分析
- 限制分析时间为10s
- 限制分析时间为600帧
- 设置开始和停止热键
如果你的整个程序的核函数调用是均匀的,那么只对其中一段采样就可以了,那么设置时可以设置一个分析的延后时间,然后采样中间的一段时间就可以了。
如果整个程序调用核函数是不均匀的,随着时间变化核函数中的计算量,调用参数都会发生改变,那么建议全不勾选,这样它会分析整个程序的运行过程。
设置目标采样率设置
Nsight Systems 可以对一个进程树进行采样。这里的采样意味着定期中断每个处理器。采样率在项目设置中定义,为 100Hz、1KHz(默认值)、2Khz、4KHz 或 8KHz。
开始分析
设置好所有的参数之后,点击页面的start,NVIDIA Nsight Systems会启动需要被分析的执行程序,然后等待分析完成即可。
执行完成之后会得到这样一个页面。
时间轴
在这个窗口中可以看到各种资源的时间轴,如上图所示,可以看到CUDA API调用的时间轴,也可以看到核函数的时间轴。
在这个视图中可以看到对程序整个采样段中,程序是如何运行的,并且在某时刻使用什么资源,在哪个时刻进行了内存拷贝。
这些信息可以用于对整个程序的调用流程,线程同步的位置和核函数的调用参数进行一个粗略的调整。
核函数悬浮窗
鼠标悬停在核函数的时间轴上,会显示如下窗口:
依次含义是:
- 核函数名称
- 开始时间
- 结束时间
- 调用参数
- 调用参数
- ?
- 静态共享内存使用量
- 动态共享内存使用量
- 核函数的每个线程中使用到的寄存器数量
- ?
- 本地内存?????
- ?
- ?
- 程序在运行期间,对GPU的理论占用率
- ?
- ?
打问号的我也不知道是啥意思(狗头)。
核函数执行时间分析
这个窗口可以看到各种信息的详细统计,我一般使用这个看核函数的执行次数,最大执行时间,平均时间等信息。
以上,就是这个工具简单是使用方法。
文章评论