Draft: Add multithreading to CbmTaskUnpack
This MR adds simple multithreading to CbmTaskUnpack. It is meant as a starting point in this direction and to allow us to gain relevant experience.
A significant performance improvement is achieved by using std::sort
with the std::execution::par_unseq
parameter when time-sorting all digis in the end.
In addition, the components are processed in parallel, yielding another improvement. Here, the performance gains appear to be limited by the process of adding all digis to a common vector.
Further parallelization inside the components (i.e., on microslice level) is not yet attempted in this MR.
On the mFLES login node, the Unpack tasks runs at about 300 MB/s for our benchmark file.
bin/cbmreco_fairrun -i ~/tmp/1588_node8_1_0000.tsa -c ../reco/tasks/CbmRecoConfigExample.yaml
Merge request reports
Activity
assigned to @v.friese
Dear @f.uhlig, @v.friese, I might need some advice.
The CI builds currently fail on two systems, centos7-linux-x86_64-gcc8-fairsoft_apr21p2-fairroot_v18.6.7 and debian10-linux-x86_64-gcc8-fairsoft_apr21p2-fairroot_v18.6.7: The
#include <execution>
header is not found. However, the file is compiled with-std=gnu++17
and the standard library coming with GCC 8 should include this header, as far as I understand. On debian11-linux-x86_64-gcc10-fairsoft_apr21p2-fairroot_v18.6.7, the build seems to run fine.Do you have an idea?
added 95 commits
-
58dd5e0f...0f57474d - 92 commits from branch
computing:master
- 04c6f00f - Add simple OpenMP multithreading to CbmTaskUnpack
- 94c666e3 - Make OpenMP optional in reco/tasks
- eba74707 - Merge branch 'master' into openmp_cbmreco
Toggle commit list-
58dd5e0f...0f57474d - 92 commits from branch
mentioned in merge request !828 (merged)
Superseded by !828 (merged)
Can be closed now.
Edited by Florian Uhlig