Skip to content

Latest commit

 

History

History
151 lines (85 loc) · 5.96 KB

README.md

File metadata and controls

151 lines (85 loc) · 5.96 KB

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.


Getting help, Documentation

Topic Chat room Documentation
How to use cacao ? Gitter Community Online documentation
Configuring computer system Gitter Hardware / OS setup RTC setup
Software development Gitter Developers coding standards and Online documentation

Report bugs and issues on this page and discuss them on the Developers chat.


Installing cacao

cacao runs on Linux/x86 systems.

Source code status

License: GPL v3 Codacy Badge

branch version status latest
master latesttag Build Status lastcommit
dev Build Status dev lastcommit

Install steps

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

Post-installation

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

Getting Started

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

Tools

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