//! GPU Training Benchmark System for Production ML Models
//!
//! This module provides comprehensive benchmarking for GPU-based model training
//! with real market data from Databento (DBN format). Measures actual training
//! performance, memory usage, and stability metrics across different models.
//!
//! # Model Benchmarks
//!
//! - `dqn_benchmark` - Deep Q-Network (Module 6a) - 50-150MB VRAM
//! - `ppo_benchmark` - Proximal Policy Optimization (Module 6b) - 80-200MB VRAM
//! - `mamba2_benchmark` - MAMBA-2 State Space Model (Module 6c) - 150-500MB VRAM
//! - `tft_benchmark` - Temporal Fusion Transformer (Module 6d) - 1.5-2.5GB VRAM
//!
//! # Core Components
//!
//! - `stability_validator` - Training stability detection (Module 5)
//! - `memory_profiler` - GPU memory tracking
//! - `gpu_hardware` - GPU hardware detection
//! - `statistical_sampler` - Performance statistics
//! - `batch_size_finder` - Optimal batch size selection
//! - `data_loader` - Real market data loading

pub mod batch_size_finder;
pub mod data_loader;
pub mod dqn_benchmark;
pub mod gpu_hardware;
pub mod mamba2_benchmark;
pub mod memory_profiler;
pub mod performance_tracker;
pub mod ppo_benchmark;
pub mod stability_validator;
pub mod statistical_sampler;
pub mod tft_benchmark;

// Re-export core types
pub use batch_size_finder::{BatchSizeConfig, BatchSizeFinder};
pub use data_loader::{DataStatistics, DbnDataLoader, MarketDataPoint};
pub use gpu_hardware::GpuHardwareManager;
pub use memory_profiler::{MemoryProfiler, MemorySnapshot};
pub use performance_tracker::{
    PerformanceBaseline, PerformanceMetrics, PerformanceTracker, RegressionItem, RegressionResult,
};
pub use stability_validator::{GradientHealth, LossTrend, StabilityMetrics, StabilityValidator};
pub use statistical_sampler::{BenchmarkStatistics, StatisticalSampler};

// Re-export DQN benchmark types
pub use dqn_benchmark::{DqnBenchmarkResult, DqnBenchmarkRunner};

// Re-export PPO benchmark types
pub use ppo_benchmark::{PpoBenchmarkResult, PpoBenchmarkRunner};

// Re-export MAMBA-2 benchmark types
pub use mamba2_benchmark::{Mamba2BenchmarkResult, Mamba2BenchmarkRunner};

// Re-export TFT benchmark types
pub use tft_benchmark::{TftBenchmarkResult, TftBenchmarkRunner};
