pub mod cache;
pub mod compression;
pub mod memory_intelligence;
pub mod numa;
pub mod patterns;
pub mod training;
pub mod types;
pub use types::*;
pub use memory_intelligence::{
AdvancedMemoryIntelligence, AdvancedMemoryOptimizationReport, ComplexityLevel,
OptimizationCategory, OptimizationRecommendation,
};
pub use cache::{
BandwidthMeasurement, BandwidthMonitor, BandwidthSaturationPrediction, BottleneckType,
CacheAccessPattern, CachePerformancePrediction, ConvolutionalLayer, DenseLayer, LstmLayer,
NeuralCachePredictionModel, NeuralModelParameters, OptimizerType, PerformanceBottleneck,
TrainingMetrics,
};
pub use compression::{
AdaptiveCompressionEngine, AttentionMechanism, BayesianNetwork, ClassificationNetwork,
CompressionAlgorithm, CompressionConstraints, CompressionMetrics, CompressionQualityAssessor,
CompressionSelectorNetwork, ConfidenceEstimator, FeatureExtractor, FeatureType,
PerceptualFeatureType, PerceptualQualityModel, PriorDistribution, QualityMetric,
QualityPredictionNetwork, SoftmaxLayer, UncertaintyQuantificationMethod, VariationalParameters,
};
pub use numa::{
MemoryAccessSample, MemoryAllocationStrategy, NumaNode, NumaOptimizationAction,
NumaOptimizationPolicy, NumaOptimizationTrigger, NumaPerformanceMetrics,
NumaPerformanceMonitor, NumaSuccessCriterion, NumaTopology, NumaTopologyOptimizer,
};
pub use patterns::{
HashFunction, IndexParameters, LocalitySensitiveHashing, MemoryAccess, MemoryAccessPattern,
PatternDatabase, PatternFeatures, PatternPerformance, PatternSimilarityIndex,
};
pub use training::{
AdvancedMemoryLayout, AdvancedMemoryPatternLearning, BenchmarkResult, BenchmarkSuite,
ClassificationHead, ConvolutionalPatternNetwork, EffortLevel, EmbeddingLayer, Experience,
ExperienceReplayBuffer, FitnessEvaluator, FitnessMetric, GeneticAlgorithmParameters,
GeneticLayoutOptimizer, MemoryBenchmark, OptimizationRecommendations, OptimizationType,
PatternOptimization, PolicyNetwork, PoolingLayer, PoolingType, PrefetchStrategy, PrefetchType,
QNetwork, RLLearningParameters, ReinforcementLearningAgent, SelectionMethod,
};
#[cfg(test)]
mod tests {
use super::*;
use scirs2_core::ndarray::Array2;
#[test]
fn test_advanced_memory_intelligence_creation() {
let memory_intelligence =
AdvancedMemoryIntelligence::<f32>::new().expect("Operation failed");
drop(memory_intelligence);
}
#[test]
fn test_cache_performance_prediction() {
let memory_intelligence =
AdvancedMemoryIntelligence::<f32>::new().expect("Operation failed");
let workload = WorkloadCharacteristics {
operation_types: vec![MemoryOperationType::MatrixMultiplication],
datasizes: vec![TensorShape {
dimensions: vec![100, 100],
element_type: ElementType::F32,
memory_layout: MemoryLayout::RowMajor,
}],
computation_intensity: 1.0,
memory_intensity: 0.5,
};
let access_pattern = CacheAccessPattern::from_workload(&workload);
let prediction = memory_intelligence.predict_cache_performance(&access_pattern);
assert!(prediction.is_ok());
let result = prediction.expect("Operation failed");
assert!(result.hit_rate >= 0.0 && result.hit_rate <= 1.0);
assert!(result.confidence >= 0.0 && result.confidence <= 1.0);
}
#[test]
fn test_compression_algorithm_selection() {
let memory_intelligence =
AdvancedMemoryIntelligence::<f32>::new().expect("Operation failed");
let data = Array2::zeros((100, 100));
let constraints = CompressionConstraints::default();
let result = memory_intelligence.select_compression_algorithm(&data.view(), &constraints);
assert!(result.is_ok());
}
#[test]
fn test_numa_optimization() {
let memory_intelligence =
AdvancedMemoryIntelligence::<f32>::new().expect("Operation failed");
let workload = WorkloadCharacteristics {
operation_types: vec![MemoryOperationType::MatrixMultiplication],
datasizes: vec![TensorShape {
dimensions: vec![1000, 1000],
element_type: ElementType::F32,
memory_layout: MemoryLayout::RowMajor,
}],
computation_intensity: 2.0,
memory_intensity: 1.0,
};
let result = memory_intelligence.optimize_numa_allocation(&workload);
assert!(result.is_ok());
}
#[test]
fn test_bandwidth_monitoring() {
let memory_intelligence =
AdvancedMemoryIntelligence::<f32>::new().expect("Operation failed");
let result = memory_intelligence.monitor_bandwidth_saturation();
assert!(result.is_ok());
let prediction = result.expect("Operation failed");
assert!(prediction.saturation_level >= 0.0 && prediction.saturation_level <= 1.0);
assert!(prediction.confidence >= 0.0 && prediction.confidence <= 1.0);
}
#[test]
fn test_comprehensive_analysis() {
let memory_intelligence =
AdvancedMemoryIntelligence::<f32>::new().expect("Operation failed");
let workload = WorkloadCharacteristics {
operation_types: vec![MemoryOperationType::MatrixMultiplication],
datasizes: vec![TensorShape {
dimensions: vec![500, 500],
element_type: ElementType::F32,
memory_layout: MemoryLayout::RowMajor,
}],
computation_intensity: 1.5,
memory_intensity: 0.8,
};
let data = Array2::ones((500, 500));
let result = memory_intelligence.comprehensive_analysis(&workload, &data.view());
assert!(result.is_ok());
let report = result.expect("Operation failed");
assert!(report.optimization_score >= 0.0 && report.optimization_score <= 1.0);
assert!(report.confidence >= 0.0 && report.confidence <= 1.0);
assert!(!report.recommendations.is_empty());
}
#[test]
fn test_neural_model_parameters() {
let params = NeuralModelParameters::default();
assert!(params.learning_rate > 0.0);
assert!(params.batchsize > 0);
assert!(params.validation_split > 0.0 && params.validation_split < 1.0);
}
#[test]
fn test_compression_constraints() {
let constraints = CompressionConstraints::default();
assert!(constraints.min_compression_ratio >= 1.0);
assert!(constraints.max_quality_loss >= 0.0 && constraints.max_quality_loss <= 1.0);
assert!(constraints.memory_budget > 0);
}
#[test]
fn test_genetic_algorithm_parameters() {
let params = GeneticAlgorithmParameters::default();
assert!(params.populationsize > 0);
assert!(params.crossover_rate >= 0.0 && params.crossover_rate <= 1.0);
assert!(params.mutation_rate >= 0.0 && params.mutation_rate <= 1.0);
assert!(params.elitism_rate >= 0.0 && params.elitism_rate <= 1.0);
}
}