1. Overview
1.1. Compute Unit (CU)
cacao runs a collection of compute units to perform all required operations. A compute unit performs a specific step of the AO loop, such as extracting modal coefficients from the WFS signal stream.
Each CU consists of a function parameter structure (FPS) holding the parameters for the computation, and a tmux sesssion within which code is executed. Two processes can run within a CU: the configuration process that manages function parameters, and the run process that executes the computation (often a loop in a real-time environment). The configuration and run processes are executed in tmux windows 1 and 2, with window 0 reserved for housekeeping.
1.2. Selecting CUs
The user must first select which CUs will be deployed.
CUs are registered by adding entries in the cacaovars.bash file. For example, the following entry will register the mlat (measure latency) CU:
export CACAO_FPSPROC_MLAT="ON"
During deployment, the cacao-fpslistadd script is called to add registered CUs to the fpslist.txt ASCII file. The script calls all instances of cacao-fpslistadd- scripts, each one handling a single CU registration. For example, the mlat process is registered by cacao-fpslistadd-MLAT, which will test if the CACAO_FPSPROC_MLAT environment variable is set to ON, and register the CU if so.
cacao-fpslistadd is typically not called directly by the user, but is part of the cacao-setup (which reads the cacaovars.bash file prior to calling cacao-fpslistadd). The full list of registered CUs available, and their status (registered ?) can be inspected by running :
source cacaovars.LOOPNAME.bash; cacao-fpslistadd -l
Registered CUs will be labeled as ON, while others are labeled as OFF.
cacao-fpslistadd scans for scripts matching cacao-fpslistadd-* and milk-fpslistadd-* both in the milk intallation bin directory and the current directory. If deploying a custom CU (named for example CUSTOMCU), users should ensure the corresponding cacao-fpslistadd-CUSTOMCU is in the LOOPROOTDIR directory where cacao-fpslistadd is to be run.
1.3. CU categories
2. List of processes
2.1. System Setup
| Name | Description | cacaovar | Notes |
|---|---|---|---|
| DMch2disp- | DM control, manage and coadd channels | DMCH2DISP | Optional |
| acquWFS- | Pre-process WFS input to WFS signal | ACQUWFS | Optional |
2.2. Simulation
| Name | Description | cacaovar | Notes |
|---|---|---|---|
| simmvmgpu- | Simulate WFS response | SIMMVMGPU | |
| Add simulated turbulence to DM | DMATMTURB | ||
| Add delay to DM commands | DMSIMDELAY | ||
| Simulate WFS camera | WFSCAMSIM |
2.3. Calibration
| Name | Description | cacaovar | Notes |
|---|---|---|---|
| mlat- | Measure hardware latency | MLAT | |
| measlinresp- | Measure WFS linear response to DM commands | MEASURELINRESP | |
| compstrCM- | Compute simple control matrix | COMPSTRCM |
2.4. Loop Control
| Name | Description | cacaovar | Notes |
|---|---|---|---|
| wfs2cmodeval- | Compute modal coefficients from WFS signal | MVMGPU_WFS2CMODEVAL | |
| mfilt- | Modal filtering: compute modal control | MODALFILTERING | |
| mvalC2dm- | Compute DM correction from modal coeffs | MVMGPU_CMODEVAL2DM |