Module optimization

Module optimization 

Source
Expand description

Optimization and performance enhancements for metrics computation

This module provides optimized implementations of metrics calculations for improved performance, memory efficiency, and numerical stability.

The optimization module contains four main components:

  1. parallel - Tools for parallel computation of metrics
  2. memory - Tools for memory-efficient metrics computation
  3. numeric - Tools for numerically stable metrics computation
  4. quantum_acceleration - Quantum-inspired algorithms for exponential speedups

§Examples

§Using StableMetrics for numerical stability

use scirs2_metrics::optimization::numeric::StableMetrics;
use scirs2_metrics::error::Result;

fn compute_kl_divergence(p: &[f64], q: &[f64]) -> Result<f64> {
    let stable = StableMetrics::<f64>::new()
        .with_epsilon(1e-10)
        .with_clip_values(true);
    stable.kl_divergence(p, q)
}

§Using parallel computation for batch metrics

use scirs2_metrics::optimization::parallel::{ParallelConfig, compute_metrics_batch};
use scirs2_metrics::error::Result;
use scirs2_core::ndarray::Array1;

fn compute_multiple_metrics(y_true: &Array1<f64>, y_pred: &Array1<f64>) -> Result<Vec<f64>> {
    let config = ParallelConfig {
        parallel_enabled: true,
        min_chunk_size: 1000,
        num_threads: None,
    };

    let metrics: Vec<Box<dyn Fn(&Array1<f64>, &Array1<f64>) -> Result<f64> + Send + Sync>> = vec![
        // Define your metric functions here
    ];

    compute_metrics_batch(y_true, y_pred, &metrics, &config)
}

§Using memory-efficient metrics for large datasets

use scirs2_metrics::optimization::memory::{StreamingMetric, ChunkedMetrics};
use scirs2_metrics::error::Result;

struct StreamingMeanAbsoluteError;

impl StreamingMetric<f64> for StreamingMeanAbsoluteError {
    type State = (f64, usize); // Running sum and count
     
    fn init_state(&self) -> Self::State {
        (0.0, 0)
    }
     
    fn update_state(&self, state: &mut Self::State, batch_true: &[f64], batch_pred: &[f64]) -> Result<()> {
        for (y_t, y_p) in batch_true.iter().zip(batch_pred.iter()) {
            state.0 += (y_t - y_p).abs();
            state.1 += 1;
        }
        Ok(())
    }
     
    fn finalize(&self, state: &Self::State) -> Result<f64> {
        if state.1 == 0 {
            return Err(scirs2_metrics::error::MetricsError::InvalidInput(
                "No data processed".to_string()
            ));
        }
        Ok(state.0 / state.1 as f64)
    }
}

§Using quantum-inspired acceleration for large-scale computations

use scirs2_metrics::optimization::quantum_acceleration::{QuantumMetricsComputer, QuantumConfig};
use scirs2_metrics::error::Result;
use scirs2_core::ndarray::Array1;

fn compute_quantum_correlation(x: &Array1<f64>, y: &Array1<f64>) -> Result<f64> {
    let config = QuantumConfig::default();
    let mut quantum_computer = QuantumMetricsComputer::new(config)?;
    quantum_computer.quantum_correlation(&x.view(), &y.view())
}

Re-exports§

pub use advanced_memory_optimization::AdvancedMemoryPool;
pub use advanced_memory_optimization::AllocationStrategy;
pub use advanced_memory_optimization::BlockType;
pub use advanced_memory_optimization::MemoryBlock;
pub use advanced_memory_optimization::MemoryPoolConfig;
pub use advanced_memory_optimization::MemoryStats;
pub use advanced_memory_optimization::StrategyBenchmark;
pub use distributed::DistributedConfig;
pub use distributed::DistributedMetricsBuilder;
pub use distributed::DistributedMetricsCoordinator;
pub use distributed_advanced::AdvancedClusterConfig;
pub use distributed_advanced::AdvancedDistributedCoordinator;
pub use distributed_advanced::AutoScalingConfig;
pub use distributed_advanced::ClusterState;
pub use distributed_advanced::ConsensusAlgorithm;
pub use distributed_advanced::ConsensusConfig;
pub use distributed_advanced::DistributedTask;
pub use distributed_advanced::FaultToleranceConfig;
pub use distributed_advanced::LocalityConfig;
pub use distributed_advanced::NodeInfo;
pub use distributed_advanced::NodeRole;
pub use distributed_advanced::NodeStatus;
pub use distributed_advanced::OptimizationConfig;
pub use distributed_advanced::ResourceRequirements;
pub use distributed_advanced::ShardingConfig;
pub use distributed_advanced::ShardingStrategy;
pub use distributed_advanced::TaskPriority;
pub use distributed_advanced::TaskType;
pub use gpu_acceleration::BenchmarkResults;
pub use gpu_acceleration::GpuAccelConfig;
pub use gpu_acceleration::GpuInfo;
pub use gpu_acceleration::GpuMetricsComputer;
pub use gpu_kernels::AdvancedGpuComputer;
pub use gpu_kernels::BatchSettings;
pub use gpu_kernels::CudaContext;
pub use gpu_kernels::ErrorHandling;
pub use gpu_kernels::GpuApi;
pub use gpu_kernels::GpuComputeConfig;
pub use gpu_kernels::GpuComputeResults;
pub use gpu_kernels::GpuPerformanceStats;
pub use gpu_kernels::KernelMetrics;
pub use gpu_kernels::KernelOptimization;
pub use gpu_kernels::MemoryStrategy;
pub use gpu_kernels::OpenClContext;
pub use gpu_kernels::TransferMetrics;
pub use gpu_kernels::VectorizationLevel;
pub use hardware::HardwareAccelConfig;
pub use hardware::HardwareAcceleratedMatrix;
pub use hardware::HardwareCapabilities;
pub use hardware::SimdDistanceMetrics;
pub use hardware::SimdStatistics;
pub use hardware::VectorWidth;
pub use memory::ChunkedMetrics;
pub use memory::StreamingMetric;
pub use numeric::StableMetric;
pub use numeric::StableMetrics;
pub use parallel::ParallelConfig;
pub use quantum_acceleration::InterferencePatterns;
pub use quantum_acceleration::QuantumBenchmarkResults;
pub use quantum_acceleration::QuantumConfig;
pub use quantum_acceleration::QuantumMetricsComputer;
pub use quantum_acceleration::QuantumProcessor;
pub use quantum_acceleration::SuperpositionManager;
pub use quantum_acceleration::VqeParameters;
pub use simd_gpu::SimdMetrics;

Modules§

advanced_memory_optimization
Advanced memory optimization for GPU acceleration
distributed
Advanced distributed computing with modular architecture
distributed_advanced
Advanced distributed optimization with consensus algorithms and fault recovery
enhanced_gpu_kernels
Enhanced GPU acceleration with real compute shaders and kernel optimization
gpu_acceleration
GPU acceleration for metrics computation
gpu_kernels
Advanced GPU kernels for high-performance metrics computation
hardware
Hardware acceleration utilities for metrics computation
memory
Memory-efficient metrics computation
numeric
Numerically stable implementations of metrics
parallel
Parallel computation utilities for metrics
quantum_acceleration
Quantum-inspired acceleration for metrics computation
simd_gpu
SIMD optimizations and GPU acceleration support for metrics computation