Welcome to the COMPASS wiki.

The COMPASS platform comes with an user interface based on the Python language which rely on several layers of software. These stacks are described in the figures

The lower level is the GPU domain. This is where resides the computing power and the memory that needs to be addressed to perform the computations. To manipulate GPU arrays and use advanced and optimized numerical algorithms, COMPASS relies on 3 main pillars :
  • the CUDA toolkit from NVIDIA including optimized libraries : CUBLAS, CUFFT, CURAND
  • the CArMA (C++ Api for Massively parallel Applications)
  • SuTrA (Simulation Tool for Adaptive optics).

The intermediate layer is the binding domain. This is where the set of optimized tools are bound to interpreted language in order to build evolutive and modular higher level applications. This is achieved using Cython.

At the higher level, we find the python3 libraries accessible to the user through the interpreter. This includes the NAGA Python package, inherited from YoGA Yorick plugin, providing general utilities to the user such as random number generation, fast Fourier transform or various BLAS levels. Additionally, the SHESHA package, inherited from YoGA_AO Yorick plugin, provide whole environments in Python, including GUI, to simulate adaptive optics systems.

Follow the links to get more information on each components of the COMPASS project.

Install the platform
CArMA : the C++ API for a user-friendly GPU
SuTrA : the AO simulation tool
NAGA : the Python general library for GPU computations
SHESHA : the Python package to run AO simulations with GPU acceleration
YoGA : the Yorick plugin for GPU computations
YoGA_AO : the YoGA extension to manipulates SuTrA objects and run AO simulations
PRANA : the real-time control development platform
Websim : the astrophysical observations simulator
SWG : the science working group page
CWG : the computing working group page