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:
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.
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.
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
Currently supports rustc 1.17.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"
The nightly
feature can be toggled on to enable nightly-only features; read above.
Licensed under either of
at your option.
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.