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.
Topic | Chat room | Documentation |
---|---|---|
How to use cacao ? | Community | Online documentation |
Configuring computer system | Hardware / OS setup | RTC setup |
Software development | Developers | coding standards and Online documentation |
Report bugs and issues on this page and discuss them on the Developers chat.
cacao runs on Linux/x86 systems.
branch | version | status | latest |
---|---|---|---|
master | |||
dev |
git clone --recursive https://github.com/cacao-org/cacao cacao
cd cacao
mkdir _build
cd _build
cmake ..
# If you use NVIDIA GPUs, install cuda and magma libraries, and use "cmake .. -DUSE_MAGMA=ON"
make
sudo make install
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
Create local bin directory and sym links to all cacao- scripts:
mkdir bin
cd bin
find /home/scexao/src/cacao/ -executable -type f -name "milk-*" -print0 | xargs -0 -I {} ln -s {} .
find /home/scexao/src/cacao/ -executable -type f -name "cacao-*" -print0 | xargs -0 -I {} ln -s {} .
Add milk and cacao executable scripts to PATH environment variable. Add this line to the .bashrc or .profile file (change source code location as needed):
export CACAO_ROOT=/home/myname/src/cacao
export PATH=$PATH:/home/myname/src/cacao/bin
export PATH=$PATH:/home/myname/src/cacao/src/CommandLineInterface/scripts
export PATH=$PATH:/home/myname/src/cacao/src/AOloopControl/scripts
OPTIONAL: Create tmpfs disk for high performance I/O:
echo "tmpfs /milk/shm tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstab
sudo mkdir -p /milk/shm
sudo mount /milk/shm
All functions are accessible from the command line interface (CLI). Enter the CLI and type "help" for instructions.
cacao
To set up a cacao AO loop, use the cacao-setup script. Consult help with :
cacao-setup -h
Both cacao and milk use a common shared memory data stream format. See ImageStreamIO module for details.
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 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