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.

Built with DAO

Indices and tables