quantrs2_sim/automatic_parallelization/
autoparallelengine_predict_parallelization_strategy_group.rs1use super::types::{MLFeatures, MLPredictedStrategy};
8
9use super::autoparallelengine_type::AutoParallelEngine;
10
11impl AutoParallelEngine {
12 pub(super) fn predict_parallelization_strategy(features: &MLFeatures) -> MLPredictedStrategy {
14 if features.parallelism_factor > 0.7 && features.avg_connectivity < 2.0 {
15 return MLPredictedStrategy::HighParallelism;
16 }
17 if features.circuit_depth < (features.num_gates as f64 * 0.3) as usize {
18 return MLPredictedStrategy::LayerOptimized;
19 }
20 if features.avg_connectivity > 3.5 || features.dependency_density > 0.6 {
21 return MLPredictedStrategy::ConservativeParallelism;
22 }
23 MLPredictedStrategy::BalancedParallelism
24 }
25}