NVIDIA-SMI系列命令详解(16)-NVLINK

5,087 阅读7分钟

NVLINK

本文为NVIDIA-SMI系列命令详解第十六篇-NVLINK,介绍和演示了nvidia-smi 命令的 nvlink 选项及其附加参数,命令如下:

nvidia-smi nvlink

该命令用于展示系统的 nvlink 信息。

支持的参数列表如下:

    [-h | --help]: 展示帮助信息
    [-i | --id]: 枚举索引, PCI 总线 ID 或者 UUID.
    [-l | --link]: 将命令限制到特定链接。 如果没有此标志,将显示所有链接信息。
    [-s | --status]: 显示链接状态(活动/非活动)
    [-c | --capabilities]: 显示链接支持的功能。
    [-p | --pcibusid]: 显示链接的远程节点 PCI 总线 ID。
    [-R | --remotelinkinfo]: 显示链接的远程设备 PCI 总线 ID 和 NvLink ID。
    [-sc | --setcontrol]: 不推荐设置计数器控制!
    [-gc | --getcontrol]: 不推荐使用计数器控制!
    [-g | --getcounters]: 不推荐使用选项 -g 获取计数器。
                          请改用选项 -gt/--getthroughput。
    [-r | --resetcounters]: 不推荐重置计数器!
    [-e | --errorcounters]: 显示链接的错误计数器。
    [-ec | --crcerrorcounters]: 显示链路的每通道 CRC 错误计数器。
    [-re | --reseterrorcounters]: 将所有错误计数器重置为零。
    [-gt | --getthroughput]: 显示指定计数器类型的链路吞吐量计数器
                             参数由表示计数的流量类型的字符串组成:
                               d:以 KiB 显示 tx 和 rx 数据有效负载
                               r:如果支持,以 KiB 显示 tx 和 rx 数据有效负载和协议开销

NVLink介绍

NVLink是世界首项高速 GPU 互连技术,与传统的 PCIe 系统解决方案相比,能为多 GPU 系统提供更快速的替代方案。NVLink 技术通过连接两块 NVIDIA® 显卡,能够实现显存和性能扩展1,从而满足最大视觉计算工作负载的需求。

image.png

NVLink性能

image.png

NVLink规格

第二代第三代第四代
NVLink 总带宽300GB/s600GB/s900GB/s
每个 GPU 最大链路数61218
NVIDIA 架构支持NVIDIA Volta™ 架构NVIDIA Ampere 架构NVIDIA Hopper™ 架构

nvidia-smi nvlink各参数详解

-i 指定 GPU 的标识

GPU 设备的自然枚举序号,PCI 总线地址,或者UUID

运行示例

查看 0 号 GPU 的 UUID 值

nvidia-smi nvlink -i 0

image

可以看到 0 号 GPU 的驱逐状态是 不驱

-l 指定 link 序号,

将命令限制到特定链接。

注意:

如果没有此标志,将显示所有链接信息。

运行示例

修改 0 号 GPU 的 0 号 link 的链接状态

 nvidia-smi nvlink -i 0 -l 0 -s

image

可以看到, 0 号 GPU 的 0 号 link 的链接状态为 25 GB/s。

如果不指定 link 参数执行相同命令

nvidia-smi nvlink -i 0 -s

image

可以看到,不指定-l参数时,展示 0 ~ 11 号所有的 link 的状态信息。

-s 显示链接状态(活动/非活动)

显示链接状态(活动/非活动)。

运行示例

查询 1 号 GPU 的 link 状态

执行

nvidia-smi nvlink -i 1 -s

image

看到 1 号 GPU 的 0 ~ 11 号所有的 link 的状态信息均为 25 GB/s。

-c 显示 链接 支持的能力列表

显示链接支持的功能

运行示例

显示 0 号 GPU 设备的 1 号 link 支持的能力列表

执行

nvidia-smi nvlink -i 0 -l 1 -c

image

可以看到,0 号 GPU 的 1 号 link 支持的能力列表如下:

  • 支持P2P

  • 支持访问系统内存

  • 支持 P2P 原子能力

  • 支持系统内存原子能力

  • 支持 SLI

  • 不支持 Link

-p 显示链接的远程节点 PCI 总线 ID

显示链接的远程节点 PCI 总线 ID

运行示例

显示 0 号 GPU 的 0 号链接的远程节点 PCI 总线 ID

nvidia-smi nvlink -i 0 -l 0 -p

image

可以看到, 0 号 GPU 的 0 号链接的远程节点 PCI 总线 ID 为0000:6D:04.0。

再执行 lspci | grep -i 6D:04命令,可以看到该设备是NV Bridge。

-R 显示链接的远程设备 PCI 总线 ID 和 NvLink ID

显示链接的远程设备 PCI 总线 ID 和 NvLink ID

运行示例

显示 0 号 GPU 的 0 号链接的远程设备 PCI 总线 ID 和 NvLink ID

nvidia-smi nvlink -i 0 -l 0 -R

image

可以看到, 0 号 GPU 的 0 号链接的远程节点 PCI 总线 ID 为0000:6D:04.0,NvLink ID 为 34。

-sc 不推荐设置计数器控制

此功能已弃用,执行

nvidia-smi nvlink -sc 0

image

将返回警告,说明此功能已废弃。

-gc 不推荐使用计数器控制

此功能已弃用,执行

nvidia-smi nvlink -gc 0

image

将返回警告,说明此功能已废弃。

-g 不推荐使用选项 -g 获取计数器。

此功能已弃用,执行

nvidia-smi nvlink -g 0

image

将返回警告,说明此功能已废弃。

请使用 -gt 选项替代。

-r 不推荐重置计数器

此功能已弃用,执行

nvidia-smi nvlink -r 0

image

将返回警告,说明此功能已废弃。

-e 显示链接的错误计数器

显示链接的错误计数器

运行示例

显示 0 号 GPU 设备的 1 号 link 的错误计数器

执行

nvidia-smi nvlink -i 0 -l 1 -e

image

可以看到,0 号 GPU 的 1 号 link 错误计数器信息如下:

  • 0 重放错误

  • 0 恢复错误

  • 0 CRC错误

  • 通道0~3 CRC 错误计数器为 0 (溢出 0)

-ec 显示链路的每通道 CRC 错误计数器

显示链路的每通道 CRC 错误计数器

运行示例

显示 0 号 GPU 设备的 1 号 链路 的 每通道 CRC 错误计数器

执行

nvidia-smi nvlink -i 0 -l 1 -ec

image

可以看到,0 号 GPU 的 1 号 链路的 通道0~3 CRC 错误计数器为 0 (溢出 0)

-re 将所有错误计数器重置为零

将所有错误计数器重置为零

运行示例

显示 0 号 GPU 设备的 1 号 链路 的 所有错误计数器重置为零

执行

nvidia-smi nvlink -i 0 -l 1 -re

image

可以看到,0 号 GPU 的 1 号 链路的错误计数器已经重置为零

-gt 显示指定计数器类型的链路吞吐量计数器

显示指定计数器类型的链路吞吐量计数器 参数由表示计数的流量类型的字符串组成:

  • d:以 KiB 显示 tx 和 rx 数据有效负载

  • r:如果支持,以 KiB 显示 tx 和 rx 数据有效负载和协议开销

运行示例

显示 0 号 GPU 设备的所有 链路 的 吞吐量计数器的数据有效载荷

执行

nvidia-smi nvlink -i 0 -gt d

image

可以看到,0 号 GPU 的 0~11 号 链路 的

  • 发送 数据有效载荷均在 11378335576 KiB 左右

  • 接收 数据有效载荷均在 10397577348 KiB 左右

显示 0 号 GPU 设备的所有 链路 的 吞吐量计数器的 原始数据(包含有效载荷和协议开销)

执行

nvidia-smi nvlink -i 0 -gt r

image

可以看到,0 号 GPU 的 0~11 号 链路 的

  • 发送 数据有效载荷 + 协议开销 均在 20060529462 KiB 左右

  • 接收 数据有效载荷 + 协议开销 均在 20027235760 KiB 左右

-h 打印帮助信息

运行示例

展示 nvidia-smi nvlink 的帮助信息

nvidia-smi nvlink -h

image

对应内容如下:

nvidia-smi nvlink -h

    nvlink -- Display NvLink information.

    Usage: nvidia-smi nvlink [options]

    Options include:
    [-h | --help]: Display help information
    [-i | --id]: Enumeration index, PCI bus ID or UUID.

    [-l | --link]: Limit a command to a specific link.  Without this flag, all link information is displayed.
    [-s | --status]: Display link state (active/inactive).
    [-c | --capabilities]: Display link capabilities.
    [-p | --pcibusid]: Display remote node PCI bus ID for a link.
    [-R | --remotelinkinfo]: Display remote device PCI bus ID and NvLink ID for a link.
    [-sc | --setcontrol]: Setting counter control is deprecated!
    [-gc | --getcontrol]: Getting counter control is deprecated!
    [-g | --getcounters]: Getting counters using option -g is deprecated.
Please use option -gt/--getthroughput instead.
    [-r | --resetcounters]: Resetting counters is deprecated!
    [-e | --errorcounters]: Display error counters for a link.
    [-ec | --crcerrorcounters]: Display per-lane CRC error counters for a link.
    [-re | --reseterrorcounters]: Reset all error counters to zero.
    [-gt | --getthroughput]: Display link throughput counters for specified counter type
       The arguments consist of character string representing the type of traffic counted:
          d: Display tx and rx data payload in KiB
          r: Display tx and rx data payload and protocol overhead in KiB if supported