Skip to main content

trueno/monitor/
mod.rs

1//! GPU Monitoring, Tracing, and Visualization (TRUENO-SPEC-010)
2//!
3//! This module provides comprehensive GPU monitoring capabilities:
4//! - Device discovery and information
5//! - Real-time metrics collection
6//! - Cross-platform support (wgpu + optional CUDA)
7//!
8//! # Design Philosophy
9//!
10//! **Dual-Backend Architecture**: Supports both wgpu (cross-platform) and
11//! trueno-gpu (native CUDA) for maximum flexibility.
12//!
13//! # References
14//!
15//! - Nickolls et al. (2008): GPU parallel computing model
16//! - Gregg (2016): Flame graph visualization
17//! - btop: NVML/ROCm SMI patterns
18//!
19//! # Example
20//!
21//! ```rust,ignore
22//! use trueno::monitor::{GpuDeviceInfo, GpuMonitor};
23//!
24//! // Query device information
25//! let info = GpuDeviceInfo::query()?;
26//! println!("GPU: {}", info.name);
27//! println!("VRAM: {} MB", info.vram_total / (1024 * 1024));
28//!
29//! // Start background monitoring
30//! let monitor = GpuMonitor::new(0)?;
31//! let metrics = monitor.collect()?;
32//! println!("VRAM used: {} / {}", metrics.memory.used, metrics.memory.total);
33//! ```
34
35pub mod backends;
36mod compute_device;
37mod config;
38mod gpu_monitor;
39mod memory;
40mod metrics;
41mod types;
42
43#[cfg(test)]
44mod tests;
45
46// Re-export all public types at the module level
47pub use backends::cuda_monitor_available;
48#[cfg(feature = "cuda-monitor")]
49pub use backends::{enumerate_cuda_devices, query_cuda_device_info, query_cuda_memory};
50pub use compute_device::{ComputeDevice, DeviceId, DeviceType};
51pub use config::{MonitorConfig, MonitorError};
52pub use gpu_monitor::GpuMonitor;
53pub use memory::GpuMemoryMetrics;
54pub use metrics::{
55    GpuClockMetrics, GpuMetrics, GpuPcieMetrics, GpuPowerMetrics, GpuThermalMetrics, GpuUtilization,
56};
57pub use types::{GpuBackend, GpuDeviceInfo, GpuVendor};