singe_cuda/driver.rs
1use singe_cuda_sys::driver;
2
3use crate::{error::Result, try_ffi};
4
5/// Returns the version of CUDA supported by the driver.
6/// The version is returned as `1000 * major + 10 * minor`.
7/// For example, CUDA 9.2 would be represented by 9020.
8///
9/// # Errors
10///
11/// Returns an error if CUDA cannot query the driver version or if a previous asynchronous launch
12/// reported an error.
13pub fn version() -> Result<i32> {
14 let mut version: i32 = 0;
15 unsafe {
16 try_ffi!(driver::cuDriverGetVersion(&raw mut version))?;
17 }
18 Ok(version)
19}
20
21#[cfg(all(test, feature = "testing"))]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn it_works() {
27 assert_ne!(version().unwrap(), 0);
28 }
29}