1pub mod backend;
16pub mod compute_context;
17pub mod error;
18pub mod fallback;
19pub mod memory;
20pub mod shaders;
21
22pub mod buffer_pool;
24pub mod pressure_monitor;
25
26pub mod kernel_optimizer;
28pub mod performance_monitor;
29pub mod pipeline_cache;
30
31#[cfg(any(feature = "gpu", feature = "webgpu"))]
32pub mod webgpu_backend;
33
34#[cfg(any(feature = "gpu", feature = "webgpu"))]
35pub mod device;
36
37#[cfg(all(target_arch = "wasm32", feature = "webgpu"))]
39pub mod wasm_gpu_bridge;
40
41pub use backend::{BackendSelector, ComputeProfile};
43pub use compute_context::{ComputeContext, ComputePerformanceStats};
44pub use error::ComputeError;
45pub use fallback::FallbackManager;
46pub use memory::{BufferHandle, MemoryStats};
47
48pub use buffer_pool::{
50 AdvancedBufferPool, BufferCategory, GpuBuffer as AdvancedGpuBuffer, MemoryPressure,
51 PoolStatisticsSnapshot,
52};
53pub use pressure_monitor::{
54 MemoryPressureMonitor, MonitorConfig, MonitoringReport, MonitoringStatistics, PressureReading,
55};
56pub use memory::{
58 EnhancedGpuMemoryManager, EnhancedMemoryStats, GpuMemoryConfig, GpuMemoryManager,
59 GpuMemoryManagerEnhanced, OptimizationResult, WebGPUMemoryManager,
60};
61
62pub use kernel_optimizer::{GpuCapabilities, KernelConfig, KernelOptimizer, OptimizationMetrics};
64pub use performance_monitor::{
65 PerformanceAlert, PerformanceMeasurement, PerformanceMonitor, PerformanceStats,
66};
67pub use pipeline_cache::{CacheStats, CompilationStats, PipelineCache};
68
69pub use backend::{BackendCapabilities, BackendType, MatrixSize, OperationType};
71pub use backend::{ComputeBackend, MemoryManager, VectorOps};
72
73#[cfg(any(feature = "gpu", feature = "webgpu"))]
75pub use webgpu_backend::WebGPUBackend;
76
77#[cfg(any(feature = "gpu", feature = "webgpu"))]
78pub use shaders::*;
79
80#[cfg(any(feature = "gpu", feature = "webgpu"))]
81pub use device::GpuDevice;
82
83#[cfg(all(target_arch = "wasm32", feature = "webgpu"))]
85pub use wasm_gpu_bridge::{
86 BrowserCompatibility, CrossOriginManager, SharedBuffer, WasmGpuBridge, WasmMemoryManager,
87 WasmPerformanceMonitor, WebGpuContext,
88};
89
90pub fn has_enhanced_memory_features() -> bool {
92 cfg!(feature = "gpu")
93}
94
95pub fn get_memory_capabilities() -> MemoryCapabilities {
97 MemoryCapabilities {
98 webgpu_available: cfg!(feature = "gpu"),
99 enhanced_features: has_enhanced_memory_features(),
100 pressure_monitoring: cfg!(feature = "gpu"),
101 circuit_breaker: cfg!(feature = "gpu"),
102 buffer_pooling: true,
103 predictive_analytics: cfg!(feature = "gpu"),
104 wasm_gpu_bridge: has_wasm_gpu_bridge(),
105 }
106}
107
108#[cfg(target_arch = "wasm32")]
110pub fn has_wasm_gpu_bridge() -> bool {
111 cfg!(feature = "wasm-gpu")
112}
113
114#[cfg(not(target_arch = "wasm32"))]
115pub fn has_wasm_gpu_bridge() -> bool {
116 false
117}
118
119#[derive(Debug, Clone)]
121pub struct MemoryCapabilities {
122 pub webgpu_available: bool,
123 pub enhanced_features: bool,
124 pub pressure_monitoring: bool,
125 pub circuit_breaker: bool,
126 pub buffer_pooling: bool,
127 pub predictive_analytics: bool,
128 pub wasm_gpu_bridge: bool,
129}
130
131impl MemoryCapabilities {
132 pub fn summary(&self) -> String {
134 let features = [
135 ("WebGPU", self.webgpu_available),
136 ("Enhanced Features", self.enhanced_features),
137 ("Pressure Monitoring", self.pressure_monitoring),
138 ("Circuit Breaker", self.circuit_breaker),
139 ("Buffer Pooling", self.buffer_pooling),
140 ("Predictive Analytics", self.predictive_analytics),
141 ("WASM GPU Bridge", self.wasm_gpu_bridge),
142 ];
143
144 let enabled: Vec<&str> = features
145 .iter()
146 .filter_map(|(name, enabled)| if *enabled { Some(*name) } else { None })
147 .collect();
148
149 format!("Memory Capabilities: {}", enabled.join(", "))
150 }
151}
152
153#[cfg(test)]
155mod tests;