LSEB is a DAQ (data acquisition system) software that aims to perform the event building of the LHCb physic experiment after its next major upgrade (2018-2019). This software is designed to scale up to hundreds of nodes and to use different transport layers (at the moment only TCP and Infiniband verbs are implemented).
Each node of the system receives data from a part of the detector, collecting just a fragment of each event. Each node can also build an event receiving fragments from the other nodes of the system.
This software is mainly composed by three components:
- Controller - The controller takes care of collecting fragments from a generator that simulate the acquisition from the detector.
- Readout Unit - Once that enough fragments have been collected, the Readout Unit sends them to a specific node.
- Builder Unit - The Builder Unit receives from the other nodes the fragments of a specific event, checking the correctness.
LSEB runs as a single process in each node and spawn two threads: one for the ReadUnit and one for the Builder Unit.
First of all you need to install the boost libraries (at least with system and program_options components). You need also the infiniband libraries (available installing the OFED Package) if you want to use infiniband as transport layer.
You also optionnaly need to install the hydra launcher fropm mpich (https://www.mpich.org/downloads/).
In order to install LSEB run:
git clone https://github.com/manzali/lseb.git
cd lseb
mkdir build
cd build
cmake -DTRANSPORT=<TCP | VERBS> ..
#or
cmake -DTRANSPORT=<TCP | VERBS> -DENABLE_HYDRA=ON -DWITH_HYDRA=<PATh_TO_HYDRA_PREFIX> ..
You can start from configuration.json in the root directory in order to create your own configuration file.
{"HOST":"hostname1", "PORT":"7000"},
{"HOST":"hostname2", "PORT":"7000"}
Once that the configuration file is ready you can LSEB typing:
./lseb -c configuration.json -i ID
You can start from configuration.json in the root directory in order to create your own configuration file. Select the net interface you want to use. Setup an hostfile
listing the hosts you want to run on.
Once that the configuration file is ready you can LSEB typing:
mpiexec --hostfile ./hosts -np 16 -ppn 1 ./lseb -c configuration.json
It says to use ./hosts
to get list of hosts to run on, -ppn 1
force usage of only 1 process per node and -np 16
launche 16 processes.
If you are running into slurm (http://slurm.schedmd.com/) or requivalent job scheduler you might use :
salloc -N 16 -n 16 --exclusive mpiexec ./lseb -c configuration.json
Coming soon.