1use std::time::Duration;
7
8use crate::applications::{
9 drug_discovery::DrugDiscoveryProblem, materials_science::MaterialsOptimizationProblem,
10 protein_folding::ProteinFoldingProblem,
11};
12
13use super::config::{CacheEvictionPolicy, DecompositionStrategy};
14use super::parallel::{CrystalStructure, DefectAnalysisResult};
15
16#[derive(Debug, Clone)]
18pub struct OptimizedProteinFoldingResult {
19 pub original_problem: ProteinFoldingProblem,
21 pub optimized_result: ProteinFoldingOptimizationResult,
23 pub memory_optimizations: MemoryOptimizations,
25 pub parallel_optimizations: ParallelOptimizations,
27 pub algorithm_optimizations: AlgorithmOptimizations,
29 pub performance_metrics: OptimizationPerformanceMetrics,
31}
32
33#[derive(Debug, Clone)]
35pub struct OptimizedMaterialsScienceResult {
36 pub original_problem: MaterialsOptimizationProblem,
38 pub optimized_result: MaterialsOptimizationResult,
40 pub decomposition_strategy: DecompositionStrategy,
42 pub parallel_strategy: ParallelLatticeStrategy,
44 pub performance_metrics: OptimizationPerformanceMetrics,
46}
47
48#[derive(Debug, Clone)]
50pub struct OptimizedDrugDiscoveryResult {
51 pub original_problem: DrugDiscoveryProblem,
53 pub optimized_result: DrugDiscoveryOptimizationResult,
55 pub caching_strategy: MolecularCachingStrategy,
57 pub distributed_strategy: DistributedScreeningStrategy,
59 pub performance_metrics: OptimizationPerformanceMetrics,
61}
62
63#[derive(Debug, Clone)]
65pub struct OptimizationPerformanceMetrics {
66 pub total_time: Duration,
68 pub memory_usage_reduction: f64,
70 pub speedup_factor: f64,
72 pub quality_improvement: f64,
74}
75
76#[derive(Debug, Clone)]
78pub struct ComprehensivePerformanceReport {
79 pub system_metrics: SystemPerformanceMetrics,
81 pub optimization_recommendations: Vec<OptimizationRecommendation>,
83 pub bottleneck_analysis: BottleneckAnalysis,
85 pub resource_utilization: ResourceUtilizationAnalysis,
87}
88
89#[derive(Debug, Clone)]
91pub struct SystemPerformanceMetrics {
92 pub overall_performance_score: f64,
94 pub memory_efficiency: f64,
96 pub cpu_utilization: f64,
98 pub parallel_efficiency: f64,
100 pub cache_hit_rate: f64,
102}
103
104#[derive(Debug, Clone)]
106pub struct OptimizationRecommendation {
107 pub category: OptimizationCategory,
109 pub recommendation: String,
111 pub impact: OptimizationImpact,
113 pub estimated_improvement: f64,
115}
116
117#[derive(Debug, Clone, PartialEq, Eq)]
119pub enum OptimizationCategory {
120 Memory,
121 Parallelization,
122 Algorithm,
123 Distributed,
124 GPU,
125}
126
127#[derive(Debug, Clone, PartialEq, Eq)]
129pub enum OptimizationImpact {
130 Low,
131 Medium,
132 High,
133 Critical,
134}
135
136#[derive(Debug, Clone)]
138pub struct BottleneckAnalysis {
139 pub primary_bottleneck: BottleneckType,
141 pub secondary_bottlenecks: Vec<BottleneckType>,
143 pub bottleneck_impact: f64,
145 pub resolution_suggestions: Vec<String>,
147}
148
149#[derive(Debug, Clone, PartialEq, Eq)]
151pub enum BottleneckType {
152 CPUUtilization,
153 MemoryBandwidth,
154 DiskIO,
155 NetworkLatency,
156 GPUMemory,
157 AlgorithmComplexity,
158}
159
160#[derive(Debug, Clone)]
162pub struct ResourceUtilizationAnalysis {
163 pub cpu_utilization: f64,
165 pub memory_utilization: f64,
167 pub disk_utilization: f64,
169 pub network_utilization: f64,
171 pub gpu_utilization: f64,
173 pub efficiency_score: f64,
175}
176
177#[derive(Debug, Clone)]
179pub struct ProblemAnalysis {
180 pub problem_type: ProblemType,
182 pub complexity_score: f64,
184 pub memory_requirements: usize,
186 pub parallel_potential: f64,
188 pub recommended_optimizations: Vec<OptimizationType>,
190}
191
192#[derive(Debug, Clone, PartialEq, Eq)]
194pub enum ProblemType {
195 ProteinFolding,
196 MaterialsScience,
197 DrugDiscovery,
198 Generic,
199}
200
201#[derive(Debug, Clone, PartialEq, Eq)]
203pub enum OptimizationType {
204 MemoryPooling,
205 ParallelExecution,
206 ResultCaching,
207 Approximation,
208 Decomposition,
209}
210
211#[derive(Debug, Clone)]
213pub struct MemoryOptimizations {
214 pub memory_pool_enabled: bool,
216 pub cache_strategy: CacheStrategy,
218 pub compression_enabled: bool,
220 pub memory_mapping_enabled: bool,
222 pub estimated_savings: f64,
224}
225
226#[derive(Debug, Clone, PartialEq, Eq)]
228pub enum CacheStrategy {
229 Simple,
230 Hierarchical,
231 Adaptive,
232}
233
234#[derive(Debug, Clone)]
236pub struct ParallelOptimizations {
237 pub parallel_strategy: ParallelStrategy,
239 pub thread_count: usize,
241 pub load_balancing_enabled: bool,
243 pub numa_awareness_enabled: bool,
245 pub estimated_speedup: f64,
247}
248
249#[derive(Debug, Clone, PartialEq, Eq)]
251pub enum ParallelStrategy {
252 DataParallelism,
253 TaskParallelism,
254 Pipeline,
255 Hybrid,
256}
257
258#[derive(Debug, Clone)]
260pub struct AlgorithmOptimizations {
261 pub decomposition_enabled: bool,
263 pub approximation_enabled: bool,
265 pub caching_enabled: bool,
267 pub streaming_enabled: bool,
269 pub estimated_improvement: f64,
271}
272
273#[derive(Debug, Clone)]
275pub struct ProteinFoldingOptimizationResult {
276 pub optimized_conformation: Vec<i32>,
278 pub energy_reduction: f64,
280 pub convergence_improvement: f64,
282 pub execution_time: Duration,
284}
285
286#[derive(Debug, Clone)]
288pub struct CrystalStructureAnalysis {
289 pub lattice_complexity: f64,
291 pub atom_count: usize,
293 pub symmetry_groups: Vec<String>,
295 pub optimization_potential: f64,
297}
298
299#[derive(Debug, Clone)]
301pub struct ParallelLatticeStrategy {
302 pub partitioning_method: PartitioningMethod,
304 pub communication_pattern: CommunicationPattern,
306 pub load_balancing: LoadBalancingMethod,
308}
309
310#[derive(Debug, Clone, PartialEq, Eq)]
312pub enum PartitioningMethod {
313 Spatial,
314 Spectral,
315 RandomizedBisection,
316}
317
318#[derive(Debug, Clone, PartialEq, Eq)]
320pub enum CommunicationPattern {
321 AllToAll,
322 NearestNeighbor,
323 TreeBased,
324}
325
326#[derive(Debug, Clone, PartialEq, Eq)]
328pub enum LoadBalancingMethod {
329 Static,
330 Dynamic,
331 Adaptive,
332}
333
334#[derive(Debug, Clone, Default)]
336pub struct MaterialsOptimizationResult {
337 pub optimized_structure: CrystalStructure,
339 pub energy_minimization: f64,
341 pub defect_analysis: DefectAnalysisResult,
343 pub simulation_time: Duration,
345}
346
347#[derive(Debug, Clone)]
349pub struct MolecularComplexityAnalysis {
350 pub molecular_weight: f64,
352 pub rotatable_bonds: usize,
354 pub ring_count: usize,
356 pub complexity_score: f64,
358}
359
360#[derive(Debug, Clone)]
362pub struct MolecularCachingStrategy {
363 pub cache_type: MolecularCacheType,
365 pub cache_size: usize,
367 pub eviction_policy: CacheEvictionPolicy,
369 pub hit_rate_target: f64,
371}
372
373#[derive(Debug, Clone, PartialEq, Eq)]
375pub enum MolecularCacheType {
376 StructureBased,
377 PropertyBased,
378 InteractionBased,
379}
380
381#[derive(Debug, Clone)]
383pub struct DistributedScreeningStrategy {
384 pub screening_method: ScreeningMethod,
386 pub cluster_size: usize,
388 pub task_distribution: TaskDistributionMethod,
390 pub fault_tolerance: bool,
392}
393
394#[derive(Debug, Clone, PartialEq, Eq)]
396pub enum ScreeningMethod {
397 VirtualScreening,
398 PhysicalScreening,
399 HybridScreening,
400}
401
402#[derive(Debug, Clone, PartialEq, Eq)]
404pub enum TaskDistributionMethod {
405 RoundRobin,
406 LoadBalanced,
407 Priority,
408}
409
410#[derive(Debug, Clone)]
412pub struct DrugDiscoveryOptimizationResult {
413 pub optimized_molecules: Vec<String>,
415 pub screening_efficiency: f64,
417 pub hit_rate_improvement: f64,
419 pub discovery_time: Duration,
421}