安装指南

NVIDIA Nsight Systems 安装指南。

概述

Nsight Systems 是一款具有跟踪功能的统计采样分析器。它旨在与基于 NVIDIA Tegra SoC(片上系统)、Arm SBSA(基于服务器的系统架构)系统以及基于 x86_64 处理器架构且包含 NVIDIA GPU 的设备和开发套件配合使用。

在本文档中,我们将进行性能分析的设备称为目标,将用户工作和控制性能分析会话的计算机称为主机。请注意,对于基于 x86_64 的系统,它们可能在同一设备上,而对于基于 Tegra 或 Arm 的系统,它们始终是分开的。

此外,以下三种不同的活动被区分开来

  • 性能分析 — 收集任何性能数据的过程。Nsight Systems 中的性能分析会话通常包括采样和跟踪。

  • 采样 — 定期停止被分析者(在性能分析会话期间正在调查的应用程序)的过程,通常是为了收集回溯(活动线程的调用堆栈),这使您可以统计地了解每个函数花费的时间。此外,还可以对硬件计数器进行采样。当收集的样本数量较少时,此过程本质上是不精确的。

  • 跟踪 — 收集有关被分析者或系统中发生的各种活动的精确信息的过程。例如,可以跟踪被分析者 API 的执行,从而提供函数调用的确切时间和持续时间。

Nsight Systems 支持多代 Tegra SoC、NVIDIA 独立 GPU 和各种 CPU 架构,以及各种目标和主机操作系统。本文档描述了任何版本的 Nsight Systems 中可用的全套功能。如果某个功能并非在所有版本中都可用,则将在文本中注明。一般来说,Nsight Systems Embedded Platforms Edition 表示支持用于嵌入式和汽车市场的 Tegra 处理器的软件包,而 Nsight Systems Workstation Edition 支持用于工作站、集群和云市场的 x86_64 和 Arm 服务器 (SBSA) 处理器。

Nsight Systems 在大多数平台上支持的常见功能包括以下内容

  • 使用多种算法(例如帧指针或 DWARF 数据)对被分析者进行采样并收集回溯。构建自顶向下、自底向上和平面视图(如果适用)。此信息有助于识别 CPU 密集型代码中的性能瓶颈。

  • 采样或跟踪系统电源行为,例如 CPU 频率。

  • (仅在 Nsight Systems Embedded Platforms Edition 上)从 Arm PMU(性能监控单元)采样计数器。诸如缓存未命中之类的信息在统计上与函数执行相关联。

  • 支持多个窗口。使用多个显示器的用户可以同时查看多个报告,或者在同一报告文件中获得多个视图。

使用 Nsight Systems,用户可以

  • 识别占用 CPU 的调用路径。

  • 识别占用 CPU 的单个函数(跨不同的调用路径)。

  • 对于 Nsight Systems Embedded Platforms Edition,识别缓存利用率低的函数。

  • 如果平台支持 CUDA,请查看 CUDA 运行时和驱动程序 API 调用以及 CUDA GPU 工作负载的可视化表示。Nsight Systems 使用 CUDA Profiling Tools Interface (CUPTI),有关更多信息,请参阅: CUPTI 文档

  • 如果用户使用 NVIDIA Tools Extension (NVTX) 进行注释,请查看 NVTX 注释的可视化表示:范围、标记和线程名称。

  • 对于 Windows 目标,请查看 D3D12 的可视化表示:在 CPU 上发出的 API 调用、图形帧、卡顿分析以及 GPU 工作负载(命令列表和调试范围)。

  • 对于 x86_64 目标,请查看 Vulkan 的可视化表示:在 CPU 上发出的 API 调用、图形帧、卡顿分析以及 Vulkan GPU 工作负载(命令缓冲区和调试范围)。

系统要求

Nsight Systems 支持多个平台。为简单起见,可以将它们视为 Nsight Systems Embedded Platforms Edition 和 Nsight Systems Workstation Edition,其中 Nsight Systems Workstation Edition 支持在 Linux 和 Windows 操作系统上使用 x86_64 或 Arm SBSA CPU 的台式机、工作站、集群和云,而 Nsight Systems Embedded Platforms Edition 支持在 Linux for Tegra 和 QNX 操作系统上用于嵌入式和游戏领域的 NVIDIA Tegra 产品。

支持的平台

根据您的操作系统,支持不同的 GPU

L4T (Linux for Tegra)

x86_64 或 Arm SBSA

  • NVIDIA GPU 架构,从 Pascal 开始

  • 操作系统(仅限 64 位)

    • Ubuntu 20.04、22.04 和 24.04

    • CentOS 8.0 和 RedHat Enterprise Linux 8+

    • Amazon Linux 2023+

    • Win Server 2022+

网络组件

  • NVIDIA DPU

  • NVIDIA SuperNIC

  • Amazon EFA NIC

CUDA 版本

  • Nsight Systems 支持 CUDA 10.0+(适用于大多数平台)

  • Arm SBSA 上的 Nsight Systems 支持 10.2+

请注意,CUDA 版本和驱动程序版本必须兼容。

CUDA 版本

驱动程序的最低版本

11.0

450

10.2

440.30

10.1

418.39

10.0

410.48

从 CUDA 11.X 开始,将支持 450 及以上的任何驱动程序,尽管在较新驱动程序中引入的新功能将不可用。

有关每个工具包专门发布的驱动程序的信息,请参阅 CUDA Toolkit 发行说明 - 主要组件版本

Linux 上 x86_64 和 Arm SBSA 目标的系统要求

当从主机上的 GUI 连接到基于 x86_64 或 Arm SBSA Linux 的目标时,连接是通过 SSH 建立的。

Linux Perf 的使用:要收集线程调度数据和 IP(指令指针)样本,Linux 操作系统的 perf_event_paranoid 级别必须为 2 或更低。使用以下命令进行检查

cat /proc/sys/kernel/perf_event_paranoid

如果输出 >2,则执行以下操作以临时调整 paranoid 级别(请注意,这必须在每次重启后完成)

sudo sh -c 'echo 2 >/proc/sys/kernel/perf_event_paranoid'

要使更改永久生效,请使用以下命令

sudo sh -c 'echo kernel.perf_event_paranoid=2 > /etc/sysctl.d/local.conf'

内核版本:要收集线程调度数据和 IP(指令指针)样本和回溯,内核版本必须为

  • 3.10.0-693 或更高版本(适用于 CentOS 和 RedHat Enterprise Linux 7.4+)

  • 4.3 或更高版本(适用于包括 Ubuntu 在内的所有其他发行版)

要在目标设备上检查内核的版本号,请在设备上运行以下命令

uname -a

注意

仅 CentOS、RedHat 和 Ubuntu 发行版经过测试/确认可正常工作。

glibc 版本:要在目标设备上检查 glibc 版本,请运行以下命令

ldd --version

Nsight Systems 需要 glibc 2.17 或更高版本。

CUDA:有关此版本中支持的 CUDA 版本,请参见上文。使用 deviceQuery 命令来确定系统上的 CUDA 驱动程序和运行时版本。deviceQuery 命令在 CUDA SDK 中可用。它通常安装在

/usr/local/cuda/samples/1_Utilities/deviceQuery

仅支持纯 64 位环境。换句话说,不支持 32 位系统或在 64 位环境中运行的 32 位进程。

Nsight Systems 需要对目标系统上的 /var/lock 目录具有写入权限。

Docker:有关更多信息,请参阅用户指南的容器支持部分。

x86_64 Windows 目标设备要求

DX12 要求:

  • Windows 10 和 NVIDIA 驱动程序 411.63 或更高版本(用于 DX12 跟踪)

  • Windows 10 2018 年 4 月更新(版本 1803,又名 Redstone 4)和 NVIDIA 驱动程序 411.63 或更高版本(用于 DirectX 光线追踪和跟踪 DX12 复制命令队列)。

主机应用程序要求

Nsight Systems 主机应用程序在以下主机平台上运行

  • Windows 10、Windows Server 2019。仅支持 64 位版本。

  • 已知 Linux Ubuntu 14.04 及更高版本可以工作,在其他现代发行版上运行也应该是可以的。仅支持 64 位版本。

  • OS X 10.10 “Yosemite” 及更高版本。

入门指南

查找正确的软件包

Nsight Systems 适用于多个目标和多个主机操作系统。要选择正确的软件包,首先要考虑要分析的目标系统。

每个软件包仅限于一个架构。例如,Tegra 软件包不包含对 x86 目标进行性能分析的支持,而 x86 软件包不包含对 Tegra 目标进行性能分析的支持。

在选择合适的目标版本后,选择与主机操作系统对应的软件包,即将在其上查看结果的系统的操作系统。这些软件包采用常见安装程序类型的形式:Windows 的 .msi;x86 Linux 的 .run、.rpm 和 .deb;以及 macOS 安装程序的 .dmg。

注意

Arm SBSA 软件包没有用于结果可视化的 GUI。如果您希望可视化您的结果,请下载并安装适用于 macOS、x86_64 Linux 或 Windows 系统的 GUI。

Tegra 软件包

  • Windows 主机 - 在 Windows 计算机上安装 .msi。启用对 Tegra 设备的远程访问以进行性能分析。

  • Linux 主机 - 在 Linux 系统上安装 .run。启用对 Tegra 设备的远程访问以进行性能分析。

  • macOS 主机 - 在 macOS 计算机上安装 .dmg。启用对 Tegra 设备的远程访问以进行性能分析。

x86_64 软件包

  • Windows 主机 - 在 Windows 计算机上安装 .msi。启用对 Linux x86_64 或 Windows 设备的远程访问以进行性能分析,以及在本地系统上运行。

  • Linux 主机 - 在 Linux 系统上安装 .run、.rpm 或 .deb。启用对 Linux x86_64 或 Windows 设备的远程访问以进行性能分析,或在本地主机上运行收集。

  • 仅限 Linux CLI - Linux CLI 随附在所有 x86 软件包中,但如果您只需要 CLI,我们有一个软件包可供选择。在 Linux 系统上安装 .deb。仅启用 CLI 收集,报告可以在 x86_64 主机中导入或打开。

  • macOS 主机 - 在 macOS 计算机上安装 .dmg。启用对 Linux x86_64 设备的远程访问以进行性能分析。

Arm SBSA 软件包

  • 仅限 Arm SBSA CLI - Arm SBSA 支持不包括主机 GUI。在您的 Arm SBSA 系统上安装 .deb 或 .rpm。仅启用 CLI 收集,报告可以在任何受支持的主机平台上的 GUI 中导入或打开。

软件包管理器安装

使用 RPM 或 Debian 软件包进行安装会与您系统的软件包管理系统交互。当使用 RPM 或 Debian 本地 repo 安装程序时,下载的软件包包含存储在本地文件系统 /var/ 中的存储库快照。此类软件包仅告知软件包管理器在哪里可以找到实际的安装软件包,但不会安装它们。

如果启用了在线网络存储库,则将在安装时使用软件包管理器(apt-get、dnf、yum 或 zypper)自动下载 RPM 或 Debian 软件包。

用户可以从公共可用的存储库下载 Nsight Systems(完整软件包 nsight-systems 或仅 CLI 软件包 nsight-systems-cli)。以下命令作为示例给出,并非旨在完全正确。

Ubuntu(容器的最小设置)

这些说明假定您在容器中具有 root 权限。启动容器的示例命令:sudo docker run -it --rm ubuntu:latest bash

apt update
apt install -y --no-install-recommends gnupg
echo "deb http://developer.download.nvidia.com/devtools/repos/ubuntu$(source /etc/lsb-release; echo "$DISTRIB_RELEASE" | tr -d .)/$(dpkg --print-architecture) /" | tee /etc/apt/sources.list.d/nvidia-devtools.list
apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
apt update
apt install nsight-systems-cli

Ubuntu(桌面)

sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/devtools/repos/ubuntu$(source /etc/lsb-release; echo "$DISTRIB_RELEASE" | tr -d .)/$(dpkg --print-architecture)/ /"
sudo apt install nsight-systems

CentOS 和 RHEL(容器的最小设置)

与上面的 Ubuntu 相同,这些说明假定您在容器中具有 root 权限。启动容器的示例命令:sudo docker run -it --rm centos:latest bash

rpm --import https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
dnf install -y 'dnf-command(config-manager)'
dnf config-manager --add-repo "https://developer.download.nvidia.com/devtools/repos/rhel$(source /etc/os-release; echo $VERSION_ID)/$(rpm --eval '%{_arch}' | sed s/aarch/arm/)/"
dnf install -y nsight-systems-cli

CentOS 和 RHEL(桌面)

sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo dnf install -y 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo "https://developer.download.nvidia.com/devtools/repos/rhel$(source /etc/os-release; echo $VERSION_ID)/$(rpm --eval '%{_arch}' | sed s/aarch/arm/)/"
sudo dnf install nsight-systems

在主机系统上安装 GUI

将相应的文件复制到您在其中具有写入和执行权限的目录中的主机系统。运行安装文件,接受 EULA,Nsight Systems 将安装在您的系统上。

在 Linux 上,有一些特殊选项可以启用自动安装。使用 --accept 标志运行安装程序将自动接受 EULA,使用 --accept 标志和 --quiet 标志运行将自动接受 EULA 而不打印到 stdout。在没有 --accept 的情况下运行 --quiet 将显示错误。

安装将为此主机创建一个 Host 目录,并为该 Nsight Systems 软件包支持的每个目标创建一个 Target 目录。

在首次连接到设备时,主机将在目标上安装收集目标设备上数据所需的所有二进制文件。无需在目标设备上安装软件包。

如果从 CUDA Toolkit 安装,请参阅 CUDA Toolkit 文档

可选:设置 CLI

可以使用 CLI 对所有 Nsight Systems 目标进行性能分析。只能使用 CLI 对 Arm SBSA 目标进行性能分析。当脚本用于运行无人值守的收集,或者无法通过 ssh 访问目标系统时,CLI 特别有用。特别是,这可以用于在 Docker 容器中启用收集。

CLI 可以在 Nsight Systems 安装的 Target 目录中找到。想要将 CLI 作为独立工具安装的用户可以通过将 Target 目录中的文件复制到他们选择的位置来完成。

如果您希望在没有 root 权限的情况下运行 CLI(推荐模式),您需要安装在您具有完全访问权限的目录中。

设置好 CLI 后,您可以使用 nsys status -e 命令来检查您的环境。

~$ nsys status -e

Sampling Environment Check
Linux Kernel Paranoid Level = 1: OK
Linux Distribution = Ubuntu
Linux Kernel Version = 4.15.0-109-generic: OK
Linux perf_event_open syscall available: OK
Sampling trigger event available: OK
Intel(c) Last Branch Record support: Available
Sampling Environment: OK

此状态检查允许您确保在本地环境中满足使用 Nsight Systems 进行 CPU 采样的系统要求。如果采样环境不是 OK,您仍然可以运行各种跟踪操作。

Intel(c) Last Branch Record 允许工具(包括 Nsight Systems)使用硬件来快速获取有限的堆栈信息。如果可用,Nsight Systems 将默认使用此方法进行堆栈解析。

有关更改这些环境设置的信息,请参阅安装指南中的系统要求部分。有关更改回溯方法的信息,请参阅用户指南中的从 CLI 进行性能分析。

要开始使用 CLI,请运行 nsys --help 以获取选项列表,或参阅用户指南中的从 CLI 进行应用程序性能分析以获取完整文档。

启动 GUI

根据您的操作系统,Nsight Systems 将在您的主机桌面上安装一个图标,您可以使用该图标启动 GUI。要直接启动 GUI,请运行安装的 Host 子目录中的 nsys-ui 可执行文件。

安装多报告分析系统

预览功能

Nsight Systems 多报告分析系统可以位于 <install-dir>/target-linux-x64/python/packages 目录中。对于此初始版本,多节点分析仅适用于在 Linux 目标上运行配方,并且仅适用于在 Linux 或 Windows 主机上可视化。

配方依赖项

该系统是用 Python 编写的,并且依赖于一组 Python 软件包。先决条件是 Python 3.8 或更高版本,带有 pip 和 venv。如果您没有 Python,可以从 python.org 或您的 Linux 软件包管理器安装它。

Ubuntu 上的 Pip/venv

如果 pip/venv 没有与 Python 一起安装,请运行

$ sudo apt-get install python3-pip
$ sudo apt-get install python3-venv

在全新的 Ubuntu 安装上,您需要在上述命令之前运行以下命令

$ sudo apt-get update

依赖软件包可以通过自动化脚本自动安装,也可以手动安装。

自动化脚本

<install-dir>/target-linux-x64/python/packages/nsys_recipe/install.py 脚本自动化了配方依赖项的安装。运行脚本时,您必须选择 --current--venv PATH 选项之一。

选项

  • -h: 显示帮助

  • --current: 在当前环境中安装软件包。如果 venv 处于活动状态,软件包将安装在那里。否则,软件包将安装在系统 site-packages 目录中。它启用在不使用虚拟环境的情况下使用 nsys recipe。但是,如果需要不同的版本,则新软件包可能会与现有软件包冲突。

  • --venv PATH: 在虚拟环境中安装软件包。如果它尚不存在,则会创建它。它可以防止当前环境中软件包冲突的风险,但需要在运行 nsys recipe 之前激活虚拟环境。

  • --tar: 在线下载 wheel 软件包并将其打包

  • --untar: 解压 wheel 软件包并安装

  • --python: 更改 python 可执行文件(默认为 python3)

  • --no-jupyter: 不安装 jupyter notebook 的要求

  • --no-dask: 不安装 Dask 的要求

如果未指定 --tar--untar 选项,脚本将直接从互联网下载 pip 软件包。

手动步骤

如果您更愿意手动安装依赖项,请按照以下步骤操作

  • 创建一个虚拟环境。

    我们建议创建一个虚拟环境,以避免将软件包直接安装到您的系统 Python 中。这些命令在当前工作目录中创建虚拟环境。

    请参阅 venv - python 文档

    要创建名为 recipe_env 的 venv

    $ python3 -m venv recipe_env
    $ source recipe_env/bin/activate
    
  • 依赖项列表。

    我们在 <install-dir>/target-linux-x64/python/packages/nsys_recipe/requirements 中有三个文件,用于依赖项

    • Common.txt(必需):所有配方所需的依赖项。

    • Dask.txt(可选):Dask 模式所需的依赖项。

    • Jupyter.txt(可选):打开 Jupyter notebook 所需的依赖项。

一步安装

以下命令将安装 CLI 和 GUI 的所有依赖项。请注意,您需要首先激活您的 venv,如上所述,否则模块将在 venv 中不可用。

$ python3 -m pip install -r nsys_recipe/requirements/dask.txt -r nsys_recipe/requirements/common.txt -r nsys_recipe/requirements/jupyter.txt

两步安装(适用于没有互联网的机器)

如果您希望在没有互联网的机器上下载依赖项,您可以在有互联网的机器上下载 wheel 软件包,将其传输到目标机器并在那里安装软件包。

在有互联网的机器上

$  python3 -m pip download -r nsys_recipe/requirements/dask.txt -r nsys_recipe/requirements/common.txt -r nsys_recipe/requirements/jupyter.txt -d “recipe-deps”
$ tar -cvfz recipe-deps.tar.gz recipe-deps

在没有互联网的机器上

$ tar -xvfz recipe-deps.tar.gz
$ python3 -m pip install recipe-deps/* --no-index

Jupyter Notebook

Nsight Systems UI 具有在内部加载 Jupyter notebook 的能力。它使用与您的 $PATH 上的 Python 关联的 Jupyter notebook 安装,预计该 Python 是安装到本指南前面步骤中创建的虚拟环境中的 Python。

如果 Jupyter 安装在不同的位置,您可以向 config.ini 文件添加第三个变量,该变量将覆盖 Jupyter 的默认路径

JupyterPythonExe=“/path/to/recipe_env/bin/python”

此 config.ini 文件应放置在 <install_dir>/host-linux-x64

请注意,在 Windows 上,路径应使用 Windows 斜杠,并且必须是双斜杠

JupyterPythonExe=“c:\\path\\to\\recipe_env\\bin\\python.exe”