use baracuda_runtime::{
device_synchronize, driver_version, query::device_properties, runtime_version, Device,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("CUDA driver version: {}", driver_version()?);
println!("CUDA runtime version: {}", runtime_version()?);
let devices = Device::all()?;
println!("found {} CUDA device(s)", devices.len());
for dev in &devices {
dev.set_current()?;
let props = device_properties(dev)?;
let (cc_major, cc_minor) = dev.compute_capability()?;
let sm_count = dev.multiprocessor_count()?;
let warp = dev.warp_size()?;
let gib = (props.total_global_memory_bytes as f64) / (1024.0 * 1024.0 * 1024.0);
println!(
" [{}] {:30} cc {}.{} {} SMs warp {} {:.2} GiB",
dev.ordinal(),
props.name,
cc_major,
cc_minor,
sm_count,
warp,
gib,
);
}
device_synchronize()?;
println!("OK");
Ok(())
}