diff --git a/algo/base/Options.cxx b/algo/base/Options.cxx index 800714fe793f98555a5ead24ba2e815aa0c2ed0a..5c6ca51b0c5558801caced1fe521d272c912a126 100644 --- a/algo/base/Options.cxx +++ b/algo/base/Options.cxx @@ -73,11 +73,11 @@ Options::Options(int argc, char** argv) ("log-file,L", po::value(&fLogFile)->value_name("<file>"), "write log messages to file") ("output-types,O", po::value(&fOutputTypes)->multitoken()->value_name("<types>"), - "comma seperated list of reconstruction output types (hit, digi, ...)") + "space seperated list of reconstruction output types (hit, digi, ...)") ("steps", po::value(&fRecoSteps)->multitoken()->default_value({Step::Unpack, Step::DigiTrigger, Step::LocalReco, Step::Tracking})->value_name("<steps>"), - "comma seperated list of reconstruction steps (upack, digitrigger, localreco, ...)") + "space seperated list of reconstruction steps (unpack, digitrigger, localreco, ...)") ("systems,s", po::value(&fDetectors)->multitoken()->default_value({Subsystem::STS, Subsystem::TOF, Subsystem::BMON, Subsystem::MUCH, Subsystem::RICH, Subsystem::TRD, Subsystem::TRD2D})->value_name("<detectors>"), - "comma seperated list of detectors to process (sts, mvd, ...)") + "space seperated list of detectors to process (sts, mvd, ...)") ("child-id,c", po::value(&fChildId)->default_value("00")->value_name("<id>"), "online process id on node") ("num-ts,n", po::value(&fNumTimeslices)->default_value(-1)->value_name("<num>"), "Stop after <num> timeslices (-1 = all)") diff --git a/docs/HowTos.md b/docs/HowTos.md index 2afff5c7507aad5bc451f6b9ea889a89d6c1c0ca..82ac71f8d5ee4895d08200d301cc7e206d56caab 100644 --- a/docs/HowTos.md +++ b/docs/HowTos.md @@ -2,4 +2,5 @@ - [Event displays HowTo](eventdisplay/HowTo.md) - [Histogram servers HowTo](histservs/HowTo.md) - [Online Container HowTo](online/container/HowTo.md) +- [Online Reconstruction HowTo](online/container/HowTo.md) - [Monitoring HowTo](online/monitoring/HowTo.md) diff --git a/docs/online/reconstruction/HowTo.md b/docs/online/reconstruction/HowTo.md new file mode 100644 index 0000000000000000000000000000000000000000..d55fb3fc7e3f5b9d125a14dc91ec7a732da5cff8 --- /dev/null +++ b/docs/online/reconstruction/HowTo.md @@ -0,0 +1,73 @@ +# Online Reconstruction + +The online reconstruction is a single executable called `cbmreco`. + +Compile it via `make cbmreco` (or just `make`). + +Then run it with: +``` +build/bin/cbmreco -p parameters/online -i <path/to/tsa> +``` +Where `-i` should point to a .tsa file and `-p` points to the folder of parameters. +Within CbmRoot these parameter files are located at `parameters/online` by default. +Example TSA files can be found on the `lustre` filesystem at GSI, please contact members of the mCBM or Online team to know the most recent locations (subject to changes over time). +Full run TSA files can be found on the `lustre` filesystem at GSI in subfolders of `/lustre/cbm/prod/beamtime/2022/0*/mcbm`, please contact members of the mCBM team to know the conditions of the various runs. + +This will run the full reconstruction and print some basic results in the log. + +## Selecting reconstruction steps + +The reconstruction can be filtered by steps and active detectors. + +Use `-s/--systems` to select specific detectors and `--steps` to limit the steps run in the reconstruction chain. E.g.: +``` +build/bin/cbmreco -p parameters/online -i <path/to/tsa> -s STS --steps Unpack LocalReco +``` +will only run unpacking + local reconstruction (hitfinding) for the STS. + +A full list of all available steps can be found in `algo/base/Definitions.h` in the enum `Step`. (Multiple values are space seperated.) + +## File storage + +File storage is controlled via two flags: +- `-o` / `--output`: Name of the output file +- `-O` / `--output-types`: Types of data stored in file + +E.g.: +``` +build/bin/cbmreco -p parameters/online -i <path/to/tsa> -O DigiEvent Hit -o test.out +``` +would store all digi events and reconstructed hits in a file `test.out`. + +A full list of all available output types can be found in `algo/base/Definitions.h` in the enum `RecoData`. + +## Monitoring + +See [Monitoring](../monitoring/HowTo.md). + +## Profiling + +Running with `-t` will print the runtime of all steps and kernels that run during the reconstruction that were recorded via `xpu::scoped_timer` of `xpu::push_timer` / `xpu::pop_timer`. + +## GPU compilation + +Enable GPU compilation for AMD via +``` +cmake -DXPU_ENABLE_HIP=ON build +``` +Then recompile. You should see a library called `libAlgo_Hip.so` in the build log. + +Use `-d <device>` to select a GPU device at runtime. E.g. use `hip0` to use the first AMD GPU on the machine. + +### Listing devices + +A list of all available devices can be printed with `xpuinfo`: +``` +build/bin/xpuinfo +``` + +### CUDA and SYCL + +CUDA and SYCL compilation can be enabled with the respective `XPU_ENABLE_CUDA` and `XPU_ENABLE_SYCL` cmake options. + +**Warning: CUDA and SYCL compilation isn't currently tested and not guarenteed to work.**