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 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:

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.

$ 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:

$ 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