2.17. NvLink Methods
This chapter describes methods that NVML can perform on NVLINK enabled devices.
Functions
- 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 nvmlDeviceResetNvLinkErrorCounters ( nvmlDevice_t device, unsigned int link )
- nvmlReturn_t nvmlDeviceResetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter )
- nvmlReturn_t nvmlDeviceSetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control, unsigned int reset )
Functions
- nvmlReturn_t nvmlDeviceFreezeNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlEnableState_t freeze )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- counter
- Specifies the counter that should be frozen (0 or 1).
- freeze
- NVML_FEATURE_ENABLED = freeze the receive and transmit counters NVML_FEATURE_DISABLED = unfreeze the receive and transmit counters
Returns
- NVML_SUCCESS if counters were successfully frozen or unfrozen
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, link, counter, or freeze is invalid
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Deprecated: Freezing NVLINK utilization counters is no longer supported.
Freeze the NVLINK utilization counters Both the receive and transmit counters are operated on by this function
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkCapability ( nvmlDevice_t device, unsigned int link, nvmlNvLinkCapability_t capability, unsigned int* capResult )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- capability
- Specifies the nvmlNvLinkCapability_t to be queried
- capResult
- A boolean for the queried capability indicating that feature is available
Returns
- NVML_SUCCESS if capResult has been set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, link, or capability is invalid or capResult is NULL
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Retrieves the requested capability from the device's NvLink for the link specified Please refer to the nvmlNvLinkCapability_t structure for the specific caps that can be queried The return value should be treated as a boolean.
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkErrorCounter ( nvmlDevice_t device, unsigned int link, nvmlNvLinkErrorCounter_t counter, unsigned long long* counterValue )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- counter
- Specifies the NvLink counter to be queried
- counterValue
- Returned counter value
Returns
- NVML_SUCCESS if counter has been set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, link, or counter is invalid or counterValue is NULL
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Retrieves the specified error counter value Please refer to nvmlNvLinkErrorCounter_t for error counters that are available
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkRemoteDeviceType ( nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t* pNvLinkDeviceType )
-
Parameters
- device
- The device handle of the target GPU
- link
- The NVLink link index on the target GPU
- pNvLinkDeviceType
- Pointer in which the output remote device type is returned
Returns
- NVML_SUCCESS if pNvLinkDeviceType has been set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_NOT_SUPPORTED if NVLink is not supported
- NVML_ERROR_INVALID_ARGUMENT if device or link is invalid, or pNvLinkDeviceType is NULL
- NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Get the NVLink device type of the remote device connected over the given link.
- nvmlReturn_t nvmlDeviceGetNvLinkRemotePciInfo_v2 ( nvmlDevice_t device, unsigned int link, nvmlPciInfo_t* pci )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- pci
- nvmlPciInfo_t of the remote node for the specified link
Returns
- NVML_SUCCESS if pci has been set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device or link is invalid or pci is NULL
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Retrieves the PCI information for the remote node on a NvLink link Note: pciSubSystemId is not filled in this function and is indeterminate
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkState ( nvmlDevice_t device, unsigned int link, nvmlEnableState_t* isActive )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- isActive
- nvmlEnableState_t where NVML_FEATURE_ENABLED indicates that the link is active and NVML_FEATURE_DISABLED indicates it is inactive
Returns
- NVML_SUCCESS if isActive has been set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device or link is invalid or isActive is NULL
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Retrieves the state of the device's NvLink for the link specified
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- counter
- Specifies the counter that should be set (0 or 1).
- control
- A reference to the nvmlNvLinkUtilizationControl_t to place information
Returns
- NVML_SUCCESS if the control has been set successfully
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, counter, link, or control is invalid
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Deprecated: Getting utilization counter control is no longer supported.
Get the NVLINK utilization counter control information for the specified counter, 0 or 1. Please refer to nvmlNvLinkUtilizationControl_t for the structure definition
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter, unsigned long long* rxcounter, unsigned long long* txcounter )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- counter
- Specifies the counter that should be read (0 or 1).
- rxcounter
- Receive counter return value
- txcounter
- Transmit counter return value
Returns
- NVML_SUCCESS if rxcounter and txcounter have been successfully set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, counter, or link is invalid or rxcounter or txcounter are NULL
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Deprecated: Use nvmlDeviceGetFieldValues with NVML_FI_DEV_NVLINK_THROUGHPUT_* as field values instead.
Retrieve the NVLINK utilization counter based on the current control for a specified counter. In general it is good practice to use nvmlDeviceSetNvLinkUtilizationControl before reading the utilization counters as they have no default state
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceGetNvLinkVersion ( nvmlDevice_t device, unsigned int link, unsigned int* version )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- version
- Requested NvLink version
Returns
- NVML_SUCCESS if version has been set
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device or link is invalid or version is NULL
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Retrieves the version of the device's NvLink for the link specified
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceResetNvLinkErrorCounters ( nvmlDevice_t device, unsigned int link )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
Returns
- NVML_SUCCESS if the reset is successful
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device or link is invalid
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Resets all error counters to zero Please refer to nvmlNvLinkErrorCounter_t for the list of error counters that are reset
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceResetNvLinkUtilizationCounter ( nvmlDevice_t device, unsigned int link, unsigned int counter )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be reset
- counter
- Specifies the counter that should be reset (0 or 1)
Returns
- NVML_SUCCESS if counters were successfully reset
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, link, or counter is invalid
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Deprecated: Resetting NVLINK utilization counters is no longer supported.
Reset the NVLINK utilization counters Both the receive and transmit counters are operated on by this function
For Pascal or newer fully supported devices.
- nvmlReturn_t nvmlDeviceSetNvLinkUtilizationControl ( nvmlDevice_t device, unsigned int link, unsigned int counter, nvmlNvLinkUtilizationControl_t* control, unsigned int reset )
-
Parameters
- device
- The identifier of the target device
- link
- Specifies the NvLink link to be queried
- counter
- Specifies the counter that should be set (0 or 1).
- control
- A reference to the nvmlNvLinkUtilizationControl_t to set
- reset
- Resets the counters on set if non-zero
Returns
- NVML_SUCCESS if the control has been set successfully
- NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized
- NVML_ERROR_INVALID_ARGUMENT if device, counter, link, or control is invalid
- NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature
- NVML_ERROR_UNKNOWN on any unexpected error
Description
Deprecated: Setting utilization counter control is no longer supported.
Set the NVLINK utilization counter control information for the specified counter, 0 or 1. Please refer to nvmlNvLinkUtilizationControl_t for the structure definition. Performs a reset of the counters if the reset parameter is non-zero.
For Pascal or newer fully supported devices.