nvml-wrapper-sys

Crates.io version Crates.io downloads Docs.rs docs

Rust bindings for the NVIDIA Management Library (NVML), a C-based programmatic interface for monitoring and managing various states within NVIDIA (primarily Tesla) GPUs.

It is intended to be a platform for building 3rd-party applications, and is also the underlying library for NVIDIA's nvidia-smi tool.

NVML supports the following platforms:

And the following products:

Compilation

The NVML library comes with the NVIDIA drivers and is essentially present on any system with a functioning NVIDIA graphics card. The compilation steps vary between Windows and Linux, however.

Windows

The NVML library dll can be found at %ProgramW6432%\NVIDIA Corporation\NVSMI\ (which is C:\Program Files\NVIDIA Corporation\NVSMI\ on my machine). You will need to add this folder to your PATH in order to have everything work properly at runtime; alternatively, place a copy of the dll in the same folder as your executable.

Linux

The NVML library can be found at /usr/lib/nvidia-<driver-version>/libnvidia-ml.so; on my system with driver version 375.51 installed, this puts the library at /usr/lib/nvidia-375/libnvidia-ml.so. You will need to create a symbolic link:

bash sudo ln -s /usr/lib/nvidia-<driver-version>/libnvidia-ml.so /usr/lib

NVML Support

These bindings were generated for NVML version 8. Each new version of NVML is guaranteed to be backwards-compatible according to NVIDIA, so these bindings should be useful regardless of NVML version bumps.

Rustc Support

Currently supports rustc 1.18.0 or greater. The target version is the latest stable version; I do not intend to pin to an older one at any time.

A small amount of NVML features involve dealing with untagged unions over FFI; a rustc nightly-only type is used in order to facilitate this. If you require use of the nightly-only functionality, compile with the nightly feature toggled on (and of course, with a nightly compiler):

bash cargo build --features "nightly"

Cargo Features

The nightly feature can be toggled on to enable nightly-only features; read above.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.