|Hardware / OS setup|
Report bugs and issues on this page
Contributing to project : coding standards
NOTE: cacao uses git submodules. Use
git clone --recursive (see Downloading and Installing section)
cacao : Compute And Control for Adaptive Optics
cacao is a computation engine for adaptive optics control.
Compute Performance: Uses multi-core CPUs and GPGPUs for high computing throughput. Written in C, optimized for performance. Holds images in RAM, with image stream support (shared memory with low-latency IPC support). cacao uses milk.
User input: Executable launches a command line interface (CLI) from which functions are accessible. Type "help" in the CLI to get started.
Modular, easy to add functions, loaded at runtime as shared objects.
Downloading and installing cacao
git clone --recursive https://github.com/cacao-org/cacao cacao
cd cacao mkdir _build cd _build cmake ..
You may need to add /usr/local/lib to LD_LIBRARY_PATH environment variable:
echo "/usr/local/lib" > usrlocal.conf sudo mv usrlocal.conf /etc/ld.so.conf.d/ sudo ldconfig -v
Unless you have a separate install of milk on your system, a symbolic link to milk is required for milk scripts that are included in cacao:
sudo ln -s /usr/local/bin/cacao /usr/local/bin/milk
Add milk executable scripts to PATH environment variable. Add this line to the .bashrc file (change source code location as needed):
Shared memory data streams
Both cacao and milk use a common shared memory data stream format. See ImageStreamIO module for details.
Viewing real-time data streams
Additional software is required to view real-time data streams. Several options exist:
- shmimviewGTK, a lightweight efficient GTK-based viewer.
- milk2ds9 uses ds9 to view data streams (convenient for ds9 users)
- rtimv, a qt-based image viewer, higher performance than ds9 option
- shmimviewqt, another qt-based option (less polished than rtimv)
- xaosim's shmview image viewer, using python qt interface
Python interface to data streams
Python users can read/write milk/cacao's data streams using additional packages:
- pyImageStreamIO provides an interface to data streams.
- xaosim includes a python interface to data streams.. and much more
The following libraries are used:
- readline, for reading the command line input
- flex, for parsing the command line input
- bison, to interpret the command line input
- fftw, for performing Fourier Transforms
- gsl, for math functions and tools
- fitsio, for reading and writing FITS image files
- CUDA, CuBLAS, MAGMA for GPU acceleration (optional)
If you use NVIDIA GPUs, install cuda and magma libraries, and add "--enable-cuda and --enable-magma" options to the configure command.
All functions are accessible from the command line interface (CLI). Enter the CLI and type "help" for instructions.