3. Change Log
This chapter list changes in API and bug fixes that were introduced to the library.
Changes between NVML v331 and v340
The following new functionality is exposed on NVIDIA display drivers version 340 Production or later
- Added nvmlDeviceGetSamples to get recent power, utilization and clock samples for the GPU.
- Added nvmlDeviceGetTemperatureThreshold to get temperature thresholds for the GPU.
- Added nvmlDeviceGetBrand to get the brand name of the GPU.
- Added nvmlDeviceGetViolationStatus to get the duration of time during which the device was throttled (lower than requested clocks) due to power or thermal constraints. Violations due to thermal capping is not supported at this time.
- Added nvmlDeviceGetEncoderUtilization to get the GPU video encoder utilization.
- Added nvmlDeviceGetDecoderUtilization to get the GPU video decoder utilization.
- Added nvmlDeviceGetCpuAffinity to get the closest processor(s) affinity to a particular GPU.
- Added nvmlDeviceSetCpuAffinity to set the affinity of a particular GPU to the closest processor.
- Added nvmlDeviceClearCpuAffinity to clear the affinity of a particular GPU.
- Added nvmlDeviceGetBoardId to get a unique boardId for the running system.
- Added nvmlDeviceGetMultiGpuBoard to get whether the device is on a multiGPU board.
- Added nvmlDeviceGetAutoBoostedClocksEnabled and nvmlDeviceSetAutoBoostedClocksEnabled for querying and setting the state of auto boosted clocks on supporting hardware.
- Added nvmlDeviceSetDefaultAutoBoostedClocksEnabled for setting the default state of auto boosted clocks on supporting hardware.
Changes between NVML v5.319 Update and v331
The following new functionality is exposed on NVIDIA display drivers version 331 or later.
- Added nvmlDeviceGetMinorNumber to get the minor number for the device.
- Added nvmlDeviceGetBAR1MemoryInfo to get BAR1 total, available and used memory size.
- Added nvmlDeviceGetBridgeChipInfo to get the information related to bridge chip firmware.
- Added enforced power limit query API nvmlDeviceGetEnforcedPowerLimit
- Updated nvmlEventSetWait to return xid event data in case of xid error event.
Changes between NVML v5.319 RC and v5.319 Update
The following new functionality is exposed on NVIDIA display drivers version 319 Update or later.
- Added nvmlDeviceSetAPIRestriction and nvmlDeviceGetAPIRestriction, with initial ability to toggle root-only requirement for nvmlDeviceSetApplicationsClocks and nvmlDeviceResetApplicationsClocks.
Changes between NVML v4.304 Production and v5.319 RC
The following new functionality is exposed on NVIDIA display drivers version 319 RC or later.
- Added _v2 versions of nvmlDeviceGetHandleByIndex and nvmlDeviceGetCount that also count devices not accessible by current user
- nvmlDeviceGetHandleByIndex_v2 (default) can also return NVML_ERROR_NO_PERMISSION
- Added nvmlInit_v2 and nvmlDeviceGetHandleByIndex_v2 that is safer and thus recommended function for initializing the library
- nvmlInit_v2 lazily initializes only requested devices (queried with nvmlDeviceGetHandle*)
- nvml.h defines nvmlInit_v2 and nvmlDeviceGetHandleByIndex_v2 as default functions
- Added nvmlDeviceGetIndex
- Added NVML_ERROR_GPU_IS_LOST to report GPUs that have fallen off the bus.
- All NVML device APIs can return this error code, as a GPU can fall off the bus at any time.
- Added new class of APIs for gathering process statistics (nvmlAccountingStats)
- Application Clocks are no longer supported on GPU's from Quadro product line
- Added APIs to support dynamic page retirement. See nvmlDeviceGetRetiredPages and nvmlDeviceGetRetiredPagesPendingStatus
- Renamed nvmlClocksThrottleReasonUserDefinedClocks to nvmlClocksThrottleReasonApplicationsClocksSetting. Old name is deprecated and can be removed in one of the next major releases.
- Added nvmlDeviceGetDisplayActive and updated documentation to clarify how it differs from nvmlDeviceGetDisplayMode
Changes between NVML v4.304 RC and v4.304 Production
The following new functionality is exposed on NVIDIA display drivers version 304 Production or later.
Changes between NVML v3.295 and v4.304 RC
The following new functionality is exposed on NVIDIA display drivers version 304 RC or later.
- Added nvmlDeviceGetInforomConfigurationChecksum and nvmlDeviceValidateInforom.
- Added nvmlDeviceGetDisplayActive and updated documentation to clarify how it differs from nvmlDeviceGetDisplayMode.
- Added new error return value for initialization failure due to kernel module not receiving interrupts.
- Added nvmlDeviceSetApplicationsClocks, nvmlDeviceGetApplicationsClock, nvmlDeviceResetApplicationsClocks.
- Added nvmlDeviceGetSupportedMemoryClocks and nvmlDeviceGetSupportedGraphicsClocks.
- Added nvmlDeviceGetPowerManagementLimitConstraints, nvmlDeviceGetPowerManagementDefaultLimit and nvmlDeviceSetPowerManagementLimit.
- Added nvmlDeviceGetInforomImageVersion.
- Expanded nvmlDeviceGetUUID to support all CUDA capable GPUs.
- Deprecated nvmlDeviceGetDetailedEccErrors in favor of nvmlDeviceGetMemoryErrorCounter.
- Added NVML_MEMORY_LOCATION_TEXTURE_MEMORY to support reporting of texture memory error counters.
- Added nvmlDeviceGetCurrentClocksThrottleReasons and nvmlDeviceGetSupportedClocksThrottleReasons.
- NVML_CLOCK_SM is now also reported on supported Kepler devices.
- Dropped support for GT200 based Tesla brand GPUs: C1060, M1060, S1070.
Changes between NVML v2.285 and v3.295
The following new functionality is exposed on NVIDIA display drivers version 295 or later.
- Deprecated nvmlDeviceGetHandleBySerial in favor of newly added nvmlDeviceGetHandleByUUID.
- Marked the input parameters of nvmlDeviceGetHandleBySerial, nvmlDeviceGetHandleByUUID and nvmlDeviceGetHandleByPciBusId as const.
- Added nvmlDeviceOnSameBoard.
- Added nvmlConstants defines.
- Added nvmlDeviceGetMaxPcieLinkGeneration, nvmlDeviceGetMaxPcieLinkWidth, nvmlDeviceGetCurrPcieLinkGeneration,nvmlDeviceGetCurrPcieLinkWidth.
- Format change of nvmlDeviceGetUUID output to match the UUID standard. This function will return a different value.
- nvmlDeviceGetDetailedEccErrors will report zero for unsupported ECC error counters when a subset of ECC error counters are supported.
Changes between NVML v1.0 and v2.285
The following new functionality is exposed on NVIDIA display drivers version 285 or later.
- Added possibility to query separately current and pending driver model with nvmlDeviceGetDriverModel.
- Added API nvmlDeviceGetVbiosVersion function to report VBIOS version.
- Added pciSubSystemId to nvmlPciInfo_t struct.
- Added API nvmlErrorString function to convert error code to string.
- Updated docs to indicate we support M2075 and C2075.
- Added API nvmlSystemGetHicVersion function to report HIC firmware version.
-
Added NVML versioning support
- Functions that changed API and/or size of structs have appended versioning suffix (e.g., nvmlDeviceGetPciInfo_v2). Appropriate C defines have been added that map old function names to the newer version of the function.
- Added support for concurrent library usage by multiple libraries.
- Added API nvmlDeviceGetMaxClockInfo function for reporting device's clock limits.
- Added new error code NVML_ERROR_DRIVER_NOT_LOADED used by nvmlInit.
- Extended nvmlPciInfo_t struct with new field: sub system id.
- Added NVML support on Windows guest account.
- Changed format of pciBusId string (to XXXX:XX:XX.X) of nvmlPciInfo_t.
- Parsing of busId in nvmlDeviceGetHandleByPciBusId is less restrictive. You can pass 0:2:0.0 or 0000:02:00 and other variations.
- Added API for events waiting for GPU events (Linux only) see docs of nvmlEvents.
- Added API nvmlDeviceGetComputeRunningProcesses and nvmlSystemGetProcessName functions for looking up currently running compute applications.
- Deprecated nvmlDeviceGetPowerState in favor of nvmlDeviceGetPerformanceState.