当前位置: 首页 > web >正文

NVIDIA Nsight Systems性能分析工具

* 性能分析

  • NVIDIA Nsight Systems (推荐):
    这是 NVIDIA 官方推荐的更现代、功能更强大的分析工具。

    1. 安装 Nsight Systems
    2. 在 Docker 容器中启动程序:
      # 确保你在启动容器时挂载了/usr/local/cuda/targets/x86_64-linux/lib/ 和 /usr/local/nvidia/lib64
      # 通常会映射到容器内部的相同路径
      # 例如:docker run --gpus all -it -v $(pwd):/app -w /app your_image bash# 在容器内部执行:
      ./video_blur -i data/input.mp4 -o data/output.mp4
      
    3. 在本机上启动 Nsight Systems GUI,然后选择 “Attach to process” 或 “Launch Application” (推荐)。
      如果你在宿主机上启动并选择 “Launch Application”,可以直接指定 Docker 容器中的 video_blur 可执行文件。
      如果你的 Docker 运行在 SSH 远程主机上,Nsight Systems 也支持远程分析。
    4. 分析指标: 关注 CUDA 核函数执行时间、内存拷贝时间 (D2H, H2D)、CUDA 流的并发情况、CPU-GPU 同步点等。

1. 安装 Nsight Systems

在 Ubuntu 系统上安装 Nsight Systems(NVIDIA 的系统级性能分析工具)可以按照以下步骤进行:

步骤 1:确认系统要求

  • 操作系统:Ubuntu 16.04 及以上版本(64位)
  • 依赖:需要安装 libgtk-3-0 等基础库,可先执行以下命令安装依赖:
    sudo apt update && sudo apt install -y libgtk-3-0 libasound2 libnss3 libxss1
    

步骤 2:本机下载 Nsight Systems

  1. 访问 NVIDIA 官方下载页面(需注册 NVIDIA 开发者账号,免费)
  2. 选择适合 Ubuntu 系统的版本(如 .deb 安装包,推荐)
    • 例如:nsight-systems-2023.3.1_2023.3.1.100_amd64.deb(版本号可能更新)

步骤 3:安装 Nsight Systems

  1. 执行 .deb 包安装命令:
    sudo dpkg -i nsight-systems-<版本号>_amd64.deb
    
    • 若出现依赖错误,执行以下命令修复:
      sudo apt -f install
      

步骤 4:验证安装:启动图形界面(可视化分析工具)

  1. 使用 nsys-ui 命令(而非 nsight-systems):
 nsys-ui
  1. 若成功启动图形界面,说明安装完成。(OPenGL版本低运行不起来。最在本机下载nsight-systems查看)
  2. Nsight Systems 还提供命令行工具 nsys,可直接在终端中使用:
# 查看版本
nsys --version# 基本性能分析示例(分析一个可执行程序)
nsys profile ./main

步骤 5:分析指标: 关注 CUDA 核函数执行时间、内存拷贝时间 (D2H, H2D)、CUDA 流的并发情况、CPU-GPU 同步点等。

注意事项

  • 确保系统已安装匹配的 NVIDIA 驱动(推荐 450.51 及以上版本)

通过以上步骤,即可在 Ubuntu 系统上完成 Nsight Systems 的安装,用于分析 GPU/CPU 性能、追踪程序执行流程等场景。

步骤6:验证确认「程序是否真的调用了 GPU」

如果在 nsys-ui 中未看到 GPU 相关信息,需要执行:

# 基本性能分析示例(分析一个可执行程序)
nsys profile --trace cuda,osrt ./main

如果还没有,通常是 Profiling 阶段未正确追踪 CUDA/GPU 事件,或 程序本身未实际调用 GPU。可按以下步骤逐步排查,定位问题根源:

第一步:先确认「程序是否真的调用了 GPU」

首先排除「程序本身未使用 GPU」的情况(比如代码中 CUDA 逻辑未执行、设备选择错误等),这是最常见的基础问题。

验证方法:
  1. 运行程序时,用 nvidia-smi 实时监控 GPU 占用
    打开两个终端:

    • 终端 1:执行 watch -n 1 nvidia-smi(每秒刷新一次 GPU 状态),观察 GPU-Util(GPU 利用率)和 Processes(进程占用)列。
    • 终端 2:运行你的程序 ./main
    • GPU-Util 始终为 0%,且 Processes 中无 ./main 进程,说明 程序根本没调用 GPU,此时 nsys 自然无法追踪到 GPU 事件。
  2. 检查程序代码中的 GPU 调用逻辑

    • 若为 CUDA 程序:确认是否有 cudaSetDevice(0)(指定设备)、cudaMalloc(内存分配)、kernel<<<...>>>(核函数调用)等核心逻辑,且无 cudaError_t 错误(建议在代码中添加错误检查,比如 cudaCheck(cudaGetLastError()))。
    • 若为 PyTorch/TensorFlow 等框架:确认是否设置了 device='cuda',且无 CPU-only 版本框架的误安装(比如 pip install torch 未带 CUDA 支持,需安装 torch==xx.xx.xx+cu121 这类带 CUDA 后缀的版本)。

第二步:若程序确实调用了 GPU,再检查「nsys Profiling 配置是否正确」

nvidia-smi 能看到程序占用 GPU,但 nsys 报告中无 GPU 信息,说明 Profiling 时未正确启用 CUDA 追踪,需重新检查命令参数。

常见配置问题及修复:
  1. 确认 Profiling 命令是否带了 --trace cuda 选项
    只有启用 --trace cudansys 才会追踪 GPU 相关事件(核函数、内存拷贝、流操作等)。

    • 错误命令(无 CUDA 追踪):nsys profile ./main(仅追踪 CPU,无 GPU 信息)。
    • 正确命令(强制启用 CUDA 追踪):
      # 仅追踪 CUDA(GPU)事件
      nsys profile --trace cuda ./main
      # 推荐:同时追踪 CUDA + CPU(方便分析 CPU-GPU 同步)
      nsys profile --trace cuda,osrt --output=report_fillcrop.nsys-rep ./main
      

    重新执行上述正确命令,生成新的报告(如 report2.nsys-rep),再用 nsys-ui 打开查看。

  2. 检查 Profiling 时是否有「CUDA 追踪失败」的警告
    执行 nsys profile ./your_programe 命令时,注意终端输出是否有类似警告:

    • Warning: CUDA tracing is disabled because no CUDA devices were found.(未找到 CUDA 设备)
    • Warning: CUDA context creation failed.(CUDA 上下文创建失败)
      若有此类警告,说明 nsys 本身无法识别 GPU,需进一步检查 GPU 驱动和 CUDA 环境。

第三步:若仍无 GPU 信息,检查「GPU 驱动与 CUDA 环境是否正常」

nsys 依赖 NVIDIA 驱动和 CUDA 工具链来追踪 GPU 事件,环境异常会导致追踪失败。

环境检查步骤:
  1. 检查 NVIDIA 驱动版本
    执行 nvidia-smi,查看右上角的 Driver Version(需 ≥ 450.51,推荐 ≥ 525 版本,适配新 GPU)。

    • 若提示 command not found:驱动未安装或未加载,需重新安装匹配 GPU 型号的驱动(参考 NVIDIA 官网驱动下载)。
  2. 检查 CUDA Toolkit 是否安装且配置正确
    执行 nvcc -V(注意是大写 V),查看 CUDA 版本(需与驱动兼容,比如驱动 525 支持 CUDA 12.0~12.4)。

    • 若提示 command not found:未安装 CUDA Toolkit,或未配置环境变量。需安装后添加环境变量(如 .bashrc 中添加):
      export PATH=/usr/local/cuda/bin:$PATH
      export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
      
      然后执行 source ~/.bashrc 生效。
  3. 验证 CUDA 环境是否可用
    编译并运行 CUDA 官方示例程序,确认基础 CUDA 功能正常:

    # 进入 CUDA 示例目录(默认路径,若自定义安装需调整)
    cd /usr/local/cuda/samples/1_Utilities/deviceQuery
    make  # 编译
    ./deviceQuery  # 运行设备查询
    
    • 若输出 Result = PASS:CUDA 环境正常;
    • 若输出 Result = FAIL:CUDA 环境异常(如驱动与 CUDA 版本不兼容、GPU 硬件问题),需先修复环境。

第四步:在 NVIDIA Nsight Systems 2025.5.1 中正确定位 GPU 相关信息

若上述步骤确认程序调用了 GPU、Profiling 命令正确、环境正常,可能是在 nsys-ui 中未找到正确的查看入口。

NVIDIA Nsight Systems 2025.5.1 查看 GPU 信息的核心入口:
  1. 打开报告后,进入「CUDA 视图」

    • 启动 NVIDIA Nsight Systems 并加载 report.nsys-rep 后,在左侧菜单栏找到 「CUDA」 相关选项(不同版本可能略有差异,常见标签如 CUDA KernelsCUDA MemoryCUDA Streams):
      • CUDA Kernels:查看所有 CUDA 核函数的执行时间、调用次数、占用设备(GPU 0/1)等(核心指标,若有数据说明 GPU 被调用)。
      • CUDA Memory:查看 H2D(主机到设备)、D2H(设备到主机)、D2D(设备内部)的内存拷贝时间和数据量。
      • CUDA Streams:查看不同 CUDA 流的并发情况,判断是否存在流阻塞。
  2. 通过「Timeline 视图」直观观察 CPU-GPU 并行

    • 在左侧菜单栏选择 「Timeline」,在上方工具栏勾选 「CUDA」「CPU」(确保两者都显示)。
    • 界面会显示时间轴:上方是 CPU 线程活动,下方是 GPU 活动(如 CUDA Kernel ExecutionCUDA Memory Copy)。
    • 若时间轴中无「GPU 活动」区域,或区域内无任何事件,说明仍未追踪到 GPU 数据,需回到前几步重新排查。

总结排查流程(按优先级排序)

  1. nvidia-smi 确认程序是否真的占用 GPU → 若否,修复程序代码;
  2. 确认 nsys profile 命令带了 --trace cuda → 若否,重新生成报告;
  3. 检查 nvidia-sminvcc -V 确认驱动/CUDA 正常 → 若异常,修复环境;
  4. nsys-ui 中通过「CUDA Kernels」或「Timeline」视图查找 GPU 事件。

按此流程操作后,通常能定位到「程序未调用 GPU」或「Profiling 配置错误」的核心问题,进而解决 nsys-ui 中无 GPU 信息的情况。

http://www.xdnf.cn/news/18673.html

相关文章:

  • 【Linux系统】进程信号:信号的处理
  • 【基础-判断】订阅dataReceiveProgress响应事件是用来接收HTTP流式响应数据。
  • 基于LLM的跨架构物联网静态漏洞挖掘检测 摘要
  • Ubuntu2204server系统安装postgresql14并配置密码远程连接
  • 小程序备案话术
  • 关于微服务下的不同服务之间配置不能通用的问题
  • pid自适应调节实战设计-基于输出电流的PI参数切换方案
  • React Hooks原理深潜:从「黑魔法」到「可观测」的蜕变之旅
  • Linux服务器Systemctl命令详细使用指南
  • DeepSeek V3.1 横空出世:重新定义大语言模型的边界与可能
  • 水体反光 + 遮挡难题破解!陌讯多模态融合算法在智慧水务的实测优化
  • 深入理解纹理与QtOpenGL的实现
  • 深度集成Dify API:基于Vue 3的智能对话前端解决方案
  • GitHub 热榜项目 - 日榜(2025-08-23)
  • Git的下载安装和使用以及和IDEA的关联
  • 微服务概述1
  • 【K8s】微服务
  • Claude Code快捷键介绍(Claude Code命令、Claude Code指令、Claude Code /命令、Claude命令、Claude指令)
  • P9246 [蓝桥杯 2023 省 B] 砍树
  • 学习嵌入式第三十六天
  • JAVA国际版东郊到家同城按摩服务美容美发私教到店服务系统源码支持Android+IOS+H5
  • PCB电路设计学习3 电路原理图设计 元件PCB封装设计与添加
  • Day12 数据统计-Excel报表
  • 数据结构——树状数组(Binary Indexed Tree)
  • UE5多人MOBA+GAS 53、测试专属服务器打包和连接,以及配置EOS
  • WiFi有网络但是电脑连不上网是怎么回事?该怎么解决?
  • 云原生高级——K8S总概
  • OpenHands:开源AI软件开发代理平台的革命性突破
  • 2025最新版mgg格式转MP3,mflac转mp3,mgg格式如何转mp3?
  • setup 语法糖核心要点