性能分析工具

阶段2 | 第15-16周

📅 2周学习计划

第15周

Nsight Compute
Kernel性能分析

第16周

Nsight Systems
系统级分析

1. NVIDIA工具概览

🔍 Nsight Compute

  • Kernel级别性能分析
  • 详细的硬件计数器
  • 内存访问分析
  • 计算吞吐量分析
  • 适用场景:优化单个Kernel

📊 Nsight Systems

  • 系统级别时间线
  • Kernel执行可视化
  • 内存传输分析
  • API调用追踪
  • 适用场景:整体性能分析

📈 nvprof

  • 命令行性能分析
  • 简单易用
  • 基础硬件计数器
  • 快速性能概览
  • 注意:已被Nsight替代

2. Nsight Compute使用

命令行分析

# 基本分析
ncu ./my_cuda_app

# 详细分析所有指标
ncu --set full ./my_cuda_app

# 只分析特定Kernel
ncu --kernel-name "matmul" --launch-skip 0 --launch-count 1 ./my_cuda_app

# 输出到文件
ncu -o report ./my_cuda_app

# 比较不同配置
ncu --diff baseline.ncu-rep optimized.ncu-rep

关键指标

3. Nsight Systems使用

# 采集时间线
nsys profile ./my_cuda_app

# 指定输出文件名
nsys profile -o timeline ./my_cuda_app

# 追踪特定API
nsys profile --trace=cuda,nvtx ./my_cuda_app

# 生成统计报告
nsys stats timeline.nsys-rep

分析内容

4. 性能分析工作流

# 使用NVTX标记代码区域
#include "nvtx3/nvToolsExt.h"

void process() {
    nvtxRangePushA("Data Prep");
    // 数据准备...
    nvtxRangePop();
    
    nvtxRangePushA("Kernel Exec");
    my_kernel<<<...>>>();
    nvtxRangePop();
}

📚 学习资源

🛠️ 实践项目