use crate::error::{PrismError, Result};
#[derive(Debug)]
pub struct GpuDevice {
device_id: usize,
}
impl GpuDevice {
pub fn new(device_id: usize) -> Result<Self> {
let _ = device_id;
Err(Self::unsupported("device initialization"))
}
pub fn is_available() -> bool {
false
}
pub fn vram_bytes(&self) -> Result<usize> {
Err(Self::unsupported("vram_bytes"))
}
pub fn max_qubits_for_statevector(&self) -> Result<usize> {
Err(Self::unsupported("max_qubits_for_statevector"))
}
#[allow(dead_code)]
pub(crate) fn device_id(&self) -> usize {
self.device_id
}
#[cfg(test)]
pub(crate) fn stub_for_tests() -> Self {
Self { device_id: 0 }
}
fn unsupported(op: &str) -> PrismError {
PrismError::BackendUnsupported {
backend: "gpu".to_string(),
operation: format!("{op} (scaffold only)"),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new_returns_unsupported() {
assert!(matches!(
GpuDevice::new(0).unwrap_err(),
PrismError::BackendUnsupported { .. }
));
}
#[test]
fn is_available_false_in_scaffold() {
assert!(!GpuDevice::is_available());
}
}