Table of Contents
Fetching ...

Introducing a new generation Adaptive Optics simulation framework: from PASSATA to SPECULA

Fabio Rossi, Alfio Puglisi, Guido Agapito

TL;DR

SPECULA addresses the limitations of PASSATA by providing a Python-based, end-to-end AO simulation framework with a declarative YAML description and an object-oriented network of processing/data objects. It enables CPU/GPU execution and scalable multi-node HPC operation via MPI, with automated object construction, device-specific allocation, and CUDA-graph optimization. The framework also supports hardware-in-the-loop, data replay, and live visualization, and includes extensive validation against PASSATA across multiple AO systems. Collectively, SPECULA offers a scalable, extensible, open-source platform for designing, validating, and operating complex AO systems in both lab and HPC environments.

Abstract

Numerical end-to-end simulation in Adaptive Optics (AO) is a key tool in the development of complex systems, from the initial design to the commissioning phase. Based on our previous experience with PASSATA, we decided to develop a new AO simulation framework in Python language, naming it SPECULA (short for: Scalable Parallel Execution of Computations Upscaling Large Adaptive optics simulations). Following an object-oriented approach, the physical entities are modeled as processing objects connected to each other to exchange data objects. A simulation is run by providing its description instead of writing and executing a specific script. The Python language and its library flexibility allowed us to write one single code that can be run on CPU and GPU platforms. We put a strong focus on computational efficiency, relying on CuPy and its interface to access the CUDA-stream mechanism. Moreover, SPECULA is capable of distributed computations over multiple processing nodes, making it suitable to run in an HPC environment, as tested on the Italian supercomputer Leonardo. SPECULA can also be used in laboratory environment to implement a hybrid simulation, allowing us to interface simulated and concrete objects: this feature was demonstrated in the Adaptive Optics laboratories at Arcetri Observatory. In this paper, we describe the main characteristics of SPECULA, show some relevant examples of its use, and finally draw our goals for the future.

Introducing a new generation Adaptive Optics simulation framework: from PASSATA to SPECULA

TL;DR

SPECULA addresses the limitations of PASSATA by providing a Python-based, end-to-end AO simulation framework with a declarative YAML description and an object-oriented network of processing/data objects. It enables CPU/GPU execution and scalable multi-node HPC operation via MPI, with automated object construction, device-specific allocation, and CUDA-graph optimization. The framework also supports hardware-in-the-loop, data replay, and live visualization, and includes extensive validation against PASSATA across multiple AO systems. Collectively, SPECULA offers a scalable, extensible, open-source platform for designing, validating, and operating complex AO systems in both lab and HPC environments.

Abstract

Numerical end-to-end simulation in Adaptive Optics (AO) is a key tool in the development of complex systems, from the initial design to the commissioning phase. Based on our previous experience with PASSATA, we decided to develop a new AO simulation framework in Python language, naming it SPECULA (short for: Scalable Parallel Execution of Computations Upscaling Large Adaptive optics simulations). Following an object-oriented approach, the physical entities are modeled as processing objects connected to each other to exchange data objects. A simulation is run by providing its description instead of writing and executing a specific script. The Python language and its library flexibility allowed us to write one single code that can be run on CPU and GPU platforms. We put a strong focus on computational efficiency, relying on CuPy and its interface to access the CUDA-stream mechanism. Moreover, SPECULA is capable of distributed computations over multiple processing nodes, making it suitable to run in an HPC environment, as tested on the Italian supercomputer Leonardo. SPECULA can also be used in laboratory environment to implement a hybrid simulation, allowing us to interface simulated and concrete objects: this feature was demonstrated in the Adaptive Optics laboratories at Arcetri Observatory. In this paper, we describe the main characteristics of SPECULA, show some relevant examples of its use, and finally draw our goals for the future.
Paper Structure (17 sections, 7 figures, 4 tables)

This paper contains 17 sections, 7 figures, 4 tables.

Figures (7)

  • Figure 1: The nodes A and B are in the same class, both are direct predecessors of C.
  • Figure 2: The process of assigning a trigger order to each processing object in SPECULA. (a) Initial simulation graph. (b) Delayed connections are removed, leaves get the initial trigger order (0). (c) Leaves are removed, trigger_order is incremented, new leaves get assigned the current trigger_order. (d) Leaves are removed, trigger_order is incremented, new leaves get assigned the current trigger_order. (e) Leaves are removed, trigger_order is incremented, new leaves get assigned the current trigger_order. All the connections are restored.
  • Figure 3: The inputs of D are handled as s simple reference to the corresponding output in the case of the output from A, with a memory copy in the case of the output from B, with a message passing mechanism in the case of the output from C.
  • Figure 4: A gallery of display objects output. (a) PhaseDisplay, at pupil. (b) ModesDisplay. (c) PixelsDisplay. (d) SlopecDisplay. (e) PhaseDisplay, at Deformable Mirror output. (f) PlotDisplay. (g) PsfDisplay.
  • Figure 5: Example a web page generated by the display server, showing the output of two processing objects after clicking on the "out_layer" and "out_sr" links.
  • ...and 2 more figures