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,从而满足最大视觉计算工作负载的需求。
NVLink性能
NVLink规格
第二代 | 第三代 | 第四代 | |
---|---|---|---|
NVLink 总带宽 | 300GB/s | 600GB/s | 900GB/s |
每个 GPU 最大链路数 | 6 | 12 | 18 |
NVIDIA 架构支持 | NVIDIA Volta™ 架构 | NVIDIA Ampere 架构 | NVIDIA Hopper™ 架构 |
nvidia-smi nvlink各参数详解
-i 指定 GPU 的标识
GPU 设备的自然枚举序号,PCI 总线地址,或者UUID
运行示例
查看 0 号 GPU 的 UUID 值
nvidia-smi nvlink -i 0
可以看到 0 号 GPU 的驱逐状态是 不驱
-l 指定 link 序号,
将命令限制到特定链接。
注意:
如果没有此标志,将显示所有链接信息。
运行示例
修改 0 号 GPU 的 0 号 link 的链接状态
nvidia-smi nvlink -i 0 -l 0 -s
可以看到, 0 号 GPU 的 0 号 link 的链接状态为 25 GB/s。
如果不指定 link 参数执行相同命令
nvidia-smi nvlink -i 0 -s
可以看到,不指定-l参数时,展示 0 ~ 11 号所有的 link 的状态信息。
-s 显示链接状态(活动/非活动)
显示链接状态(活动/非活动)。
运行示例
查询 1 号 GPU 的 link 状态
执行
nvidia-smi nvlink -i 1 -s
看到 1 号 GPU 的 0 ~ 11 号所有的 link 的状态信息均为 25 GB/s。
-c 显示 链接 支持的能力列表
显示链接支持的功能
运行示例
显示 0 号 GPU 设备的 1 号 link 支持的能力列表
执行
nvidia-smi nvlink -i 0 -l 1 -c
可以看到,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
可以看到, 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
可以看到, 0 号 GPU 的 0 号链接的远程节点 PCI 总线 ID 为0000:6D:04.0,NvLink ID 为 34。
-sc 不推荐设置计数器控制
此功能已弃用,执行
nvidia-smi nvlink -sc 0
将返回警告,说明此功能已废弃。
-gc 不推荐使用计数器控制
此功能已弃用,执行
nvidia-smi nvlink -gc 0
将返回警告,说明此功能已废弃。
-g 不推荐使用选项 -g 获取计数器。
此功能已弃用,执行
nvidia-smi nvlink -g 0
将返回警告,说明此功能已废弃。
请使用 -gt 选项替代。
-r 不推荐重置计数器
此功能已弃用,执行
nvidia-smi nvlink -r 0
将返回警告,说明此功能已废弃。
-e 显示链接的错误计数器
显示链接的错误计数器
运行示例
显示 0 号 GPU 设备的 1 号 link 的错误计数器
执行
nvidia-smi nvlink -i 0 -l 1 -e
可以看到,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
可以看到,0 号 GPU 的 1 号 链路的 通道0~3 CRC 错误计数器为 0 (溢出 0)
-re 将所有错误计数器重置为零
将所有错误计数器重置为零
运行示例
显示 0 号 GPU 设备的 1 号 链路 的 所有错误计数器重置为零
执行
nvidia-smi nvlink -i 0 -l 1 -re
可以看到,0 号 GPU 的 1 号 链路的错误计数器已经重置为零
-gt 显示指定计数器类型的链路吞吐量计数器
显示指定计数器类型的链路吞吐量计数器
参数由表示计数的流量类型的字符串组成:
-
d:以 KiB 显示 tx 和 rx 数据有效负载
-
r:如果支持,以 KiB 显示 tx 和 rx 数据有效负载和协议开销
运行示例
显示 0 号 GPU 设备的所有 链路 的 吞吐量计数器的数据有效载荷
执行
nvidia-smi nvlink -i 0 -gt d
可以看到,0 号 GPU 的 0~11 号 链路 的
-
发送 数据有效载荷均在 11378335576 KiB 左右
-
接收 数据有效载荷均在 10397577348 KiB 左右
显示 0 号 GPU 设备的所有 链路 的 吞吐量计数器的 原始数据(包含有效载荷和协议开销)
执行
nvidia-smi nvlink -i 0 -gt r
可以看到,0 号 GPU 的 0~11 号 链路 的
-
发送 数据有效载荷 + 协议开销 均在 20060529462 KiB 左右
-
接收 数据有效载荷 + 协议开销 均在 20027235760 KiB 左右
-h 打印帮助信息
运行示例
展示 nvidia-smi nvlink 的帮助信息
nvidia-smi nvlink -h
对应内容如下:
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