Skip to main content

qualia_core_db/specialized_libs/qpu_bridge/
metrics.rs

1//! QPU Bridge - Quantum Processing Unit Bridge for Exact Quantum Computing
2//!
3//! This module provides a bridge to remote quantum computing resources (IBM Quantum API)
4//! via the NativeQuantumDft module, enabling exact Hamiltonian mapping and quantum
5//! calculations that cannot be approximated on classical hardware.
6//!
7//! Architecture:
8//! - Time-metered proxy for IBM Quantum API
9//! - Job submission and result retrieval
10//! - Authentication and rate limiting
11//! - Error handling and fallback mechanisms
12
13use core::sync::atomic::{AtomicU32, AtomicU64};
14
15#[repr(C)]
16pub struct QPUMetrics {
17    /// Total quantum operations
18    pub(crate) total_operations: AtomicU64,
19    /// Successful operations
20    pub(crate) successful_operations: AtomicU64,
21    /// Failed operations
22    pub(crate) failed_operations: AtomicU64,
23    /// Average quantum volume
24    pub(crate) avg_quantum_volume: AtomicU32,
25    /// Total quantum time
26    pub(crate) total_quantum_time_us: AtomicU64,
27    /// Cache hit rate
28    pub(crate) cache_hit_rate: AtomicU32,
29}
30
31#[repr(u8)]
32#[derive(Clone, Copy, PartialEq)]
33pub enum QPUErrorCode {
34    Success = 0,
35    AuthenticationFailed = 1,
36    RateLimited = 2,
37    InvalidJob = 3,
38    QueueFull = 4,
39    NetworkError = 5,
40    QuantumError = 6,
41    Timeout = 7,
42    InsufficientCredits = 8,
43}
44
45impl QPUMetrics {
46    #[inline(always)]
47    pub const fn new() -> Self {
48        Self {
49            total_operations: AtomicU64::new(0),
50            successful_operations: AtomicU64::new(0),
51            failed_operations: AtomicU64::new(0),
52            avg_quantum_volume: AtomicU32::new(0),
53            total_quantum_time_us: AtomicU64::new(0),
54            cache_hit_rate: AtomicU32::new(0),
55        }
56    }
57}
58
59#[repr(u8)]
60#[derive(Clone, Copy, PartialEq, Debug)]
61pub enum QPUBridgeError {
62    Success = 0,
63    NotConnected = 1,
64    AlreadyConnected = 2,
65    AuthenticationFailed = 3,
66    InvalidConfiguration = 4,
67    RateLimited = 5,
68    QueueFull = 6,
69    JobNotFound = 7,
70    JobNotCompleted = 8,
71    JobFailed = 9,
72    JobTimeout = 10,
73    InvalidInput = 11,
74    NetworkError = 12,
75    QuantumError = 13,
76}