4.19. NvLink 方法
本章介绍 NVML 可以在支持 NVLINK 的设备上执行的方法。
函数
- nvmlReturn_t nvmlDeviceFreezeNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlEnableState_t freeze )
- nvmlReturn_t nvmlDeviceGetNvLinkCapability ( nvmlDevice_t device, unsigned int link, nvmlNvLinkCapability_t capability, unsigned int* capResult )
- nvmlReturn_t nvmlDeviceGetNvLinkErrorCounter ( nvmlDevice_t device, unsigned int link, nvmlNvLinkErrorCounter_t counter, unsigned long long* counterValue )
- nvmlReturn_t nvmlDeviceGetNvLinkRemoteDeviceType ( nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t* pNvLinkDeviceType )
- nvmlReturn_t nvmlDeviceGetNvLinkRemotePciInfo_v2 ( nvmlDevice_t device, unsigned int link, nvmlPciInfo_t* pci )
- nvmlReturn_t nvmlDeviceGetNvLinkState ( nvmlDevice_t device, unsigned int link, nvmlEnableState_t* isActive )
- nvmlReturn_t nvmlDeviceGetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control )
- nvmlReturn_t nvmlDeviceGetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter, unsigned long long* rxcounter, unsigned long long* txcounter )
- nvmlReturn_t nvmlDeviceGetNvLinkVersion ( nvmlDevice_t device, unsigned int link, unsigned int* version )
- nvmlReturn_t nvmlDeviceGetNvlinkBwMode ( nvmlDevice_t device, nvmlNvlinkGetBwMode_t* getBwMode )
- nvmlReturn_t nvmlDeviceGetNvlinkSupportedBwModes ( nvmlDevice_t device, nvmlNvlinkSupportedBwModes_t* supportedBwMode )
- nvmlReturn_t nvmlDeviceResetNvLinkErrorCounters ( nvmlDevice_t device, unsigned int link )
- nvmlReturn_t nvmlDeviceResetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter )
- nvmlReturn_t nvmlDeviceSetNvLinkDeviceLowPowerThreshold ( nvmlDevice_t device, nvmlNvLinkPowerThres_t* info )
- nvmlReturn_t nvmlDeviceSetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control, unsigned int reset )
- nvmlReturn_t nvmlDeviceSetNvlinkBwMode ( nvmlDevice_t device, nvmlNvlinkSetBwMode_t* setBwMode )
- nvmlReturn_t nvmlSystemGetNvlinkBwMode ( unsigned int* nvlinkBwMode )
- nvmlReturn_t nvmlSystemSetNvlinkBwMode ( unsigned int nvlinkBwMode )
函数
- nvmlReturn_t nvmlDeviceFreezeNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlEnableState_t freeze )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- counter
- 指定应冻结的计数器(0 或 1)。
- freeze
- NVML_FEATURE_ENABLED = 冻结接收和发送计数器 NVML_FEATURE_DISABLED = 解冻接收和发送计数器
返回值
- NVML_SUCCESS 如果计数器已成功冻结或解冻
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、link、counter 或 freeze 无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
已弃用:不再支持冻结 NVLINK 利用率计数器。
冻结 NVLINK 利用率计数器。接收和发送计数器都由此函数操作
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkCapability ( nvmlDevice_t device, unsigned int link, nvmlNvLinkCapability_t capability, unsigned int* capResult )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- capability
- 指定要查询的 nvmlNvLinkCapability_t
- capResult
- 查询功能是否可用的布尔值
返回值
- NVML_SUCCESS 如果已设置 capResult
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、link 或 capability 无效,或者 capResult 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
检索指定链路的设备 NvLink 中的请求功能。有关可以查询的特定功能,请参阅 nvmlNvLinkCapability_t 结构。返回值应被视为布尔值。
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkErrorCounter ( nvmlDevice_t device, unsigned int link, nvmlNvLinkErrorCounter_t counter, unsigned long long* counterValue )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- counter
- 指定要查询的 NvLink 计数器
- counterValue
- 返回的计数器值
返回值
- NVML_SUCCESS 如果已设置计数器
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、link 或 counter 无效,或者 counterValue 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
检索指定的错误计数器值。有关可用的错误计数器,请参阅 nvmlNvLinkErrorCounter_t
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkRemoteDeviceType ( nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t* pNvLinkDeviceType )
-
参数
- device
- 目标 GPU 的设备句柄
- link
- 目标 GPU 上的 NVLink 链路索引
- pNvLinkDeviceType
- 用于返回输出远程设备类型的指针
返回值
- NVML_SUCCESS 如果已设置 pNvLinkDeviceType
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_NOT_SUPPORTED 如果不支持 NVLink
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 link 无效,或者 pNvLinkDeviceType 为 NULL
- NVML_ERROR_GPU_IS_LOST 如果目标 GPU 已从总线上脱落或无法访问
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
获取通过给定链路连接的远程设备的 NVLink 设备类型。
- nvmlReturn_t nvmlDeviceGetNvLinkRemotePciInfo_v2 ( nvmlDevice_t device, unsigned int link, nvmlPciInfo_t* pci )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- pci
- 指定链路的远程节点的 nvmlPciInfo_t
返回值
- NVML_SUCCESS 如果已设置 pci
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 link 无效,或者 pci 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
检索 NvLink 链路上的远程节点的 PCI 信息。注意:pciSubSystemId 在此函数中未填充,并且是不确定的
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkState ( nvmlDevice_t device, unsigned int link, nvmlEnableState_t* isActive )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- isActive
- nvmlEnableState_t,其中 NVML_FEATURE_ENABLED 表示链路处于活动状态,NVML_FEATURE_DISABLED 表示链路处于非活动状态
返回值
- NVML_SUCCESS 如果已设置 isActive
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 link 无效,或者 isActive 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
检索指定链路的设备 NvLink 的状态
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- counter
- 指定应设置的计数器(0 或 1)。
- control
- 对 nvmlNvLinkUtilizationControl_t 的引用,用于放置信息
返回值
- NVML_SUCCESS 如果已成功设置控制
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、counter、link 或 control 无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
已弃用:不再支持获取利用率计数器控制。
获取指定计数器(0 或 1)的 NVLINK 利用率计数器控制信息。有关结构定义,请参阅 nvmlNvLinkUtilizationControl_t
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter, unsigned long long* rxcounter, unsigned long long* txcounter )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- counter
- 指定应读取的计数器(0 或 1)。
- rxcounter
- 接收计数器返回值
- txcounter
- 发送计数器返回值
返回值
- NVML_SUCCESS 如果已成功设置 rxcounter 和 txcounter
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、counter 或 link 无效,或者 rxcounter 或 txcounter 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
已弃用:请改用 nvmlDeviceGetFieldValues 以及 NVML_FI_DEV_NVLINK_THROUGHPUT_* 作为字段值。
根据指定计数器的当前控制检索 NVLINK 利用率计数器。通常,最好在读取利用率计数器之前使用 nvmlDeviceSetNvLinkUtilizationControl,因为它们没有默认状态
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvLinkVersion ( nvmlDevice_t device, unsigned int link, unsigned int* version )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- version
- 从 nvmlNvlinkVersion_t 请求的 NvLink 版本
返回值
- NVML_SUCCESS 如果已设置版本
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 link 无效,或者 version 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
检索指定链路的设备 NvLink 的版本
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceGetNvlinkBwMode ( nvmlDevice_t device, nvmlNvlinkGetBwMode_t* getBwMode )
-
参数
- device
- 目标设备的标识符
- getBwMode
- 对 nvmlNvlinkGetBwMode_t 的引用
返回值
- NVML_SUCCESS 如果查询成功
- NVML_ERROR_INVALID_ARGUMENT 如果 device 无效,或者 getBwMode 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果指定的版本不受支持
描述
获取设备的 NvLink 降低带宽模式
BLACKWELL_OR_NEWER%
- nvmlReturn_t nvmlDeviceGetNvlinkSupportedBwModes ( nvmlDevice_t device, nvmlNvlinkSupportedBwModes_t* supportedBwMode )
-
参数
- device
- 目标设备的标识符
- supportedBwMode
- 对 nvmlNvlinkSupportedBwModes_t 的引用
返回值
- NVML_SUCCESS 如果查询成功
- NVML_ERROR_INVALID_ARGUMENT 如果 device 无效,或者 supportedBwMode 为 NULL
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果指定的版本不受支持
描述
获取设备支持的 NvLink 降低带宽模式
BLACKWELL_OR_NEWER%
- nvmlReturn_t nvmlDeviceResetNvLinkErrorCounters ( nvmlDevice_t device, unsigned int link )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
返回值
- NVML_SUCCESS 如果重置成功
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 或 link 无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
将所有错误计数器重置为零。有关重置的错误计数器列表,请参阅 nvmlNvLinkErrorCounter_t
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceResetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter )
-
参数
- device
- 目标设备的标识符
- link
- 指定要重置的 NvLink 链路
- counter
- 指定应重置的计数器(0 或 1)
返回值
- NVML_SUCCESS 如果计数器已成功重置
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、link 或 counter 无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
已弃用:不再支持重置 NVLINK 利用率计数器。
重置 NVLINK 利用率计数器。接收和发送计数器都由此函数操作
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceSetNvLinkDeviceLowPowerThreshold ( nvmlDevice_t device, nvmlNvLinkPowerThres_t* info )
-
参数
- device
- 目标设备的标识符
- info
- 对 nvmlNvLinkPowerThres_t 结构输入参数的引用
返回值
- NVML_SUCCESS 如果已成功设置阈值
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device 无效或阈值超出范围
- NVML_ERROR_NOT_READY 如果内部驱动程序设置阻止使用阈值
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此查询
描述
为设备设置 NvLink 低功耗阈值。
适用于 Hopper 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceSetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control, unsigned int reset )
-
参数
- device
- 目标设备的标识符
- link
- 指定要查询的 NvLink 链路
- counter
- 指定应设置的计数器(0 或 1)。
- control
- 对要设置的 nvmlNvLinkUtilizationControl_t 的引用
- reset
- 如果非零,则在设置时重置计数器
返回值
- NVML_SUCCESS 如果已成功设置控制
- NVML_ERROR_UNINITIALIZED 如果库未成功初始化
- NVML_ERROR_INVALID_ARGUMENT 如果 device、counter、link 或 control 无效
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_UNKNOWN 如果发生任何意外错误
描述
已弃用:不再支持设置利用率计数器控制。
为指定计数器(0 或 1)设置 NVLINK 利用率计数器控制信息。有关结构定义,请参阅 nvmlNvLinkUtilizationControl_t。如果 reset 参数非零,则执行计数器重置。
适用于 Pascal 或更新的完全受支持的设备。
- nvmlReturn_t nvmlDeviceSetNvlinkBwMode ( nvmlDevice_t device, nvmlNvlinkSetBwMode_t* setBwMode )
-
参数
- device
- 目标设备的标识符
- setBwMode
- 对 nvmlNvlinkSetBwMode_t 的引用
返回值
- NVML_SUCCESS 如果已成功设置带宽模式
- NVML_ERROR_INVALID_ARGUMENT 如果 device 无效,或者 setBwMode 为 NULL
- NVML_ERROR_NO_PERMISSION 如果用户没有更改带宽模式的权限
- NVML_ERROR_NOT_SUPPORTED 如果设备不支持此功能
- NVML_ERROR_ARGUMENT_VERSION_MISMATCH 如果指定的版本不受支持
描述
为设备设置 NvLink 降低带宽模式
BLACKWELL_OR_NEWER%
- nvmlReturn_t nvmlSystemGetNvlinkBwMode ( unsigned int* nvlinkBwMode )
-
参数
- nvlinkBwMode
- nvlink 带宽模式的引用
返回值
- NVML_SUCCESS 成功时
- NVML_ERROR_INVALID_ARGUMENT 如果提供了无效指针
- NVML_ERROR_NOT_SUPPORTED 如果 GPU 不是 Hopper 或更新的架构。
- NVML_ERROR_NO_PERMISSION 如果不是 root 用户
描述
获取全局 nvlink 带宽模式
- nvmlReturn_t nvmlSystemSetNvlinkBwMode ( unsigned int nvlinkBwMode )
-
参数
- nvlinkBwMode
- nvlink 带宽模式
返回值
- NVML_SUCCESS 成功时
- NVML_ERROR_INVALID_ARGUMENT 如果提供了无效参数
- NVML_ERROR_IN_USE 如果 P2P 对象存在
- NVML_ERROR_NOT_SUPPORTED 如果 GPU 不是 Hopper 或更新的架构。
- NVML_ERROR_NO_PERMISSION 如果不是 root 用户
描述
设置全局 nvlink 带宽模式