NVML API 参考指南 (PDF) - vR570 (更旧版本) - 最后更新于 2025 年 1 月 29 日 - 发送反馈

4.18. 设备命令

本章介绍更改设备状态的 NVML 操作。 其中每一项都需要 root/admin 访问权限。 非管理员用户在调用任何这些方法时将看到 NVML_ERROR_NO_PERMISSION 错误代码。

函数

nvmlReturn_t nvmlDeviceClearEccErrorCounts ( nvmlDevice_t device, nvmlEccCounterType_t counterType )
nvmlReturn_t nvmlDeviceResetApplicationsClocks ( nvmlDevice_t device )
nvmlReturn_t nvmlDeviceResetGpuLockedClocks ( nvmlDevice_t device )
nvmlReturn_t nvmlDeviceResetMemoryLockedClocks ( nvmlDevice_t device )
nvmlReturn_t nvmlDeviceSetAPIRestriction ( nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted )
nvmlReturn_t nvmlDeviceSetApplicationsClocks ( nvmlDevice_t device, unsigned int  memClockMHz, unsigned int  graphicsClockMHz )
nvmlReturn_t nvmlDeviceSetAutoBoostedClocksEnabled ( nvmlDevice_t device, nvmlEnableState_t enabled )
nvmlReturn_t nvmlDeviceSetComputeMode ( nvmlDevice_t device, nvmlComputeMode_t mode )
nvmlReturn_t nvmlDeviceSetDefaultAutoBoostedClocksEnabled ( nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int  flags )
nvmlReturn_t nvmlDeviceSetDefaultFanSpeed_v2 ( nvmlDevice_t device, unsigned int  fan )
nvmlReturn_t nvmlDeviceSetDriverModel ( nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int  flags )
nvmlReturn_t nvmlDeviceSetEccMode ( nvmlDevice_t device, nvmlEnableState_t ecc )
nvmlReturn_t nvmlDeviceSetFanControlPolicy ( nvmlDevice_t device, unsigned int  fan, nvmlFanControlPolicy_t policy )
nvmlReturn_t nvmlDeviceSetFanSpeed_v2 ( nvmlDevice_t device, unsigned int  fan, unsigned int  speed )
nvmlReturn_t nvmlDeviceSetGpcClkVfOffset ( nvmlDevice_t device, int  offset )
nvmlReturn_t nvmlDeviceSetGpuLockedClocks ( nvmlDevice_t device, unsigned int  minGpuClockMHz, unsigned int  maxGpuClockMHz )
nvmlReturn_t nvmlDeviceSetGpuOperationMode ( nvmlDevice_t device, nvmlGpuOperationMode_t mode )
nvmlReturn_t nvmlDeviceSetMemClkVfOffset ( nvmlDevice_t device, int  offset )
nvmlReturn_t nvmlDeviceSetMemoryLockedClocks ( nvmlDevice_t device, unsigned int  minMemClockMHz, unsigned int  maxMemClockMHz )
nvmlReturn_t nvmlDeviceSetPersistenceMode ( nvmlDevice_t device, nvmlEnableState_t mode )
nvmlReturn_t nvmlDeviceSetPowerManagementLimit ( nvmlDevice_t device, unsigned int  limit )
nvmlReturn_t nvmlDeviceSetTemperatureThreshold ( nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, int* temp )

函数

nvmlReturn_t nvmlDeviceClearEccErrorCounts ( nvmlDevice_t device, nvmlEccCounterType_t counterType )
参数
device
目标设备的标识符
counterType
指示应清除哪种类型错误的标志。
返回值

描述

清除设备的 ECC 错误和其他内存错误计数。

适用于 Kepler 或更新的完全支持的设备。 仅适用于具有 ECC 的设备。 需要 NVML_INFOROM_ECC 版本 2.0 或更高版本才能清除基于位置的聚合 ECC 计数。 需要 NVML_INFOROM_ECC 版本 1.0 或更高版本才能清除所有其他 ECC 计数。 需要 root/admin 权限。 需要启用 ECC 模式。

将所有指定的 ECC 计数器设置为 0,包括详细计数和总计数。

此操作立即生效。

有关可用计数器类型的详细信息,请参阅 nvmlMemoryErrorType_t

另请参阅

nvmlReturn_t nvmlDeviceResetApplicationsClocks ( nvmlDevice_t device )
参数
device
目标设备的标识符
返回值

描述

将应用程序时钟重置为默认值

这是系统重启或驱动程序重新加载后将使用的应用程序时钟。 默认值是恒定的,但可以使用 nvmlDeviceSetApplicationsClocks 更改当前值。

在 Pascal 及更新的硬件上,如果时钟之前已使用 nvmlDeviceSetApplicationsClocks 锁定,则此调用将解锁时钟。 这会使时钟恢复其默认行为,即在热限制允许的情况下自动提升到基本时钟之上。

另请参阅

nvmlDeviceGetApplicationsClock

nvmlDeviceSetApplicationsClocks

适用于 Fermi 或更新的非 GeForce 完全支持的设备以及 Maxwell 或更新的 GeForce 设备。

nvmlReturn_t nvmlDeviceResetGpuLockedClocks ( nvmlDevice_t device )
参数
device
目标设备的标识符
返回值

描述

将 GPU 时钟重置为默认值

这是系统重启或驱动程序重新加载后将使用的 GPU 时钟。 默认值是空闲时钟,但可以使用 nvmlDeviceSetApplicationsClocks 更改当前值。

另请参阅

nvmlDeviceSetGpuLockedClocks

适用于 Volta 或更新的完全支持的设备。

nvmlReturn_t nvmlDeviceResetMemoryLockedClocks ( nvmlDevice_t device )
参数
device
目标设备的标识符
返回值

描述

将内存时钟重置为默认值

这是系统重启或驱动程序重新加载后将使用的内存时钟。 默认值是空闲时钟,但可以使用 nvmlDeviceSetApplicationsClocks 更改当前值。

另请参阅

nvmlDeviceSetMemoryLockedClocks

适用于 Ampere 或更新的完全支持的设备。

nvmlReturn_t nvmlDeviceSetAPIRestriction ( nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted )
参数
device
目标设备的标识符
apiType
此操作的目标 API 类型
isRestricted
目标限制
返回值

描述

更改某些 API 的 root/admin 限制。 有关支持的 API 列表,请参阅 nvmlRestrictedAPI_t。 root/admin 用户可以使用此方法为非 root/admin 用户提供对某些原本受限的 API 的访问权限。 新设置在 NVIDIA 驱动程序的生命周期内有效; 它不是持久的。 请参阅 nvmlDeviceGetAPIRestriction 以查询当前限制设置。

适用于 Kepler 或更新的完全支持的设备。 需要 root/admin 权限。

另请参阅

nvmlRestrictedAPI_t

nvmlReturn_t nvmlDeviceSetApplicationsClocks ( nvmlDevice_t device, unsigned int  memClockMHz, unsigned int  graphicsClockMHz )
参数
device
目标设备的标识符
memClockMHz
请求的内存时钟频率,单位为 MHz
graphicsClockMHz
请求的图形时钟频率,单位为 MHz
返回值

描述

设置应用程序将锁定的时钟。

设置计算和图形应用程序将运行的时钟。 例如,CUDA 驱动程序在上下文创建期间请求这些时钟,这意味着此属性定义 CUDA 应用程序将运行的时钟,除非发生某些超规格事件(例如,功率过高、温度过高或外部硬件制动)。

可用作请求恒定性能的设置。

在 Pascal 及更新的硬件上,这将自动禁用时钟的自动加速。

在 K80 及更新的 Kepler 和 Maxwell GPU 上,希望获得固定性能的用户还应调用 nvmlDeviceSetAutoBoostedClocksEnabled,以防止时钟自动加速到设置的时钟值之上。

适用于 Kepler 或更新的非 GeForce 完全支持的设备以及 Maxwell 或更新的 GeForce 设备。 需要 root/admin 权限。

有关如何列出可用时钟组合的详细信息,请参阅 nvmlDeviceGetSupportedMemoryClocksnvmlDeviceGetSupportedGraphicsClocks

系统重启或驱动程序重新加载后,应用程序时钟将恢复为其默认值。 请参阅 nvmlDeviceResetApplicationsClocks

nvmlReturn_t nvmlDeviceSetAutoBoostedClocksEnabled ( nvmlDevice_t device, nvmlEnableState_t enabled )
参数
device
目标设备的标识符
enabled
要尝试将目标设备的自动加速时钟设置为的状态
返回值

描述

尝试设置设备上自动加速时钟的当前状态。

适用于 Kepler 或更新的完全支持的设备。

默认情况下,某些硬件上启用了自动加速时钟,允许 GPU 以更高的时钟速率运行,从而在热限制允许的情况下最大限度地提高性能。 如果需要固定时钟速率,则应禁用自动加速时钟。

默认情况下,非 root 用户可以使用此 API,但 root 用户可以通过调用 nvmlDeviceSetAPIRestriction 并将 apiType=NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS 设置为限制非 root 用户使用此 API。 注意:修改当前自动加速设置需要持久模式,因此必须启用持久模式。

在 Pascal 及更新的硬件上,自动加速时钟通过应用程序时钟进行控制。 使用 nvmlDeviceSetApplicationsClocksnvmlDeviceResetApplicationsClocks 来控制自动加速行为。

nvmlReturn_t nvmlDeviceSetComputeMode ( nvmlDevice_t device, nvmlComputeMode_t mode )
参数
device
目标设备的标识符
mode
目标计算模式
返回值

描述

设置设备的计算模式。

适用于所有产品。 需要 root/admin 权限。

计算模式确定 GPU 是否可用于计算操作以及是否可以在上下文之间共享。

此操作立即生效。 在 Linux 下,它不会跨重启持久存在,并且始终重置为“默认”。 在 Windows 下,它是持久的。

在 Windows 下,仅当在 WDDM 中运行时,计算模式才能设置为 DEFAULT

注意

在启用 MIG 的 GPU 上,计算模式将设置为 DEFAULT,并且不支持更改它。

有关可用计算模式的详细信息,请参阅 nvmlComputeMode_t

另请参阅

nvmlDeviceGetComputeMode()

nvmlReturn_t nvmlDeviceSetDefaultAutoBoostedClocksEnabled ( nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int  flags )
参数
device
目标设备的标识符
enabled
要尝试将目标设备的默认自动加速时钟设置为的状态
flags
更改默认行为的标志。 当前未使用。
返回值

描述

尝试设置设备上自动加速时钟的默认状态。 这是当没有计算运行进程(例如,具有活动上下文的 CUDA 应用程序)运行时,自动加速时钟将返回到的默认状态

适用于 Kepler 或更新的非 GeForce 完全支持的设备以及 Maxwell 或更新的 GeForce 设备。 需要 root/admin 权限。

默认情况下,某些硬件上启用了自动加速时钟,允许 GPU 以更高的时钟速率运行,从而在热限制允许的情况下最大限度地提高性能。 如果需要固定时钟速率,则应禁用自动加速时钟。

在 Pascal 及更新的硬件上,自动加速时钟通过应用程序时钟进行控制。 使用 nvmlDeviceSetApplicationsClocksnvmlDeviceResetApplicationsClocks 来控制自动加速行为。

nvmlReturn_t nvmlDeviceSetDefaultFanSpeed_v2 ( nvmlDevice_t device, unsigned int  fan )
参数
device
目标设备的标识符
fan
风扇的索引,从零开始
描述

将风扇控制策略的速度设置为默认值。

适用于所有带风扇的 CUDA 功能独立显卡产品

如果速度已调整,则返回 NVML_SUCCESS 如果库尚未成功初始化,则返回 NVML_ERROR_UNINITIALIZED 如果 device 无效,则返回 NVML_ERROR_INVALID_ARGUMENT 如果设备不支持此功能(没有风扇),则返回 NVML_ERROR_NOT_SUPPORTED 发生任何意外错误时,返回 NVML_ERROR_UNKNOWN

nvmlReturn_t nvmlDeviceSetDriverModel ( nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int  flags )
参数
device
目标设备的标识符
driverModel
目标驱动程序模型
flags
更改默认行为的标志
返回值

描述

设置设备的驱动程序模型。

适用于 Fermi 或更新的完全支持的设备。 仅适用于 Windows。 需要 root/admin 权限。

在 Windows 平台上,设备驱动程序可以在 WDDM 或 WDM (TCC) 模式下运行。 如果显示器连接到设备,则必须在 WDDM 模式下运行。

即使显示器仍连接,也可以使用强制标志 (nvmlFlagForce) 强制更改为 WDM (TCC)。 仅当主机随后断电并且在下次重启之前显示器与设备分离时,才应执行此操作。

此操作在下次重启后生效。

当在 DEFAULT 计算模式下运行时,Windows 驱动程序模型只能设置为 WDDM。

当 GPU 不支持图形加速或重启后将不支持图形加速时,不支持将驱动程序模型更改为 WDDM。 请参阅 nvmlDeviceSetGpuOperationMode

有关可用驱动程序模型的详细信息,请参阅 nvmlDriverModel_t。 请参阅 nvmlFlagDefaultnvmlFlagForce

另请参阅

nvmlDeviceGetDriverModel()

nvmlReturn_t nvmlDeviceSetEccMode ( nvmlDevice_t device, nvmlEnableState_t ecc )
参数
device
目标设备的标识符
ecc
目标 ECC 模式
返回值

描述

设置设备的 ECC 模式。

适用于 Kepler 或更新的完全支持的设备。 仅适用于具有 ECC 的设备。 需要 NVML_INFOROM_ECC 版本 1.0 或更高版本。 需要 root/admin 权限。

ECC 模式确定 GPU 是否启用其 ECC 支持。

此操作在下次重启后生效。

有关可用模式的详细信息,请参阅 nvmlEnableState_t

另请参阅

nvmlDeviceGetEccMode()

nvmlReturn_t nvmlDeviceSetFanControlPolicy ( nvmlDevice_t device, unsigned int  fan, nvmlFanControlPolicy_t policy )
描述

设置当前风扇控制策略。

适用于 Maxwell 或更新的完全支持的设备。

需要特权用户。

适用于所有带风扇的 CUDA 功能独立显卡产品

device 目标设备的标识符 policy 要设置的风扇控制策略

如果已设置策略,则返回 NVML_SUCCESS 如果库尚未成功初始化,则返回 NVML_ERROR_UNINITIALIZED 如果 device 无效或 policy 为 null,或者给定的风扇未引用存在的风扇,则返回 NVML_ERROR_INVALID_ARGUMENT 如果设备早于 Maxwell,则返回 NVML_ERROR_NOT_SUPPORTED 发生任何意外错误时,返回 NVML_ERROR_UNKNOWN

nvmlReturn_t nvmlDeviceSetFanSpeed_v2 ( nvmlDevice_t device, unsigned int  fan, unsigned int  speed )
描述

设置指定风扇的速度。

警告:此函数将风扇控制策略更改为手动。 这意味着您必须监控温度并相应地调整风扇速度。 如果您将风扇速度设置得太低,可能会烧坏 GPU! 使用 nvmlDeviceSetDefaultFanSpeed_v2 恢复默认控制策略。

适用于所有配备风扇的 Maxwell 或更新的 CUDA 功能独立显卡产品。

device 目标设备的标识符 fan 风扇的索引,从零开始 speed 目标风扇速度,占最大速度的百分比 [0-100]

如果已设置风扇速度,则返回 NVML_SUCCESS 如果库尚未成功初始化,则返回 NVML_ERROR_UNINITIALIZED 如果 device 无效,或者速度超出可接受范围,或者如果风扇索引未引用实际风扇,则返回 NVML_ERROR_INVALID_ARGUMENT 如果设备早于 Maxwell,则返回 NVML_ERROR_NOT_SUPPORTED 如果发生意外错误,则返回 NVML_ERROR_UNKNOWN。

nvmlReturn_t nvmlDeviceSetGpcClkVfOffset ( nvmlDevice_t device, int  offset )
参数
device
目标设备的标识符
offset
要设置的 GPCCLK VF 偏移值
返回值

描述

已弃用:将在未来版本中弃用。 请改用 nvmlDeviceSetClockOffsets。 它适用于 Maxwell 及更高版本的 GPU 架构。

设置 GPCCLK VF 偏移值

nvmlReturn_t nvmlDeviceSetGpuLockedClocks ( nvmlDevice_t device, unsigned int  minGpuClockMHz, unsigned int  maxGpuClockMHz )
参数
device
目标设备的标识符
minGpuClockMHz
请求的最小 GPU 时钟频率,单位为 MHz
maxGpuClockMHz
请求的最大 GPU 时钟频率,单位为 MHz
返回值

描述

设置设备将锁定的时钟。

将设备将运行的时钟设置为 minGpuClockMHz 到 maxGpuClockMHz 范围内的值。 设置此项将取代应用程序时钟值,并且无论 CUDA 应用程序是否正在运行,都将生效。 请参阅 /ref nvmlDeviceSetApplicationsClocks

可用作请求恒定性能的设置。

可以使用一对以 MHz 为单位的整数时钟频率,或一对 /ref nvmlClockLimitId_t 值来调用此函数。 有关这些值的有效组合,请参见下表。

minGpuClock | maxGpuClock | 效果 ------------+-------------+-------------------------------------------------- tdp | tdp | 将时钟锁定到 TDP unlimited | tdp | 上限为 TDP,但时钟可能会漂移到此值以下 tdp | unlimited | 下限为 TDP,但时钟可能会提升到此值以上 unlimited | unlimited | 已解锁(== nvmlDeviceResetGpuLockedClocks)

如果一个参数采用这些值之一,则另一个参数也必须采用这些值之一。混合数值和符号调用会返回 NVML_ERROR_INVALID_ARGUMENT 错误。

需要 root/管理员 权限。

系统重启或驱动程序重新加载后,应用程序时钟将恢复为默认值。请参阅 nvmlDeviceResetGpuLockedClocks

适用于 Volta 或更新的完全支持的设备。

nvmlReturn_t nvmlDeviceSetGpuOperationMode ( nvmlDevice_t device, nvmlGpuOperationMode_t mode )
参数
device
目标设备的标识符
mode
目标 GOM
返回值

描述

设置新的 GOM。 有关详细信息,请参阅 nvmlGpuOperationMode_t。

适用于 Kepler 系列的 GK110 M 级和 X 级 Tesla 产品。NVML_GOM_LOW_DPNVML_GOM_ALL_ON 模式在完全支持的 GeForce 产品上受支持。Quadro 和 Tesla C 级产品不支持。需要 root/管理员 权限。

更改 GOM 需要重启系统。未来可能会取消重启要求。

仅计算 GOM 不支持图形加速。在 Windows 系统下,当挂起的驱动程序模型为 WDDM 时,不支持切换到这些 GOM。请参阅 nvmlDeviceSetDriverModel

另请参阅

nvmlGpuOperationMode_t

nvmlDeviceGetGpuOperationMode

nvmlReturn_t nvmlDeviceSetMemClkVfOffset ( nvmlDevice_t device, int  offset )
参数
device
目标设备的标识符
offset
要设置的 MemClk VF 偏移值
返回值

描述

已弃用:将在未来版本中弃用。 请改用 nvmlDeviceSetClockOffsets。 它适用于 Maxwell 及更高版本的 GPU 架构。

设置 MemClk(显存时钟)VF 偏移值。 这需要提升的权限。

nvmlReturn_t nvmlDeviceSetMemoryLockedClocks ( nvmlDevice_t device, unsigned int  minMemClockMHz, unsigned int  maxMemClockMHz )
参数
device
目标设备的标识符
minMemClockMHz
请求的最小显存时钟频率,单位为 MHz
maxMemClockMHz
请求的最大显存时钟频率,单位为 MHz
返回值

描述

设置设备将锁定的显存时钟频率。

将设备的显存时钟设置为 minMemClockMHz 到 maxMemClockMHz 范围内的值。 设置此值将取代应用程序时钟值,并且无论 CUDA 应用程序是否正在运行,都将生效。 请参阅 /ref nvmlDeviceSetApplicationsClocks

可用作请求恒定性能的设置。

需要 root/管理员 权限。

系统重启或驱动程序重新加载后,应用程序时钟将恢复为默认值。请参阅 nvmlDeviceResetMemoryLockedClocks

适用于 Ampere 或更新的完全支持的设备。

nvmlReturn_t nvmlDeviceSetPersistenceMode ( nvmlDevice_t device, nvmlEnableState_t mode )
参数
device
目标设备的标识符
mode
目标持久模式
返回值

描述

设置设备的持久模式。

适用于所有产品。 仅适用于 Linux。 需要 root/管理员 权限。

持久模式决定了在最后一个客户端退出后是否卸载 GPU 驱动程序软件。

此操作立即生效。 它不会在重启后保持持久。 每次重启后,持久模式都会重置为“禁用”。

有关可用模式,请参阅 nvmlEnableState_t

在具有自身 NUMA 内存的设备上,当调用此 API 并将模式设置为 NVML_FEATURE_DISABLED 后,给定的设备句柄将不再有效,要继续与此设备交互,应从 nvmlDeviceGetHandleBy*() API 之一获取新的句柄。 此限制目前仅适用于与系统内存具有一致性 NVLink 连接的设备。

另请参阅

nvmlDeviceGetPersistenceMode()

nvmlReturn_t nvmlDeviceSetPowerManagementLimit ( nvmlDevice_t device, unsigned int  limit )
参数
device
目标设备的标识符
limit
要设置的功率管理限制,单位为毫瓦
返回值

描述

设置此设备的新功率限制。

适用于 Kepler 或更新的完全支持的设备。 需要 root/admin 权限。

请参阅 nvmlDeviceGetPowerManagementLimitConstraints 以检查允许的值范围。

注意

限制不会在重启或驱动程序卸载后保持持久。 启用持久模式以防止在没有应用程序使用设备时卸载驱动程序。

另请参阅

nvmlDeviceGetPowerManagementLimitConstraints

nvmlDeviceGetPowerManagementDefaultLimit

nvmlReturn_t nvmlDeviceSetTemperatureThreshold ( nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, int* temp )
参数
device
目标设备的标识符
thresholdType
要设置的阈值类型
temp
保存要设置的值的引用
返回值

描述

以摄氏度为单位,为 GPU 设置具有指定阈值类型的温度阈值。

适用于 Maxwell 或更新的完全支持的设备。

有关可用温度阈值的详细信息,请参阅 nvmlTemperatureThresholds_t


NVML API 参考指南 (PDF) - vR570 (更旧版本) - 最后更新于 2025 年 1 月 29 日 - 发送反馈