quantrs2_device/hardware_parallelization/
mod.rs

1//! Hardware-Aware Quantum Circuit Parallelization
2//!
3//! This module provides sophisticated parallelization capabilities that understand
4//! and respect hardware constraints, topology, and resource limitations to maximize
5//! throughput while maintaining circuit fidelity and correctness.
6
7pub mod config;
8pub mod config_defaults;
9pub mod engine;
10pub mod monitor;
11pub mod types;
12
13// Re-export main types
14pub use config::*;
15pub use engine::*;
16pub use monitor::*;
17pub use types::*;
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22    use crate::calibration::CalibrationManager;
23    use crate::integrated_device_manager::IntegratedQuantumDeviceManager;
24    use crate::routing_advanced::AdvancedQubitRouter;
25    use std::collections::HashMap;
26    use std::sync::{Arc, RwLock};
27    use std::time::Duration;
28
29    #[test]
30    fn test_parallelization_config_default() {
31        let config = ParallelizationConfig::default();
32        assert_eq!(config.strategy, ParallelizationStrategy::Hybrid);
33        assert!(config.resource_allocation.max_concurrent_circuits > 0);
34    }
35
36    #[test]
37    fn test_task_priority_ordering() {
38        assert!(TaskPriority::Low < TaskPriority::Normal);
39        assert!(TaskPriority::Normal < TaskPriority::High);
40        assert!(TaskPriority::High < TaskPriority::Critical);
41        assert!(TaskPriority::Critical < TaskPriority::System);
42    }
43
44    #[test]
45    fn test_resource_requirements_creation() {
46        let requirements = ParallelResourceRequirements {
47            required_cpu_cores: 4,
48            required_memory_mb: 1024.0,
49            required_qpu_time: Duration::from_secs(300),
50            required_bandwidth_mbps: 100.0,
51            required_storage_mb: 500.0,
52        };
53
54        assert_eq!(requirements.required_cpu_cores, 4);
55        assert_eq!(requirements.required_memory_mb, 1024.0);
56    }
57
58    #[tokio::test]
59    async fn test_parallelization_engine_creation() {
60        let config = ParallelizationConfig::default();
61        let devices = HashMap::new();
62        let cal_mgr = CalibrationManager::new();
63        let device_manager = Arc::new(RwLock::new(
64            IntegratedQuantumDeviceManager::new(Default::default(), devices, cal_mgr.clone())
65                .expect("Failed to create IntegratedQuantumDeviceManager in test"),
66        ));
67        let calibration_manager = Arc::new(RwLock::new(cal_mgr));
68        let router = Arc::new(RwLock::new(AdvancedQubitRouter::new(
69            Default::default(),
70            crate::routing_advanced::AdvancedRoutingStrategy::Hybrid,
71            42,
72        )));
73
74        let _engine =
75            HardwareParallelizationEngine::new(config, device_manager, calibration_manager, router);
76
77        // Should create without error
78        assert!(true);
79    }
80}