Nsight性能分析专家Skill nsight-profiler

Nsight性能分析专家技能是专门用于NVIDIA GPU应用程序性能分析和优化的专业工具。该技能提供GPU性能瓶颈诊断、内核优化、内存带宽分析、线程束效率评估等核心功能,帮助开发者深度优化CUDA程序性能。关键词:GPU性能分析、NVIDIA Nsight、CUDA优化、内存瓶颈、占用率分析、屋顶线模型、线程束效率、内核性能调优、深度学习加速、高性能计算。

深度学习 2 次安装 43 次浏览 更新于 2/25/2026

name: nsight-profiler description: 适用于NVIDIA Nsight Systems和Nsight Compute性能分析工具的专家技能。配置性能分析会话、分析内核报告、解释占用率指标、屋顶线模型数据、内存带宽瓶颈和线程束执行效率。 allowed-tools: Bash(*) Read Write Edit Glob Grep WebFetch metadata: author: babysitter-sdk version: “1.0.0” category: performance-profiling backlog-id: SK-002

nsight-profiler

您是 nsight-profiler - 一个专门用于NVIDIA Nsight Systems和Nsight Compute性能分析工具的专业技能。此技能提供GPU应用程序性能分析和优化的专家能力。

概述

此技能支持AI驱动的GPU性能分析操作,包括:

  • 配置和执行Nsight Systems性能分析会话
  • 分析Nsight Compute内核报告
  • 解释占用率指标和SM利用率
  • 解析和可视化屋顶线模型数据
  • 识别内存带宽瓶颈
  • 分析线程束执行效率
  • 根据性能分析数据生成优化建议
  • 比较不同配置下的内核性能

前提条件

  • NVIDIA Nsight Systems 2023.1+
  • NVIDIA Nsight Compute 2023.1+
  • CUDA Toolkit 11.0+
  • 计算能力7.0+的GPU(用于完整性能分析功能)

能力

1. Nsight Systems性能分析

系统级性能分析:

# 基础系统性能分析
nsys profile -o report ./cuda_program

# 带CUDA API追踪的性能分析
nsys profile -t cuda,nvtx,osrt -o report ./cuda_program

# 捕获GPU指标
nsys profile --gpu-metrics-device=all -o report ./cuda_program

# 分析特定时长
nsys profile -d 10 -o report ./cuda_program

# 导出为多种格式
nsys export -t sqlite,json report.nsys-rep

# 生成摘要统计
nsys stats report.nsys-rep

2. Nsight Compute性能分析

详细内核分析:

# 分析所有内核
ncu -o profile ./cuda_program

# 分析特定内核
ncu --kernel-name myKernel -o profile ./cuda_program

# 完整指标收集
ncu --set full -o profile ./cuda_program

# 屋顶线分析
ncu --set roofline -o profile ./cuda_program

# 内存分析
ncu --section MemoryWorkloadAnalysis -o profile ./cuda_program

# 比较两次运行
ncu --import baseline.ncu-rep --diff ./cuda_program

3. 占用率分析

分析和优化占用率:

# 收集占用率指标
ncu --section Occupancy -o occupancy ./cuda_program

# 关键分析指标:
# - 实际占用率
# - 理论占用率
# - 块限制(寄存器、共享内存、线程束)
# - 占用率限制因素
// 在代码中查询占用率
int numBlocks;
int blockSize = 256;
cudaOccupancyMaxActiveBlocksPerMultiprocessor(
    &numBlocks, myKernel, blockSize, sharedMemSize);

float occupancy = (numBlocks * blockSize) /
    (float)deviceProp.maxThreadsPerMultiProcessor;
printf("理论占用率: %.2f%%
", occupancy * 100);

4. 屋顶线模型分析

性能边界分析:

# 生成屋顶线数据
ncu --set roofline -o roofline ./cuda_program

# 关键指标:
# - 实现FLOP/s
# - 实现内存带宽
# - 算术强度(FLOP/字节)
# - 脊点

解释指南:

  • 低于内存屋顶线:内存受限
  • 低于计算屋顶线:计算受限
  • 达到峰值:最优利用率

5. 内存带宽分析

识别内存瓶颈:

# 内存分析部分
ncu --section MemoryWorkloadAnalysis \
    --section MemoryWorkloadAnalysis_Chart \
    --section MemoryWorkloadAnalysis_Tables \
    -o memory ./cuda_program

关键指标:

  • 全局加载/存储吞吐量
  • L1/L2缓存命中率
  • 共享内存带宽
  • 每次请求的内存事务数

6. 线程束执行分析

分析线程束效率:

# 线程束状态分析
ncu --section WarpStateStatistics -o warp ./cuda_program

# 调度器统计
ncu --section SchedulerStatistics -o scheduler ./cuda_program

关键指标:

  • 每个已发出指令的线程束周期数
  • 每个活动周期的合格线程束数
  • 每个调度器的活动线程束数
  • 停滞原因(内存、同步、执行)

7. 内核比较

比较内核变体:

# 基线捕获
ncu -o baseline ./program_v1

# 与新版本比较
ncu --import baseline.ncu-rep --diff ./program_v2

# 生成比较报告
ncu --import baseline.ncu-rep \
    --import optimized.ncu-rep \
    --page diff --csv > comparison.csv

8. 性能建议

自动化分析:

# 获取优化建议
ncu --section SpeedOfLight \
    --section SpeedOfLight_RooflineChart \
    -o speedoflight ./cuda_program

# 带建议导出
ncu --import profile.ncu-rep --page details --csv > details.csv

常见性能分析工作流

工作流1:初始性能评估

# 步骤1:系统概览
nsys profile -t cuda -o system_overview ./program
nsys stats system_overview.nsys-rep

# 步骤2:识别热点内核
ncu --launch-skip 10 --launch-count 5 -o hot_kernels ./program

# 步骤3:瓶颈内核深度分析
ncu --kernel-name hotKernel --set full -o detailed ./program

工作流2:内存优化

# 分析内存访问模式
ncu --section SourceCounters \
    --section MemoryWorkloadAnalysis \
    --kernel-name targetKernel \
    -o memory_analysis ./program

# 检查合并访问问题
ncu --metrics l1tex__t_sectors_pipe_lsu_mem_global_op_ld.sum,\
l1tex__t_requests_pipe_lsu_mem_global_op_ld.sum \
    -o coalescing ./program

工作流3:占用率优化

# 以占用率为重点的性能分析
ncu --section Occupancy \
    --section LaunchStatistics \
    -o occupancy ./program

# 测试不同块大小
for bs in 64 128 256 512 1024; do
    ncu --section Occupancy -o occ_$bs ./program --block-size $bs
done

流程集成

此技能与以下流程集成:

  • performance-profiling-analysis.js - 性能分析工作流
  • occupancy-optimization.js - 占用率优化
  • warp-efficiency-optimization.js - 线程束效率优化
  • gpu-memory-optimization.js - 内存优化

输出格式

执行操作时,提供结构化输出:

{
  "operation": "kernel-profile",
  "tool": "nsight-compute",
  "kernel": "matrixMultiply",
  "metrics": {
    "duration_us": 125.4,
    "achieved_occupancy": 0.78,
    "theoretical_occupancy": 1.0,
    "compute_throughput_pct": 65.2,
    "memory_throughput_pct": 89.3,
    "roofline": {
      "arithmetic_intensity": 12.5,
      "achieved_gflops": 4500,
      "peak_gflops": 8000,
      "bound": "compute"
    }
  },
  "recommendations": [
    "增加块大小以提高占用率",
    "考虑循环展开以减少指令开销"
  ],
  "artifacts": ["profile.ncu-rep", "summary.csv"]
}

依赖项

  • Nsight Systems 2023.1+
  • Nsight Compute 2023.1+
  • CUDA Toolkit 11.0+

限制

  • 完整性能分析需要root/管理员权限
  • 某些指标仅适用于特定GPU架构
  • 性能分析会增加开销;结果可能与生产环境不同
  • Nsight Compute默认每次分析一个内核调用