daolite — Adaptive Optics Latency Analysis
daolite
Model and optimize computational latency in Adaptive Optics real-time control systems.
Estimate per-component timing, compare hardware configurations (CPUs, GPUs, network), and iterate on pipeline designs to meet real-time constraints.
What is daolite?
daolite is a Python package for modeling the computational timing and latency of adaptive optics (AO) systems. It helps you:
Design AO Systems: Compare different hardware configurations before building
Identify Bottlenecks: Find which components limit your frame rate
Optimize Performance: Test different algorithms and processing strategies
Validate Timing: Ensure your system meets real-time requirements
🔬Component-Based Modeling
Model cameras, calibration, centroiders, reconstructors, and controllers with accurate timing estimates based on hardware specifications.
⚙️Hardware Comparison
Compare CPUs, GPUs, and network configurations. Use built-in hardware profiles or define your own custom resources.
�Pipeline Visualization
Generate timing diagrams showing when each component runs, where dependencies occur, and total pipeline latency.
🎯Agenda-Based API
Model pipelined and grouped processing patterns that match real RTC implementations for accurate timing predictions.
🔗Flexible Dependencies
Build complex multi-guide star, multi-DM systems with automatic dependency resolution and parallel component execution.
�JSON Configuration
Define pipelines in JSON for reproducible experiments, parameter sweeps, and version-controlled system designs.
Key Features
- Comprehensive Component Library
Built-in models for all major AO pipeline stages: PCO cameras, pixel calibration, Shack-Hartmann centroiders, matrix-vector multiplication reconstruction, and DM control.
- Realistic Hardware Models
Pre-configured profiles for AMD EPYC CPUs, Intel Xeon processors, NVIDIA GPUs (RTX, A100, H100), and various network technologies.
- YAML-Based Hardware Definitions
Easily add new hardware by creating YAML configuration files with memory bandwidth, FLOP rates, and other specifications.
- Python and JSON APIs
Build pipelines programmatically with Python or define them declaratively in JSON for easy sharing and reproducibility.