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