# Getting Started Lima2 is based on Message Passing Interface (MPI), a framework to develop parallel application on distributed memory systems. Lima2 is a so called multiple programs, multiple data (MPMD) application where the programs have different responsibilities: - control (1 process) - acquisition (n processes) - processing (n processes) MPI defines a [standardized API](https://www.mpi-forum.org/) that is implemented by multiple projects such OpenMPI, MPICH or MVAPICH. Running an application requires to install an MPI library on all the node of the clusters. The conda packages are build against the following distributions: - MPICH on Linux - MS-MPI on Windows Lima2 comes with a command-line interface that can be used to control a camera and learn how to use the API. MPI provides the `mpirun` command which arguments are the executables to run. To keep things simple, running one control process, two acquisition processes and four processing processes would look like this: ``` bash mpirun -n 1 control simulator : \ -n 2 acquisition : \ -n 4 processing ``` The location of the process in terms of computer, CPU core and affinity can be controlled with `mpirun` parameters. Very flexible. The `control` executable is designed to support multiple cameras, hence the first (positional) parameter is the camera name. ```bash $ control --help Allowed options: --help produce help message --debug stop the program at the beginning --subargs arg Arguments for camera Available cameras: - simulator ``` Get the camera specific options with: ```bash $ control simulator --help Camera init options: --dim_x arg (=1024) todo --dim_y arg (=1024) todo Camera acquisition options: --nb_frames arg (=1) todo --expo_time arg (=0) todo --latency_time arg (=0) todo --generator arg (=gauss) todo --bit_depth arg (=8) todo ```