Nsight System
系统级别去分析性能,也就是宏观方向。
Achieved Accupacy低:在Nsight System pipline可以直接看出来
kernel launch 延迟:cpu发起gpu执行kernel过程中,有个kernel launch环节,grid block。优化方法:多个kernel function 合并;cuda graph批量形式执行。
GPU线程太少,grid block少
1)命令行执行
2)在服务器上使用Nsight System生成一个文件,在本地电脑上显示文件。
CPU利用率、Process & thread、OS runtime API、NVTX annotation、cuda & cublas API、cuda kernel & memory transfer、NVTX projected on cuda stream
鼠标方在某个地方,会放大
Nsight Compute
可以比较不同的kernel的性能 显存 计算
调试cuda代码
cuda focus查看SM、warp、latency
案例1:Nsight system对训练神经网络过程的性能分析
未加NVTX注释
从图中看出是由于数据加载造成GPU空闲的,如红色部分。
数据加载的works=1变为works=8、
案例2:Nsight System 混合精度加速BERT
矩阵计算占了60%
到底使用fp32还是fp16,可以使用Nsight Compute进一步分析。
案例3:Nsight Compute 矩阵转置的kernel分析
memory的不同,影响优化的角度。
读数据时是连续的,一行一行读取的,但在做转置后,写数据时是跳越的不连续的。
在写数据以前,先把数据存在距离计算单元比较近的片上资源shared memory,延迟低。shared memory是sRAM结构,实现转置,速度快。
SM是有提升的
参考
【CUDA进阶】深入理解 Nsight System 和 Nsight Compute_哔哩哔哩_bilibili
NVIDIA Development Tools Solutions - | NVIDIA Developer
NVIDIA性能分析工具Nsight Systems/Compute 的使用介绍_哔哩哔哩_bilibili