pub mod context;
pub mod dense;
pub mod eigen;
pub mod error;
pub mod irs;
pub mod layout;
pub mod params;
pub mod svd;
pub mod types;
pub(crate) mod utility;
#[cfg(feature = "testing")]
pub mod testing;
use singe_core::LibraryVersion;
use singe_cuda::types::LibraryProperty;
use singe_cusolver_sys as sys;
use crate::error::Result;
pub fn version() -> Result<LibraryVersion> {
let mut version = 0;
unsafe {
try_ffi!(sys::cusolverGetVersion(&raw mut version))?;
}
Ok(LibraryVersion::from(version))
}
pub fn library_property(property: LibraryProperty) -> Result<i32> {
let mut value = 0;
unsafe {
try_ffi!(sys::cusolverGetProperty(property.into(), &raw mut value))?;
}
Ok(value)
}
#[cfg(all(test, feature = "testing"))]
mod tests {
use super::*;
use crate::testing::setup_context_if_available;
#[test]
fn it_works() -> Result<()> {
let Some(_ctx) = setup_context_if_available()? else {
return Ok(());
};
let version = version()?;
println!("cuSOLVER version: {version}");
assert_ne!(version, 0);
assert_ne!(library_property(LibraryProperty::Major)?, 0);
Ok(())
}
}