Table of Contents

Nsight


工具 定位 常见可执行文件
Nsight Systems 系统级时间线/采样分析(CPU+GPU+IO+OS) nsys, nsys-ui
Nsight Compute CUDA kernel 级硬件计数器/瓶颈诊断 ncu, ncu-ui
Nsight Graphics 图形 API(Vulkan/GL/DirectX)调试与帧捕获 nsight-graphics

安装配置

在服务器安装:TODO

在本地安装分析工具(带图形界面)

# MacOS --cask表示是安装带UI的版本
brew install --cask nvidia-nsight-systems

Nsight Systems基本使用

# 查看状态
nsys status -e

# trace表示记录哪些项目,使用逗号分割(无空格)
# 常用项目包括:cuda,cublas,cudnn,osrt,nvtx等
# ./a.out是可执行程序,后面可以正常传递程序参数
# 这是最基础的使用方式,a.out的执行全程都记录
# 还可以指定记录时长,或者交互式执行nsys
nsys profile --trace=cuda -o stf_log ./a.out

# 执行完成后会生成nsys-rep文件,可以在UI工具中打开查看

# 记录显存占用历史
nsys profile --sample=process-tree --trace=cuda,nvtx,osrt --gpu-metrics-devices=0 --gpu-metrics-frequency=100 --gpu-metrics-set=memory -o log1 ./a.out

# 权限不够,记录显存会报错
Illegal --gpu-metrics-devices argument: 0.
Insufficient privilege, see https://developer.nvidia.com/ERR_NVGPUCTRPERM.
Use the '--gpu-metrics-devices=help' switch to see the full list of values.

# 记录CPU历史
nsys profile --sample=process-tree --trace=cuda,nvtx,osrt -o log1 ./a.out

trace项目的解释[AI]:

选项 说明
cuda CUDA API 调用(包含 kernel 启动、内存拷贝)
nvtx 你自己插入的 NVTX 标签
osrt 操作系统运行时(线程创建、上下文切换)
cublas cuBLAS 库调用(矩阵乘法)
cudnn cuDNN 库调用(卷积、深度学习层)
opengl OpenGL API
vulkan Vulkan API
openmp OpenMP 运行时(多线程)
mpi MPI 调用
nsys_nvperf 采集底层硬件性能计数器

PS:当kernel的Grid太大的时候,好像记录会失败(如果trace项目里面有cuda),这时建议手动使用nvtx在代码中打点,只记录nvtx

Nsight Compute基础使用

TODO