如何在 Windows 和 Ubuntu Linux 上使用 Nvidia-smi 命令

Nvidia-smi 命令行工具允许管理、监控和获取有关系统中安装的 Nvidia GPU 设备的信息,它与 CUDA 工具包一起安装,是我们在显卡使用中必须熟练使用的利器之一。

什么是 Nvidia-smi 命令实用程序?

NVIDIA 系统管理界面 (Nvidia-smi) 是一个基于 NVIDIA 管理库 (NVML) 的命令行实用程序,旨在帮助管理和监控 NVIDIA GPU 设备。它提供了最好的 nvidia-smi 命令来监视和跟踪您的 GPU,并且与 CUDA 工具包一起安装。

Nvidia-smi 附带 Linux 和 64 位 Windows 上的 NVIDIA GPU 显示驱动程序。Nvidia-smi 可以将查询信息以 XML 或人类可读的纯文本形式报告到标准输出或文件。有关更多详细信息,请参阅Nvidia-smi 文档

如何运行Nvidia-smi命令实用程序?

Nvidia-smi 命令实用程序通常在驱动程序安装步骤中安装。它不能/不会在任何其他安装步骤中安装。如果您使用 NVIDIA 维护的存储库安装 NVIDIA GPU 驱动程序,则您将始终在最近安装的任何驱动程序中获得 Nvidia-smi 命令实用程序。

如何在 Windows 上运行 nvidia-smi?

Nvidia-SMI 默认存储在以下位置:C:\Windows\System32\DriverStore\FileRepository\nvdm*\nvidia-smi.exe。 在我的 Windows 10 计算机上,nvidia-smi.exe 可以在 C:\Windows\System32 中找到。 由于 C:\Windows\System32 已位于 Windows PATH 中,因此从命令提示符运行 nvidia-smi 现在应该可以立即使用。

nvidia-smi windows output

如果在 Windows 中从命令提示符 (CMD) 执行 nvidia-smi,则会返回以下错误:

C:\Users>nvidia-smi
'nvidia-smi' is not recognized as an internal or external command, operable program or batch file.

请进入文件浏览器然后进入C盘并在搜索栏中输入nvidia-smi有时当exe文件打开时等待右键输入属性复制位置路径然后进入命令提示符并使用将上一步中的复制路径更改为工作目录,然后写入“nvidia-smi”并回车。

如何在 Ubuntu Linux 上运行 nvidia-smi?

有一个名为“nvidia-smi”的工具,可以帮助通过 Linux 操作系统上的终端管理这些硬件。使用此工具时,系统可能会出现“nvidia-smi 命令未找到”的错误。

$ nvidia-smi
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

这时需要检查nvidia驱动是否正确安装,或者更新到最新版本的nvidia-drivers。

Nvidia-smi 命令示例

此命令监视您的 GPU。我们稍后将详细解释这个实用程序。

$ nvidia-smi

该工具与上面的命令类似,只是显示的信息比较详细。

$ nvidia-smi -a

它每秒监控您的 GPU,每秒刷新并跟踪输出本身。

$ watch –n 1 -d nvidia-smi

要列出所有可用的 NVIDIA 设备,请运行:

$ nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 3060 Ti (UUID: GPU-fa3da260-9c42-828f-981a-f6d7b48d77b3)

要列出有关每个 GPU 的某些详细信息,请尝试:

$ nvidia-smi --query-gpu=index,name,uuid,serial --format=csv index, name, uuid, serial
0, NVIDIA GeForce RTX 3060 Ti, GPU-fa3da260-9c42-828f-981a-f6d7b48d77b3, [N/A]

要以 1 秒更新间隔监控总体 GPU 使用情况,方法一:

$ nvidia-smi dmon
# gpu   pwr gtemp mtemp    sm   mem   enc   dec  mclk  pclk
# Idx     W     C     C     %     %     %     %   MHz   MHz
    0     19     41      -     0      0      0      0    405    210
    0     19     41      -     0      0      0      0    405    210
    0     19     41      -     0      0      0      0    405    210

要以 1 秒更新间隔监控总体 GPU 使用情况,方法二:

$ nvidia-smi pmon
# gpu        pid  type    sm   mem   enc   dec   command
# Idx          #   C/G     %     %     %     %   name
    0      22010     C    98    56     -     -   python3
    0      22010     C    98    56     -     -   python3
    0      22010     C    98    55     -     -   python3

Nvidia-smi命令输出指标和详细说明

以下是“nvidia-smi”命令行的输出:

nvidia-smi output

生成两个表作为输出,其中首先反映有关所有可用 GPU 的信息(上面的示例说明 1 个 GPU)。第二个表告诉您有关使用 GPU 的进程。让我们更深入地研究一下。

Temp: 核心 GPU 温度以摄氏度为单位。我们不需要担心它,因为除了关心您的硬件之外,它将由 DBM 数据中心控制。表中的上述“44C”是正常的,但当达到 90+ C 时请联系我们。

Perf: 表示GPU当前的性能状态。它的范围从 P0 到 P12 分别指最大和最小性能。

Persistence-M: 持久模式标志的值,其中“On”表示即使没有活动客户端(例如 Nvidia-smi)正在运行,NVIDIA 驱动程序也将保持加载(持久)状态。这可以减少 CUDA 程序等相关应用程序的驱动程序加载延迟。

Pwr: Usage/Cap:指GPU当前的功耗占总功耗的比例。它以瓦为单位进行采样。

Bus-Id: GPU 的 PCI 总线 ID,格式为“domain:bus:device.function”,采用十六进制格式,用于过滤特定设备的统计信息。

Disp.A: Display Active 是一个标志,决定是否要在 GPU 设备上分配内存用于显示,即初始化 GPU 上的显示。这里,“Off”表示没有任何使用GPU设备的显示。

Memory-Usage: 表示 GPU 上的内存分配占总内存的比例。Tensorflow 或 Keras(TensorFlow 后端)在启动时自动分配整个内存,即使它不需要它。

Volatile Uncorr. ECC: ECC 代表纠错码,它通过定位和纠正传输错误来验证数据传输。NVIDIA GPU 提供 ECC 错误的错误计数。这里,易失性错误计数器检测自上次加载驱动程序以来的错误计数。

GPU-Util: 它指示 GPU 利用率的百分比,即内核在采样期间使用 GPU 的时间百分比。

Compute M.: 特定GPU的计算模式是指共享访问模式,每次重启后计算模式设置为默认值。“默认”值允许多个客户端同时访问 CPU。

GPU: 表示GPU索引,有利于多GPU设置。这决定了哪个进程正在使用哪个 GPU。该索引表示设备的 NVML 索引。

PID: 指的是使用 GPU 的进程 ID。

Type: 指进程的类型,例如“C”(计算)、“G”(图形)和“C+G”(计算和图形上下文)。

Process Name: 流程名称

GPU Memory Usage: 每个进程使用的特定 GPU 的内存。

其他指标和详细描述在 Nvidia-smi 手册页上有说明。