Skip to content

feat: add decoding engine#1220

Open
baltzell wants to merge 25 commits intodevelopmentfrom
decoding-engine
Open

feat: add decoding engine#1220
baltzell wants to merge 25 commits intodevelopmentfrom
decoding-engine

Conversation

@baltzell
Copy link
Copy Markdown
Collaborator

@baltzell baltzell commented Apr 22, 2026

In the past year, the decoder was sped up enough to be usable as the (single-threaded) CLARA I/O service DecoderReader. With current reconstruction speeds, that scales linearly up to about 32 threads, where it becomes I/O-bound by (single-threaded) decoding.

This pull request implements the decoder as a (multi-threaded) CLARA engine DecoderEngine, based on a pool of CLASDecoder objects, in lieu of a thread-safe decoder. To minimize initialization overhead, the underlying ConstantManager objects are shared by the whole pool, similar to ReconstructionEngine.

Here's the rough performance for a 24-thread job on clara2502 with etc/services/rgd-clarode.yml. Note, the 12-ms-per-event for the DECO engine suggests some thread contention, since it's few-ms when run single-threaded.

READER          10000 events    total time =     0.52 s    average event time =    0.05 ms
DECO            10000 events    total time =   129.11 s    average event time =   12.91 ms
DCDN            10000 events    total time =   417.51 s    average event time =   41.75 ms
MAGFIELDS       10000 events    total time =     0.17 s    average event time =    0.02 ms
FTCAL           10000 events    total time =     0.24 s    average event time =    0.02 ms
FTHODO          10000 events    total time =     0.18 s    average event time =    0.02 ms
FTTRK           10000 events    total time =     1.25 s    average event time =    0.12 ms
FTEB            10000 events    total time =     0.19 s    average event time =    0.02 ms
RASTER          10000 events    total time =     0.26 s    average event time =    0.03 ms
DCCR            10000 events    total time =   102.01 s    average event time =   10.20 ms
MLTD            10000 events    total time =   171.65 s    average event time =   17.17 ms
DCHAI           10000 events    total time =   440.76 s    average event time =   44.08 ms
FTOFHB          10000 events    total time =    34.57 s    average event time =    3.46 ms
EC              10000 events    total time =    17.54 s    average event time =    1.75 ms
CVTFP           10000 events    total time =   938.05 s    average event time =   93.80 ms
CTOF            10000 events    total time =    18.39 s    average event time =    1.84 ms
CND             10000 events    total time =     5.45 s    average event time =    0.54 ms
BAND            10000 events    total time =     1.07 s    average event time =    0.11 ms
HTCC            10000 events    total time =     0.74 s    average event time =    0.07 ms
LTCC            10000 events    total time =     0.58 s    average event time =    0.06 ms
EBHB            10000 events    total time =    10.60 s    average event time =    1.06 ms
DCTB            10000 events    total time =  1439.13 s    average event time =  143.91 ms
FMT             10000 events    total time =    43.14 s    average event time =    4.31 ms
CVTSP           10000 events    total time =   346.16 s    average event time =   34.62 ms
FTOFTB          10000 events    total time =    25.53 s    average event time =    2.55 ms
EBTB            10000 events    total time =     9.04 s    average event time =    0.90 ms
RICH            10000 events    total time =    65.09 s    average event time =    6.51 ms
RTPC            10000 events    total time =     0.34 s    average event time =    0.03 ms
VTX             10000 events    total time =   187.63 s    average event time =   18.76 ms
CALIB           10000 events    total time =     7.27 s    average event time =    0.73 ms
WRITER          10000 events    total time =     2.84 s    average event time =    0.28 ms
TOTAL           10000 events    total time =  4417.00 s    average event time =  441.70 ms

@baltzell baltzell changed the title Decoding engine feat: add decoding engine Apr 23, 2026
@baltzell baltzell marked this pull request as ready for review April 23, 2026 19:01
@baltzell baltzell added the speed label Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant