nvml-wrapper-sys
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:
- Windows
- Windows Server 2008 R2 64-bit
- Windows Server 2012 R2 64-bit
- Windows 7 64-bit
- Windows 8 64-bit
- Windows 10 64-bit
- Linux
- 64-bit
- 32-bit
- Hypervisors
- Windows Server 2008R2/2012 Hyper-V 64-bit
- Citrix XenServer 6.2 SP1+
- VMware ESX 5.1/5.5
And the following products:
- Full Support
- Tesla products Fermi architecture and up
- Quadro products Fermi architecture and up
- GRID products Kepler architecture and up
- Select GeForce Titan products
- Limited Support
- All GeForce products Fermi architecture and up
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:
Rustc Support
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):
Cargo Features
The nightly feature can be toggled on to enable nightly-only features; read above.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.