pub mod algorithms;
pub mod communication;
pub mod distribution;
pub mod computation;
pub mod coordination;
pub mod matrix;
pub mod solvers;
pub mod decomposition;
pub mod mpi;
pub mod config;
pub mod stats;
pub mod load_balancer;
pub mod fault_tolerance;
pub mod redundancy;
pub mod monitoring;
pub mod capacity_planning;
pub mod topology;
pub mod context;
pub mod ops;
pub mod framework;
pub use communication::{CommunicationBackend, DistributedCommunicator, MessageTag};
pub use coordination::{DistributedCoordinator, SynchronizationBarrier};
pub use distribution::{DataDistribution, DistributionStrategy, LoadBalancer};
pub use matrix::{DistributedMatrix, DistributedVector};
pub use mpi::{
MPIBackend, MPIConfig, MPIImplementation, BufferStrategy, CollectiveHints,
MPIErrorHandling, MPIPerformanceTuning, MPICommunicator
};
pub use config::{DistributedConfig, CompressionConfig, CompressionAlgorithm};
pub use stats::DistributedStats;
pub use load_balancer::{AdaptiveLoadBalancer, LoadPredictionModel, WorkloadType};
pub use fault_tolerance::{FaultToleranceManager, NodeHealthMonitor, CheckpointManager, RecoveryStrategy};
pub use redundancy::{RedundancyManager, RedundancyPolicy};
pub use monitoring::{ResourceMonitor, MetricsCollector, AlertSystem};
pub use capacity_planning::{CapacityPlanner, DemandForecastModel};
pub use topology::{NetworkTopologyAnalyzer, TopologySnapshot};
pub use context::{DistributedContext, initialize_distributed, finalize_distributed};
pub use ops::DistributedLinalgOps;
pub use framework::AdvancedDistributedFramework;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_distributed_config() {
let config = DistributedConfig::default()
.with_num_nodes(4)
.with_node_rank(0)
.with_blocksize(512)
.with_simd(true);
assert_eq!(config.num_nodes, 4);
assert_eq!(config.node_rank, 0);
assert_eq!(config.blocksize, 512);
assert!(config.enable_simd);
}
#[test]
fn test_compression_config() {
let compression_config = CompressionConfig::default();
assert_eq!(compression_config.algorithm, CompressionAlgorithm::LZ4);
}
#[test]
fn test_distributed_stats() {
let mut stats = DistributedStats::new();
stats.record_communication(1024, 10);
stats.record_computation(50);
assert_eq!(stats.bytes_transferred, 1024);
assert_eq!(stats.comm_time_ms, 10);
assert_eq!(stats.compute_time_ms, 50);
assert_eq!(stats.comm_events, 1);
assert_eq!(stats.operations_count, 1);
assert_eq!(stats.comm_compute_ratio(), 0.2);
assert_eq!(stats.bandwidth_utilization(), 102.4);
}
}