scirs2_core/advanced_jit_compilation_impl/
config.rs

1//! Configuration types for the JIT compilation framework
2
3#[cfg(feature = "serialization")]
4use serde::{Deserialize, Serialize};
5
6/// Configuration for JIT compilation
7#[cfg_attr(feature = "serialization", derive(Serialize, Deserialize))]
8#[derive(Debug, Clone)]
9pub struct JitCompilerConfig {
10    /// Enable aggressive optimizations
11    pub enable_aggressive_optimization: bool,
12    /// Enable vectorization
13    pub enable_vectorization: bool,
14    /// Enable loop unrolling
15    pub enable_loop_unrolling: bool,
16    /// Enable function inlining
17    pub enable_inlining: bool,
18    /// Enable cross-module optimization
19    pub enable_cross_module_optimization: bool,
20    /// Target CPU architecture
21    pub target_cpu: String,
22    /// Target feature set
23    pub target_features: Vec<String>,
24    /// Optimization level (0-3)
25    pub optimization_level: u8,
26    /// Enable debugging information
27    pub enable_debug_info: bool,
28    /// Cache size limit (MB)
29    pub cache_size_limit_mb: usize,
30    /// Compilation timeout (seconds)
31    pub compilation_timeout_seconds: u64,
32    /// Enable profiling
33    pub enable_profiling: bool,
34    /// Enable adaptive compilation
35    pub enable_adaptive_compilation: bool,
36}
37
38impl Default for JitCompilerConfig {
39    fn default() -> Self {
40        Self {
41            enable_aggressive_optimization: true,
42            enable_vectorization: true,
43            enable_loop_unrolling: true,
44            enable_inlining: true,
45            enable_cross_module_optimization: true,
46            target_cpu: "native".to_string(),
47            target_features: vec!["avx2".to_string(), "fma".to_string(), "sse4.2".to_string()],
48            optimization_level: 3,
49            enable_debug_info: false,
50            cache_size_limit_mb: 512,
51            compilation_timeout_seconds: 30,
52            enable_profiling: true,
53            enable_adaptive_compilation: true,
54        }
55    }
56}
57
58/// Configuration for neuromorphic compilation
59#[cfg_attr(feature = "serialization", derive(Serialize, Deserialize))]
60#[derive(Debug, Clone)]
61pub struct NeuromorphicConfig {
62    /// Enable spike-based optimization
63    pub enable_spike_optimization: bool,
64    /// Enable plasticity learning
65    pub enable_plasticity: bool,
66    /// Enable temporal dynamics
67    pub enable_temporal_dynamics: bool,
68    /// Time step resolution (microseconds)
69    pub time_step_resolution_us: f64,
70    /// Maximum spike frequency (Hz)
71    pub max_spike_frequency_hz: f64,
72    /// Refractory period (milliseconds)
73    pub refractory_period_ms: f64,
74    /// Membrane time constant (milliseconds)
75    pub membrane_time_constant_ms: f64,
76    /// Synaptic delay range (milliseconds)
77    pub synapticdelay_range_ms: (f64, f64),
78    /// STDP learning window (milliseconds)
79    pub stdp_window_ms: f64,
80}
81
82impl Default for NeuromorphicConfig {
83    fn default() -> Self {
84        Self {
85            enable_spike_optimization: true,
86            enable_plasticity: true,
87            enable_temporal_dynamics: true,
88            time_step_resolution_us: 100.0, // 0.1ms
89            max_spike_frequency_hz: 1000.0,
90            refractory_period_ms: 2.0,
91            membrane_time_constant_ms: 10.0,
92            synapticdelay_range_ms: (0.5, 5.0),
93            stdp_window_ms: 20.0,
94        }
95    }
96}
97
98/// Cache configuration
99#[derive(Debug, Clone)]
100pub struct CacheConfig {
101    /// Maximum cache size
102    pub maxsize_mb: usize,
103    /// Eviction policy
104    pub eviction_policy: EvictionPolicy,
105    /// Enable cache warming
106    pub enable_cache_warming: bool,
107    /// Cache persistence
108    pub enable_persistence: bool,
109    /// Persistence directory
110    pub persistence_dir: Option<std::path::PathBuf>,
111}
112
113/// Cache eviction policies
114#[derive(Debug, Clone)]
115pub enum EvictionPolicy {
116    LRU,
117    LFU,
118    Random,
119    FIFO,
120    Adaptive,
121}
122
123/// Profiler configuration
124#[derive(Debug, Clone)]
125pub struct ProfilerConfig {
126    /// Enable execution profiling
127    pub enable_execution_profiling: bool,
128    /// Enable compilation profiling
129    pub enable_compilation_profiling: bool,
130    /// Sampling rate for profiling
131    pub samplingrate: f64,
132    /// Profile data retention time
133    pub retention_hours: u32,
134    /// Enable hotspot detection
135    pub enable_hotspot_detection: bool,
136    /// Hotspot threshold
137    pub hotspot_threshold: f64,
138}
139
140/// Profiling session configuration
141#[derive(Debug, Clone)]
142pub struct ProfilingSessionConfig {
143    /// Sampling interval
144    pub sampling_interval: std::time::Duration,
145    /// Include stack traces
146    pub include_stack_traces: bool,
147    /// Profile memory allocations
148    pub profile_memory: bool,
149    /// Profile system calls
150    pub profile_syscalls: bool,
151}
152
153/// Pattern cache configuration
154#[derive(Debug, Clone)]
155pub struct PatternCacheConfig {
156    /// Maximum patterns
157    pub max_patterns: usize,
158    /// TTL for patterns
159    pub pattern_ttl: std::time::Duration,
160    /// Enable LRU eviction
161    pub enable_lru: bool,
162}