.. DAO documentation master file Durham Adaptive Optics (DAO) ============================ .. raw:: html
High-Performance Real-Time Framework for Adaptive Optics Systems
DAO is a modular, high-performance software framework designed for demanding adaptive optics applications. Built around shared memory architecture, it delivers low-latency data transfer, robust error handling, and cross-platform compatibility for scientific computing and real-time control systems.
Shared memory architecture enables microsecond-level data transfer between processes, essential for real-time adaptive optics control loops.
Flexible component-based architecture allows easy integration of wavefront sensors, deformable mirrors, and custom control algorithms.
Full support for Linux, macOS, and Windows with consistent APIs and performance across all platforms.
Built-in support for multi-dimensional arrays, various data types, and seamless integration with Python and C++ workflows.
Advanced state machine management, comprehensive error handling, and real-time considerations for mission-critical applications.
Optimized for high-speed data processing with NUMA awareness, thread management, and efficient memory handling.
Create your first shared memory block and start passing data between processes:
.. code-block:: python import dao import numpy as np # Create a shared memory block shm = dao.shm('/tmp/mydata.im.shm', np.zeros([1024, 1024], dtype=np.uint16)) # Write data from one process shm.set_data(my_camera_image) # Read from another process data = shm.get_data() .. raw:: htmlLow-latency inter-process communication foundation
Redis-backed registry and ZMQ streaming across machines
Circular-buffer extension for multi-frame shared memory
Real-time thread system and lifecycle management
System state management and transitions
Modular component architecture and interfaces
Model and optimise 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.