1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
/*! Rust bindings for the [NVIDIA Management Library](https://developer.nvidia.com/nvidia-management-library-nvml) (NVML), a C-based programmatic interface for monitoring and managing various states within NVIDIA (primarily Tesla) GPUs. **If you want a safe wrapper, please see the crate [`nvml-wrapper`](https://crates.io/crates/nvml-wrapper).** 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: ```bash sudo ln -s /usr/lib/nvidia-<driver-version>/libnvidia-ml.so /usr/lib ``` ## 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): ```bash cargo build --features "nightly" ``` ## Cargo Features The `nightly` feature can be toggled on to enable nightly-only features; read above. */ #![cfg_attr(feature = "nightly", feature(untagged_unions))] pub mod bindings;