use std::fmt::Debug;
use num_cpus;
use scirs2_core::numeric::Float;
use std::collections::HashMap;
use std::time::Duration;
use super::super::{TPUConfig, TPUVersion, XLAOptimizationLevel};
use super::types::{AttributeValue, ElementType, OperationId, OperationType};
#[derive(Debug, Clone)]
pub struct XLACompilerConfig {
pub target_tpu: TPUConfig,
pub optimization_level: XLAOptimizationLevel,
pub enable_auto_tuning: bool,
pub compilation_timeout: u64,
pub max_cache_size_mb: usize,
pub parallel_compilation: bool,
pub compilation_threads: usize,
pub enable_fusion: bool,
pub enable_layout_optimization: bool,
pub enable_memory_optimization: bool,
pub enable_pipeline_optimization: bool,
pub debug_mode: bool,
pub profile_compilation: bool,
pub custom_passes: Vec<String>,
pub enable_tensor_core_optimization: bool,
pub enable_sparsity_optimization: bool,
pub enable_quantization_optimization: bool,
pub enable_gradient_accumulation_optimization: bool,
pub enable_advanced_memory_coalescing: bool,
pub enable_dynamicshape_optimization: bool,
pub enable_cross_replica_optimization: bool,
}
impl Default for XLACompilerConfig {
fn default() -> Self {
Self {
target_tpu: TPUConfig::default(),
optimization_level: XLAOptimizationLevel::Standard,
enable_auto_tuning: true,
compilation_timeout: 300, max_cache_size_mb: 1024, parallel_compilation: true,
compilation_threads: num_cpus::get(),
enable_fusion: true,
enable_layout_optimization: true,
enable_memory_optimization: true,
enable_pipeline_optimization: true,
debug_mode: false,
profile_compilation: false,
custom_passes: Vec::new(),
enable_tensor_core_optimization: true,
enable_sparsity_optimization: true,
enable_quantization_optimization: true,
enable_gradient_accumulation_optimization: true,
enable_advanced_memory_coalescing: true,
enable_dynamicshape_optimization: true,
enable_cross_replica_optimization: true,
}
}
}
#[derive(Debug, Clone)]
pub struct RuntimeConfig {
pub optimization_level: XLAOptimizationLevel,
pub parallel_compilation: bool,
pub memory_optimization: bool,
pub debug_mode: bool,
}
#[derive(Debug, Clone)]
pub struct StorageConfiguration {
pub max_events: usize,
pub compression_enabled: bool,
pub persistence_enabled: bool,
pub retention_policy: RetentionPolicy,
}
#[derive(Debug, Clone)]
pub enum RetentionPolicy {
KeepAll,
KeepLatest(usize),
KeepByTime(Duration),
KeepBySize(usize),
}
#[derive(Debug, Clone)]
pub struct ToolConfiguration {
pub parameters: HashMap<String, ConfigurationValue>,
pub thresholds: HashMap<String, f64>,
pub output_format: OutputFormat,
}
#[derive(Debug, Clone)]
pub enum ConfigurationValue {
Boolean(bool),
Integer(i64),
Float(f64),
String(String),
}
#[derive(Debug, Clone, Copy)]
pub enum OutputFormat {
JSON,
CSV,
Binary,
Text,
}
#[derive(Debug, Clone)]
pub struct WorkStealingConfig {
pub enabled: bool,
pub steal_threshold: f64,
pub steal_ratio: f64,
pub victim_selection: VictimSelection,
}
#[derive(Debug, Clone, Copy)]
pub enum VictimSelection {
Random,
MostLoaded,
LeastLoaded,
Neighbor,
}
#[derive(Debug, Clone)]
pub struct PredictionCacheConfig {
pub max_entries: usize,
pub ttl: Duration,
pub eviction_policy: CacheEvictionPolicy,
}
#[derive(Debug, Clone, Copy)]
pub enum CacheEvictionPolicy {
LRU,
LFU,
FIFO,
Random,
TTL,
}
#[derive(Debug, Clone)]
pub struct MixedPrecisionConfig {
pub enabled: bool,
pub precision_mapping: HashMap<OperationType, ElementType>,
pub automatic_casting: bool,
pub loss_scaling: bool,
pub gradient_clipping: bool,
}
#[derive(Debug, Clone)]
pub struct DitheringConfig {
pub enabled: bool,
pub dither_type: DitherType,
pub amplitude: f64,
}
#[derive(Debug, Clone)]
pub enum DitherType {
Triangular,
Gaussian,
Uniform,
HighPass,
}
#[derive(Debug, Clone)]
pub struct NoiseShapingConfig {
pub enabled: bool,
pub filter_order: usize,
pub cutoff_frequency: f64,
}
#[derive(Debug)]
pub struct AdaptiveQuantizationConfig<T: Float + Debug + Send + Sync + 'static> {
pub enabled: bool,
pub adaptation_rate: T,
pub target_quality: f64,
pub feedback_mechanism: FeedbackMechanism,
}
#[derive(Debug, Clone)]
pub enum FeedbackMechanism {
ErrorBased,
QualityBased,
PerformanceBased,
Hybrid,
}
#[derive(Debug, Clone)]
pub struct NoiseCharacteristics {
pub distribution: NoiseDistribution,
pub variance: f64,
pub correlation: f64,
pub time_varying: bool,
}
#[derive(Debug, Clone)]
pub enum NoiseDistribution {
Uniform,
Gaussian,
Laplacian,
StudentT,
Custom,
}
#[derive(Debug, Clone)]
pub enum PropagationModel {
Linear,
Nonlinear,
Statistical,
MonteCarlo,
}
#[derive(Debug, Clone, Copy)]
pub enum PlanningAlgorithm {
GreedyPlanning,
OptimalPlanning,
HeuristicPlanning,
MachineLearningBased,
}
#[derive(Debug, Clone, Copy)]
pub enum AllocationStrategy {
FirstFit,
BestFit,
WorstFit,
NextFit,
BuddySystem,
PoolBased,
}
#[derive(Debug, Clone, Copy)]
pub enum ProfilingStrategy {
SamplingBased,
InstrumentationBased,
HardwareCounters,
SoftwareTracing,
Hybrid,
}
#[derive(Debug, Clone, Copy)]
pub enum AnalysisToolType {
TimelineAnalyzer,
HotspotDetector,
BottleneckAnalyzer,
MemoryAnalyzer,
CommunicationAnalyzer,
}
#[derive(Debug, Clone)]
pub struct BlockSparsityConfig {
pub block_size: (usize, usize),
pub sparsity_ratio: f64,
pub pattern: SparsityPattern,
pub structured: bool,
}
#[derive(Debug, Clone, Copy)]
pub enum SparsityPattern {
Random,
Structured,
NToM(usize, usize),
Block,
Magnitude,
}
#[derive(Debug, Clone, Copy)]
pub enum RewritePriority {
Low,
Medium,
High,
Critical,
}