A C-based API for monitoring and managing various states of the NVIDIA GPU devices. It provides a direct access to the queries and commands exposed via nvidia-smi. The runtime version of NVML ships with the NVIDIA display driver, and the SDK provides the appropriate header, stub libraries and sample applications. Each new version of NVML is backwards compatible and is intended to be a platform for building 3rd party applications.
Query-able states includes:
- ECC error counts: Both correctable single bit and detectable double bit errors are reported. Error counts are provided for both the current boot cycle and for the lifetime of the GPU.
- GPU utilization: Current utilization rates are reported for both the compute resources of the GPU and the memory interface.
- Active compute process: The list of active processes running on the GPU is reported, along with the corresponding process name/id and allocated GPU memory.
- Clocks and PState: Max and current clock rates are reported for several important clock domains, as well as the current GPU performance state.
- Temperature and fan speed: The current core GPU temperature is reported, along with fan speeds for non-passive products.
- Power management: For supported products, the current board power draw and power limits are reported.
- Identification: Various dynamic and static information is reported, including board serial numbers, PCI device ids, VBIOS/Inforom version numbers and product names.
Modifiable state includes:
- ECC mode: Enable and disable ECC.
- ECC reset: Clear single and double bit ECC error counts.
- Compute mode: Control whether compute processes can run on the GPU and whether they run exclusively or concurrently with other compute processes.
- Persistence mode: Control whether the NVIDIA driver stays loaded when no active clients are connected to the GPU.
The NVIDIA Management Library can be downloaded as part of the Tesla Deployment Kit.
NVML API Reference Manual
A set of officially supported Perl and Python bindings are available for NVML. These bindings expose the same features as the C-based interface and also provide backwards compatibility. The Perl bindings are provided via CPAN and the Python bindings via PyPI.